Skip to content

Commit fbefa23

Browse files
committed
fix: update files
1 parent 69e5000 commit fbefa23

File tree

5 files changed

+191
-73
lines changed

5 files changed

+191
-73
lines changed

lib/node_modules/@stdlib/blas/base/srotmg/docs/types/index.d.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ interface Routine {
3232
* @returns - output array containing the rotation parameters
3333
*
3434
* @example
35-
* var Float32Array = require( '@stdlib/array/float32' );
35+
* var out = srotmg( 3.0, 4.0, 1.5, 2.5 );
36+
* // returns <Float32Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
3637
*
37-
* var out = srotmg( 1.0, 1.0, 1.0, 0.0 );
38-
* // returns <Float32Array>[ 0.0, 1.0, 0.0, 1.0, 0.0 ]
38+
* @example
39+
* var out = srotmg( 4.0, 6.0, 2.0, 1.0 );
40+
* // returns <Float32Array>[ 0.0, 0.0, -0.5, 0.75, 0.0 ]
3941
*/
4042
( d1: number, d2: number, x1: number, y1: number ): Float32Array;
4143

@@ -54,8 +56,10 @@ interface Routine {
5456
* @example
5557
* var Float32Array = require( '@stdlib/array/float32' );
5658
*
57-
* var out = srotmg( 1.0, 1.0, 1.0, 0.0 );
58-
* // returns <Float32Array>[ 0.0, 1.0, 0.0, 1.0, 0.0 ]
59+
* var out = new Float32Array( 5 );
60+
*
61+
* var y = srotmg.assign( 3.0, 4.0, 1.5, 2.5, new Float32Array( 5 ), 1, 0 );
62+
* // returns <Float32Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
5963
*
6064
* var bool = (y === out);
6165
* // returns true
@@ -75,11 +79,17 @@ interface Routine {
7579
* @param offset - starting index
7680
* @returns - output array containing the rotation parameters
7781
*
82+
@example
83+
* var out = srotmg( 3.0, 4.0, 1.5, 2.5 );
84+
* // returns <Float32Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
85+
*
7886
* @example
7987
* var Float32Array = require( '@stdlib/array/float32' );
8088
*
81-
* var out = srotmg( 1.0, 1.0, 1.0, 0.0 );
82-
* // returns <Float32Array>[ 0.0, 1.0, 0.0, 1.0, 0.0 ]
89+
* var out = new Float32Array( 5 );
90+
*
91+
* var y = srotmg.assign( 3.0, 4.0, 1.5, 2.5, new Float32Array( 5 ), 1, 0 );
92+
* // returns <Float32Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
8393
*
8494
* var bool = (y === out);
8595
* // returns true

lib/node_modules/@stdlib/blas/base/srotmg/docs/types/test.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ import srotmg = require( './index' );
7777
srotmg.assign( 0.0, 2.0, 3.0, 4.0, out, 1, 0 ); // $ExpectType Float32Array
7878
}
7979

80-
// The compiler throws an error if the `assign` method is provided a first or second argument which is not a number...
80+
// The compiler throws an error if the `assign` method is provided a first, second, third or fourth argument which is not a number...
8181
{
8282
const out = new Float32Array( 5 );
8383

@@ -105,16 +105,16 @@ import srotmg = require( './index' );
105105
srotmg.assign( 0.0, 2.0 ,[], 4.0, out, 1, 0 ); // $ExpectError
106106
srotmg.assign( 0.0, 2.0 ,{}, 4.0, out, 1, 0 ); // $ExpectError
107107

108-
srotmg.assign( 0.0, true, 3.0, 4.0, out, 1, 0 ); // $ExpectError
109-
srotmg.assign( 0.0, false, 3.0, 4.0, out, 1, 0 ); // $ExpectError
110-
srotmg.assign( 0.0, null, 3.0, 4.0, out, 1, 0 ); // $ExpectError
111-
srotmg.assign( 0.0, undefined, 3.0, 4.0, out, 1, 0 ); // $ExpectError
112-
srotmg.assign( 0.0, '5', 3.0, 4.0, out, 1, 0 ); // $ExpectError
113-
srotmg.assign( 0.0, [], 3.0, 4.0, out, 1, 0 ); // $ExpectError
114-
srotmg.assign( 0.0, {}, 3.0, 4.0, out, 1, 0 ); // $ExpectError
108+
srotmg.assign( 0.0, 2.0, 3.0, true, out, 1, 0 ); // $ExpectError
109+
srotmg.assign( 0.0, 2.0, 3.0, false, out, 1, 0 ); // $ExpectError
110+
srotmg.assign( 0.0, 2.0, 3.0, null, out, 1, 0 ); // $ExpectError
111+
srotmg.assign( 0.0, 2.0, 3.0, undefined, out, 1, 0 ); // $ExpectError
112+
srotmg.assign( 0.0, 2.0, 3.0, '5', out, 1, 0 ); // $ExpectError
113+
srotmg.assign( 0.0, 2.0, 3.0, [], out, 1, 0 ); // $ExpectError
114+
srotmg.assign( 0.0, 2.0, 3.0, {}, out, 1, 0 ); // $ExpectError
115115
}
116116

117-
// The compiler throws an error if the `assign` method is provided a fourth argument which is not a number...
117+
// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number...
118118
{
119119
const out = new Float32Array( 5 );
120120

@@ -126,7 +126,7 @@ import srotmg = require( './index' );
126126
srotmg.assign( 1.0, 2.0, 3.0, 4.0, out, {}, 0 ); // $ExpectError
127127
}
128128

129-
// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number...
129+
// The compiler throws an error if the `assign` method is provided a seventh argument which is not a number...
130130
{
131131
const out = new Float32Array( 5 );
132132

@@ -145,11 +145,14 @@ import srotmg = require( './index' );
145145
srotmg.assign(); // $ExpectError
146146
srotmg.assign( 1.0 ); // $ExpectError
147147
srotmg.assign( 1.0, 2.0 ); // $ExpectError
148-
srotmg.assign( 1.0, 2.0, 3.0 ); // $ExpectError
149148
srotmg.assign( 1.0, 2.0, out ); // $ExpectError
150-
srotmg.assign( 1.0, 2.0, 3.0, out ); // $ExpectError
151149
srotmg.assign( 1.0, 2.0, out, 1 ); // $ExpectError
152-
srotmg.assign( 1.0, 2.0, 3.0, out, 1 ); // $ExpectError
153150
srotmg.assign( 1.0, 2.0, out, 1, 0, 1 ); // $ExpectError
151+
srotmg.assign( 1.0, 2.0, 3.0 ); // $ExpectError
152+
srotmg.assign( 1.0, 2.0, 3.0, out ); // $ExpectError
153+
srotmg.assign( 1.0, 2.0, 3.0, out, 1 ); // $ExpectError
154154
srotmg.assign( 1.0, 2.0, 3.0, out, 1, 0, 1 ); // $ExpectError
155+
srotmg.assign( 1.0, 2.0, 3.0, 4.0, out ); // $ExpectError
156+
srotmg.assign( 1.0, 2.0, 3.0, 4.0, out, 1 ); // $ExpectError
157+
srotmg.assign( 1.0, 2.0, 3.0, 4.0, out, 1, 0, 1 ); // $ExpectError
155158
}

lib/node_modules/@stdlib/blas/base/srotmg/lib/assign.js

Lines changed: 149 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -20,78 +20,180 @@
2020

2121
// MODULES //
2222

23-
var absf = require( '@stdlib/math/base/special/absf' );
24-
var sqrtf = require( '@stdlib/math/base/special/sqrtf' );
25-
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2623
var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
27-
var abs2f = require( '@stdlib/math/base/special/abs2f' );
24+
var absf = require( '@stdlib/math/base/special/absf' );
25+
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
26+
27+
28+
// VARIABLES //
29+
30+
var GAM = 4096.0;
31+
var GAM_SQ = 16777216.0;
32+
var RGAM_SQ = 5.9604645e-8;
33+
2834

2935
// MAIN //
3036

3137
/**
32-
* Constructs the parameters for a modified Givens plane rotation.
38+
* Construct the parameters for a modified Givens plane rotation.
3339
*
3440
* @param {number} d1 - scaling factor for the first vector component
3541
* @param {number} d2 - scaling factor for the second vector component
3642
* @param {number} x1 - first component of the first vector
3743
* @param {number} y1 - first component of the second vector
38-
* @param {Float32Array} out - output array
39-
* @returns {Float32Array} - output array containing the rotation parameters
44+
* @param {Float64Array} param - output array
45+
* @param {integer} stride - index increment
46+
* @param {NonNegativeInteger} offset - starting index
47+
* @returns {Float64Array} - output array
4048
*
4149
* @example
4250
* var Float32Array = require( '@stdlib/array/float32' );
4351
*
44-
* var out = srotmg( -3.0, -4.0, 1.5, 2.5, new Float32Array( 5 ), 1, 0 );
45-
* // returns <Float32Array>[ 0.6, 0.8, 2.0, 1.5, 2.5 ]
52+
* var out = srotmg( 3.0, 4.0, 1.5, 2.5, new Float64Array( 5 ), 1, 0 );
53+
* // returns <Float64Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
4654
*/
47-
function srotmg( d1, d2, x1, y1, out, stride, offset ) {
48-
var param;
55+
function srotmg( d1, d2, x1, y1, param, stride, offset ) {
56+
var flag;
57+
var temp;
4958
var ad1;
5059
var ad2;
51-
var c;
52-
var s;
53-
var r;
54-
if ( isnan(d1) || isnan(d2) || isnan(x1) || isnan(y1) ) {
55-
c = NaN;
56-
s = NaN;
57-
param = NaN;
58-
x1 = NaN;
59-
y1 = NaN;
60+
var h11;
61+
var h12;
62+
var h21;
63+
var h22;
64+
var p1;
65+
var p2;
66+
var q1;
67+
var q2;
68+
var u;
69+
70+
if ( isnanf( d1 ) || isnanf( d2 ) || isnanf( x1 ) || isnanf( y1 ) ) {
71+
param[ offset ] = NaN;
72+
param[ offset + stride ] = NaN;
73+
param[ offset + ( 2 * stride ) ] = NaN;
74+
param[ offset + ( 3 * stride ) ] = NaN;
75+
param[ offset + ( 4 * stride ) ] = NaN;
76+
return param;
77+
}
78+
79+
if ( d1 < 0.0 ) {
80+
flag = -1.0;
81+
h11 = 0.0;
82+
h12 = 0.0;
83+
h21 = 0.0;
84+
h22 = 0.0;
85+
d1 = 0.0;
86+
d2 = 0.0;
87+
x1 = 0.0;
6088
} else {
61-
if ( d1 == 0.0 ) {
62-
c = 0.0;
63-
s = 1.0;
89+
p2 = d2 * y1;
90+
if ( p2 === 0.0 ) {
91+
flag = -2.0;
92+
param[ offset ] = flag;
93+
return param;
94+
}
95+
p1 = float64ToFloat32( d1 * x1 );
96+
q2 = float64ToFloat32( p2 * y1 );
97+
q1 = float64ToFloat32( p1 * x1 );
98+
ad1 = absf( q1 );
99+
ad2 = absf( q2 );
100+
101+
if ( ad1 > ad2 ) {
102+
h21 = float64ToFloat32( -y1 / x1 );
103+
h12 = float64ToFloat32( p2 / p1 );
104+
u = float64ToFloat32( 1 - float64ToFloat32( h12 * h21 ) );
105+
if ( u > 0.0 ) {
106+
flag = 0.0;
107+
d1 = float64ToFloat32( d1 / u );
108+
d2 = float64ToFloat32( d2 / u );
109+
x1 = float64ToFloat32( x1 * u );
110+
}
111+
} else if ( q2 < 0.0 ) {
112+
flag = -1.0;
113+
h11 = 0.0;
114+
h12 = 0.0;
115+
h21 = 0.0;
116+
h22 = 0.0;
117+
d1 = 0.0;
118+
d2 = 0.0;
64119
x1 = 0.0;
65-
y1 = 0.0;
66-
param = 0.0;
67120
} else {
68-
ad1 = absf(d1);
69-
ad2 = absf(d2);
70-
if ( ad1 > ad2 ) {
71-
r = float64ToFloat32(d1 * sqrtf(float64ToFloat32(1 + abs2f(float64ToFloat32(d2 / d1)))));
72-
c = float64ToFloat32(d1 / r);
73-
s = float64ToFloat32(d2 / r);
74-
param = 1.0;
75-
} else {
76-
r = float64ToFloat32(d2 * sqrtf(float64ToFloat32(1 + abs2f(float64ToFloat32(d1 / d2)))));
77-
c = float64ToFloat32(d1 / r);
78-
s = float64ToFloat32(d2 / r);
79-
param = 2.0;
121+
flag = 1.0;
122+
h11 = float64ToFloat32( p1 / p2 );
123+
h22 = float64ToFloat32( x1 / y1 );
124+
u = float64ToFloat32( 1 + float64ToFloat32( h11 * h22 ) );
125+
temp = float64ToFloat32( d2 / u );
126+
d2 = float64ToFloat32( d1 / u );
127+
d1 = temp;
128+
x1 = float64ToFloat32( y1 * u );
129+
}
130+
if ( d1 !== 0.0 ) {
131+
while ( ( d1 < RGAM_SQ ) || ( d1 > GAM_SQ ) ) {
132+
if ( flag === 0.0 ) {
133+
h11 = 1.0;
134+
h22 = 1.0;
135+
flag = -1.0;
136+
} else {
137+
h21 = -1.0;
138+
h12 = 1.0;
139+
flag = -1.0;
140+
}
141+
if ( d1 < RGAM_SQ ) {
142+
d1 = float64ToFloat32( d1 * GAM * GAM );
143+
x1 = float64ToFloat32( x1 / GAM );
144+
h11 = float64ToFloat32( h11 / GAM );
145+
h12 = float64ToFloat32( h12 / GAM );
146+
} else {
147+
d1 = float64ToFloat32( d1 / GAM * GAM );
148+
x1 = float64ToFloat32( x1 * GAM );
149+
h11 = float64ToFloat32( h11 * GAM );
150+
h12 = float64ToFloat32( h12 * GAM );
151+
}
80152
}
81153
}
82-
if (d2 == 0.0 ) {
83-
c = 1.0;
84-
s = 0.0;
85-
param = 1.0;
154+
155+
if ( d2 !== 0.0 ) {
156+
while ( ( absf( d2 ) < RGAM_SQ ) || ( absf( d2 ) > GAM_SQ ) ) {
157+
if ( flag === 0.0 ) {
158+
h11 = 1.0;
159+
h22 = 1.0;
160+
flag = -1.0;
161+
} else {
162+
h21 = -1.0;
163+
h12 = 1.0;
164+
flag = -1.0;
165+
}
166+
if ( absf( d2 ) < RGAM_SQ ) {
167+
d2 = float64ToFloat32( d2 * GAM * GAM );
168+
h21 = float64ToFloat32( h21 / GAM );
169+
h22 = float64ToFloat32( h22 / GAM );
170+
} else {
171+
d2 = float64ToFloat32( d2 / GAM * GAM );
172+
h21 = float64ToFloat32( h21 * GAM );
173+
h22 = float64ToFloat32( h22 * GAM );
174+
}
175+
}
86176
}
87177
}
88-
out[ offset ] = c;
89-
out[ offset + stride ] = s;
90-
out[ offset + ( 2 * stride ) ] = param;
91-
out[ offset + ( 3 * stride ) ] = x1;
92-
out[ offset + ( 4 * stride ) ] = y1;
93178

94-
return out;
179+
param[ offset ] = flag;
180+
181+
if ( flag < 0.0 ) {
182+
param[ offset + stride ] = h11;
183+
param[ offset + ( 2 * stride ) ] = h21;
184+
param[ offset + ( 3 * stride ) ] = h12;
185+
param[ offset + ( 4 * stride ) ] = h22;
186+
} else if ( flag === 0.0 ) {
187+
param[ offset + ( 2 * stride ) ] = h21;
188+
param[ offset + ( 3 * stride ) ] = h12;
189+
} else {
190+
param[ offset + stride ] = h11;
191+
param[ offset + ( 4 * stride ) ] = h22;
192+
}
193+
194+
param[ offset ] = flag;
195+
196+
return param;
95197
}
96198

97199

lib/node_modules/@stdlib/blas/base/srotmg/lib/index.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,20 @@
2626
* @example
2727
* var srotmg = require( '@stdlib/blas/base/srotmg' );
2828
*
29-
* var out = srotmg( 3.0, -4.0, 1.5, 2.5 );
30-
* // returns <Float32Array>[ 0.6, 0.8, 2.0, 1.5, 2.5 ]
29+
* var out = srotmg( 3.0, 4.0, 1.5, 2.5 );
30+
* // returns <Float32Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
31+
*
32+
* var out = srotmg( 4.0, 6.0, 2.0, 1.0 );
33+
* // returns <Float32Array>[ 0.0, 0.0, -0.5, 0.75, 0.0 ]
3134
*
3235
* @example
3336
* var Float32Array = require( '@stdlib/array/float32' );
3437
* var srotmg = require( '@stdlib/blas/base/srotmg' );
3538
*
3639
* var out = new Float32Array( 5 );
3740
*
38-
* var y = srotmg.assign( 3.0, -4.0, 1.5, 2.5, new Float32Array( 5 ), 1, 0 );
39-
* // returns <Float32Array>[ 0.6, 0.8, 2.0, 1.5, 2.5 ]
41+
* var y = srotmg.assign( 3.0, 4.0, 1.5, 2.5, new Float32Array( 5 ), 1, 0 );
42+
* // returns <Float32Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
4043
*
4144
* var bool = ( y === out );
4245
* // returns true

lib/node_modules/@stdlib/blas/base/srotmg/lib/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ var fcn = require( './assign.js' );
3636
* @returns {Float32Array} output array containing the rotation parameters
3737
*
3838
* @example
39-
* var out = srotmg( -3.0, -4.0, 1.5, 2.5 );
40-
* // returns <Float32Array>[ 0.6, 0.8, 2.0, 1.5, 2.5 ]
39+
* var out = srotmg( 3.0, 4.0, 1.5, 2.5 );
40+
* // returns <Float32Array>[ 1.0, 0.45, 0.0, 0.0, 0.6 ]
4141
*/
4242
function srotmg( d1, d2, x1, y1 ) {
4343
var out = new Float32Array( 5 );

0 commit comments

Comments
 (0)