@@ -25,14 +25,14 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">com
25
25
< div class ='fl pad1y space-right2 '>
26
26
< span class ="strong "> 100% </ span >
27
27
< span class ="quiet "> Statements</ span >
28
- < span class ='fraction '> 67/67 </ span >
28
+ < span class ='fraction '> 106/106 </ span >
29
29
</ div >
30
30
31
31
32
32
< div class ='fl pad1y space-right2 '>
33
33
< span class ="strong "> 100% </ span >
34
34
< span class ="quiet "> Branches</ span >
35
- < span class ='fraction '> 2/2 </ span >
35
+ < span class ='fraction '> 10/10 </ span >
36
36
</ div >
37
37
38
38
@@ -46,7 +46,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">com
46
46
< div class ='fl pad1y space-right2 '>
47
47
< span class ="strong "> 100% </ span >
48
48
< span class ="quiet "> Lines</ span >
49
- < span class ='fraction '> 67/67 </ span >
49
+ < span class ='fraction '> 106/106 </ span >
50
50
</ div >
51
51
52
52
@@ -130,73 +130,151 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">com
130
130
< a name ='L65 '> </ a > < a href ='#L65 '> 65</ a >
131
131
< a name ='L66 '> </ a > < a href ='#L66 '> 66</ a >
132
132
< a name ='L67 '> </ a > < a href ='#L67 '> 67</ a >
133
- < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
134
- < span class ="cline-any cline-yes "> 3x</ span >
135
- < span class ="cline-any cline-yes "> 3x</ span >
136
- < span class ="cline-any cline-yes "> 3x</ span >
137
- < span class ="cline-any cline-yes "> 3x</ span >
138
- < span class ="cline-any cline-yes "> 3x</ span >
139
- < span class ="cline-any cline-yes "> 3x</ span >
140
- < span class ="cline-any cline-yes "> 3x</ span >
141
- < span class ="cline-any cline-yes "> 3x</ span >
142
- < span class ="cline-any cline-yes "> 3x</ span >
143
- < span class ="cline-any cline-yes "> 3x</ span >
144
- < span class ="cline-any cline-yes "> 3x</ span >
145
- < span class ="cline-any cline-yes "> 3x</ span >
146
- < span class ="cline-any cline-yes "> 3x</ span >
147
- < span class ="cline-any cline-yes "> 3x</ span >
148
- < span class ="cline-any cline-yes "> 3x</ span >
149
- < span class ="cline-any cline-yes "> 3x</ span >
150
- < span class ="cline-any cline-yes "> 3x</ span >
151
- < span class ="cline-any cline-yes "> 3x</ span >
152
- < span class ="cline-any cline-yes "> 3x</ span >
153
- < span class ="cline-any cline-yes "> 3x</ span >
154
- < span class ="cline-any cline-yes "> 3x</ span >
155
- < span class ="cline-any cline-yes "> 3x</ span >
156
- < span class ="cline-any cline-yes "> 3x</ span >
157
- < span class ="cline-any cline-yes "> 3x</ span >
158
- < span class ="cline-any cline-yes "> 3x</ span >
159
- < span class ="cline-any cline-yes "> 3x</ span >
160
- < span class ="cline-any cline-yes "> 3x</ span >
161
- < span class ="cline-any cline-yes "> 3x</ span >
162
- < span class ="cline-any cline-yes "> 3x</ span >
163
- < span class ="cline-any cline-yes "> 3x</ span >
164
- < span class ="cline-any cline-yes "> 3x</ span >
165
- < span class ="cline-any cline-yes "> 3x</ span >
166
- < span class ="cline-any cline-yes "> 3x</ span >
167
- < span class ="cline-any cline-yes "> 3x</ span >
168
- < span class ="cline-any cline-yes "> 3x</ span >
169
- < span class ="cline-any cline-yes "> 3x</ span >
170
- < span class ="cline-any cline-yes "> 3x</ span >
171
- < span class ="cline-any cline-yes "> 3x</ span >
172
- < span class ="cline-any cline-yes "> 3x</ span >
173
- < span class ="cline-any cline-yes "> 3x</ span >
174
- < span class ="cline-any cline-yes "> 3x</ span >
175
- < span class ="cline-any cline-yes "> 3x</ span >
176
- < span class ="cline-any cline-yes "> 3x</ span >
177
- < span class ="cline-any cline-yes "> 3x</ span >
178
- < span class ="cline-any cline-yes "> 3x</ span >
179
- < span class ="cline-any cline-yes "> 3x</ span >
180
- < span class ="cline-any cline-yes "> 3x</ span >
181
- < span class ="cline-any cline-yes "> 6537x</ span >
182
- < span class ="cline-any cline-yes "> 6537x</ span >
183
- < span class ="cline-any cline-yes "> 6537x</ span >
184
- < span class ="cline-any cline-yes "> 6537x</ span >
185
- < span class ="cline-any cline-yes "> 6537x</ span >
186
- < span class ="cline-any cline-yes "> 6537x</ span >
187
- < span class ="cline-any cline-yes "> 6537x</ span >
188
- < span class ="cline-any cline-yes "> 6537x</ span >
189
- < span class ="cline-any cline-yes "> 6537x</ span >
190
- < span class ="cline-any cline-yes "> 6537x</ span >
191
- < span class ="cline-any cline-yes "> 6537x</ span >
192
- < span class ="cline-any cline-yes "> 6537x</ span >
193
- < span class ="cline-any cline-yes "> 6537x</ span >
194
- < span class ="cline-any cline-yes "> 6537x</ span >
195
- < span class ="cline-any cline-yes "> 3x</ span >
196
- < span class ="cline-any cline-yes "> 3x</ span >
197
- < span class ="cline-any cline-yes "> 3x</ span >
198
- < span class ="cline-any cline-yes "> 3x</ span >
199
- < span class ="cline-any cline-yes "> 3x</ span >
133
+ < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a >
134
+ < a name ='L69 '> </ a > < a href ='#L69 '> 69</ a >
135
+ < a name ='L70 '> </ a > < a href ='#L70 '> 70</ a >
136
+ < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a >
137
+ < a name ='L72 '> </ a > < a href ='#L72 '> 72</ a >
138
+ < a name ='L73 '> </ a > < a href ='#L73 '> 73</ a >
139
+ < a name ='L74 '> </ a > < a href ='#L74 '> 74</ a >
140
+ < a name ='L75 '> </ a > < a href ='#L75 '> 75</ a >
141
+ < a name ='L76 '> </ a > < a href ='#L76 '> 76</ a >
142
+ < a name ='L77 '> </ a > < a href ='#L77 '> 77</ a >
143
+ < a name ='L78 '> </ a > < a href ='#L78 '> 78</ a >
144
+ < a name ='L79 '> </ a > < a href ='#L79 '> 79</ a >
145
+ < a name ='L80 '> </ a > < a href ='#L80 '> 80</ a >
146
+ < a name ='L81 '> </ a > < a href ='#L81 '> 81</ a >
147
+ < a name ='L82 '> </ a > < a href ='#L82 '> 82</ a >
148
+ < a name ='L83 '> </ a > < a href ='#L83 '> 83</ a >
149
+ < a name ='L84 '> </ a > < a href ='#L84 '> 84</ a >
150
+ < a name ='L85 '> </ a > < a href ='#L85 '> 85</ a >
151
+ < a name ='L86 '> </ a > < a href ='#L86 '> 86</ a >
152
+ < a name ='L87 '> </ a > < a href ='#L87 '> 87</ a >
153
+ < a name ='L88 '> </ a > < a href ='#L88 '> 88</ a >
154
+ < a name ='L89 '> </ a > < a href ='#L89 '> 89</ a >
155
+ < a name ='L90 '> </ a > < a href ='#L90 '> 90</ a >
156
+ < a name ='L91 '> </ a > < a href ='#L91 '> 91</ a >
157
+ < a name ='L92 '> </ a > < a href ='#L92 '> 92</ a >
158
+ < a name ='L93 '> </ a > < a href ='#L93 '> 93</ a >
159
+ < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a >
160
+ < a name ='L95 '> </ a > < a href ='#L95 '> 95</ a >
161
+ < a name ='L96 '> </ a > < a href ='#L96 '> 96</ a >
162
+ < a name ='L97 '> </ a > < a href ='#L97 '> 97</ a >
163
+ < a name ='L98 '> </ a > < a href ='#L98 '> 98</ a >
164
+ < a name ='L99 '> </ a > < a href ='#L99 '> 99</ a >
165
+ < a name ='L100 '> </ a > < a href ='#L100 '> 100</ a >
166
+ < a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167
+ < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168
+ < a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169
+ < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170
+ < a name ='L105 '> </ a > < a href ='#L105 '> 105</ a >
171
+ < a name ='L106 '> </ a > < a href ='#L106 '> 106</ a >
172
+ < a name ='L107 '> </ a > < a href ='#L107 '> 107</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 4x</ span >
173
+ < span class ="cline-any cline-yes "> 4x</ span >
174
+ < span class ="cline-any cline-yes "> 4x</ span >
175
+ < span class ="cline-any cline-yes "> 4x</ span >
176
+ < span class ="cline-any cline-yes "> 4x</ span >
177
+ < span class ="cline-any cline-yes "> 4x</ span >
178
+ < span class ="cline-any cline-yes "> 4x</ span >
179
+ < span class ="cline-any cline-yes "> 4x</ span >
180
+ < span class ="cline-any cline-yes "> 4x</ span >
181
+ < span class ="cline-any cline-yes "> 4x</ span >
182
+ < span class ="cline-any cline-yes "> 4x</ span >
183
+ < span class ="cline-any cline-yes "> 4x</ span >
184
+ < span class ="cline-any cline-yes "> 4x</ span >
185
+ < span class ="cline-any cline-yes "> 4x</ span >
186
+ < span class ="cline-any cline-yes "> 4x</ span >
187
+ < span class ="cline-any cline-yes "> 4x</ span >
188
+ < span class ="cline-any cline-yes "> 4x</ span >
189
+ < span class ="cline-any cline-yes "> 4x</ span >
190
+ < span class ="cline-any cline-yes "> 4x</ span >
191
+ < span class ="cline-any cline-yes "> 4x</ span >
192
+ < span class ="cline-any cline-yes "> 4x</ span >
193
+ < span class ="cline-any cline-yes "> 4x</ span >
194
+ < span class ="cline-any cline-yes "> 4x</ span >
195
+ < span class ="cline-any cline-yes "> 4x</ span >
196
+ < span class ="cline-any cline-yes "> 4x</ span >
197
+ < span class ="cline-any cline-yes "> 4x</ span >
198
+ < span class ="cline-any cline-yes "> 4x</ span >
199
+ < span class ="cline-any cline-yes "> 4x</ span >
200
+ < span class ="cline-any cline-yes "> 4x</ span >
201
+ < span class ="cline-any cline-yes "> 4x</ span >
202
+ < span class ="cline-any cline-yes "> 4x</ span >
203
+ < span class ="cline-any cline-yes "> 4x</ span >
204
+ < span class ="cline-any cline-yes "> 4x</ span >
205
+ < span class ="cline-any cline-yes "> 4x</ span >
206
+ < span class ="cline-any cline-yes "> 4x</ span >
207
+ < span class ="cline-any cline-yes "> 4x</ span >
208
+ < span class ="cline-any cline-yes "> 4x</ span >
209
+ < span class ="cline-any cline-yes "> 4x</ span >
210
+ < span class ="cline-any cline-yes "> 4x</ span >
211
+ < span class ="cline-any cline-yes "> 4x</ span >
212
+ < span class ="cline-any cline-yes "> 4x</ span >
213
+ < span class ="cline-any cline-yes "> 4x</ span >
214
+ < span class ="cline-any cline-yes "> 4x</ span >
215
+ < span class ="cline-any cline-yes "> 4x</ span >
216
+ < span class ="cline-any cline-yes "> 4x</ span >
217
+ < span class ="cline-any cline-yes "> 4x</ span >
218
+ < span class ="cline-any cline-yes "> 4x</ span >
219
+ < span class ="cline-any cline-yes "> 4x</ span >
220
+ < span class ="cline-any cline-yes "> 4x</ span >
221
+ < span class ="cline-any cline-yes "> 4x</ span >
222
+ < span class ="cline-any cline-yes "> 4x</ span >
223
+ < span class ="cline-any cline-yes "> 4x</ span >
224
+ < span class ="cline-any cline-yes "> 4x</ span >
225
+ < span class ="cline-any cline-yes "> 4x</ span >
226
+ < span class ="cline-any cline-yes "> 4x</ span >
227
+ < span class ="cline-any cline-yes "> 4x</ span >
228
+ < span class ="cline-any cline-yes "> 4x</ span >
229
+ < span class ="cline-any cline-yes "> 19611x</ span >
230
+ < span class ="cline-any cline-yes "> 19611x</ span >
231
+ < span class ="cline-any cline-yes "> 19611x</ span >
232
+ < span class ="cline-any cline-yes "> 19611x</ span >
233
+ < span class ="cline-any cline-yes "> 19611x</ span >
234
+ < span class ="cline-any cline-yes "> 19611x</ span >
235
+ < span class ="cline-any cline-yes "> 19611x</ span >
236
+ < span class ="cline-any cline-yes "> 19611x</ span >
237
+ < span class ="cline-any cline-yes "> 19611x</ span >
238
+ < span class ="cline-any cline-yes "> 19611x</ span >
239
+ < span class ="cline-any cline-yes "> 19611x</ span >
240
+ < span class ="cline-any cline-yes "> 48x</ span >
241
+ < span class ="cline-any cline-yes "> 48x</ span >
242
+ < span class ="cline-any cline-yes "> 48x</ span >
243
+ < span class ="cline-any cline-yes "> 19611x</ span >
244
+ < span class ="cline-any cline-yes "> 6x</ span >
245
+ < span class ="cline-any cline-yes "> 6x</ span >
246
+ < span class ="cline-any cline-yes "> 6x</ span >
247
+ < span class ="cline-any cline-yes "> 6x</ span >
248
+ < span class ="cline-any cline-yes "> 19611x</ span >
249
+ < span class ="cline-any cline-yes "> 9x</ span >
250
+ < span class ="cline-any cline-yes "> 9x</ span >
251
+ < span class ="cline-any cline-yes "> 9x</ span >
252
+ < span class ="cline-any cline-yes "> 19611x</ span >
253
+ < span class ="cline-any cline-yes "> 51x</ span >
254
+ < span class ="cline-any cline-yes "> 51x</ span >
255
+ < span class ="cline-any cline-yes "> 51x</ span >
256
+ < span class ="cline-any cline-yes "> 51x</ span >
257
+ < span class ="cline-any cline-yes "> 19611x</ span >
258
+ < span class ="cline-any cline-yes "> 19611x</ span >
259
+ < span class ="cline-any cline-yes "> 9072x</ span >
260
+ < span class ="cline-any cline-yes "> 19611x</ span >
261
+ < span class ="cline-any cline-yes "> 10539x</ span >
262
+ < span class ="cline-any cline-yes "> 10539x</ span >
263
+ < span class ="cline-any cline-yes "> 10539x</ span >
264
+ < span class ="cline-any cline-yes "> 19611x</ span >
265
+ < span class ="cline-any cline-yes "> 19611x</ span >
266
+ < span class ="cline-any cline-yes "> 19611x</ span >
267
+ < span class ="cline-any cline-yes "> 19611x</ span >
268
+ < span class ="cline-any cline-yes "> 19611x</ span >
269
+ < span class ="cline-any cline-yes "> 19611x</ span >
270
+ < span class ="cline-any cline-yes "> 19611x</ span >
271
+ < span class ="cline-any cline-yes "> 19611x</ span >
272
+ < span class ="cline-any cline-yes "> 19611x</ span >
273
+ < span class ="cline-any cline-yes "> 4x</ span >
274
+ < span class ="cline-any cline-yes "> 4x</ span >
275
+ < span class ="cline-any cline-yes "> 4x</ span >
276
+ < span class ="cline-any cline-yes "> 4x</ span >
277
+ < span class ="cline-any cline-yes "> 4x</ span >
200
278
< span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> /**
201
279
* @license Apache-2.0
202
280
*
@@ -219,10 +297,19 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">com
219
297
220
298
// MODULES //
221
299
222
- var Complex128 = require( '@stdlib/complex/float64/ctor' );
223
- var real = require( '@stdlib/complex/float64/real' );
224
- var imag = require( '@stdlib/complex/float64/imag' );
225
- var div = require( './main.js' );
300
+ var abs = require( '@stdlib/math/base/special/abs' );
301
+ var max = require( '@stdlib/math/base/special/max' );
302
+ var FLOAT64_BIGGEST = require( '@stdlib/constants/float64/max' );
303
+ var FLOAT64_SMALLEST = require( '@stdlib/constants/float64/smallest-normal' );
304
+ var EPS = require( '@stdlib/constants/float64/eps' );
305
+ var robustInternal = require( './robust_internal.js' );
306
+
307
+
308
+ // VARIABLES //
309
+
310
+ var LARGE_THRESHOLD = FLOAT64_BIGGEST * 0.5;
311
+ var SMALL_THRESHOLD = FLOAT64_SMALLEST * ( 2.0 / EPS );
312
+ var RECIP_EPS_SQR = 2.0 / ( EPS * EPS );
226
313
227
314
228
315
// MAIN //
@@ -246,17 +333,47 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">com
246
333
* // returns <Float64Array>[ 5.0, 3.0 ]
247
334
*/
248
335
function assign( re1, im1, re2, im2, out, strideOut, offsetOut ) {
249
- var ans;
250
- var c1;
251
- var c2;
336
+ var res;
337
+ var ab;
338
+ var cd;
339
+ var s;
340
+
341
+ ab = max( abs(re1), abs(im1) );
342
+ cd = max( abs(re2), abs(im2) );
343
+ s = 1.0;
344
+
345
+ if ( ab >= LARGE_THRESHOLD ) {
346
+ re1 *= 0.5;
347
+ im1 *= 0.5;
348
+ s *= 2.0;
349
+ } else if ( ab <= SMALL_THRESHOLD ) {
350
+ re1 *= RECIP_EPS_SQR;
351
+ im1 *= RECIP_EPS_SQR;
352
+ s /= RECIP_EPS_SQR;
353
+ }
354
+ if ( cd >= LARGE_THRESHOLD ) {
355
+ re2 *= 0.5;
356
+ im2 *= 0.5;
357
+ s *= 0.5;
358
+ } else if ( cd <= SMALL_THRESHOLD ) {
359
+ re2 *= RECIP_EPS_SQR;
360
+ im2 *= RECIP_EPS_SQR;
361
+ s *= RECIP_EPS_SQR;
362
+ }
363
+
364
+ if ( abs( im2 ) <= abs( re2 ) ) {
365
+ res = robustInternal( re1, im1, re2, im2 );
366
+ } else {
367
+ res = robustInternal( im1, re1, im2, re2 );
368
+ res[ 1 ] *= -1.0;
369
+ }
252
370
253
- c1 = new Complex128( re1, im1 ) ;
254
- c2 = new Complex128( re2, im2 ) ;
371
+ res[ 0 ] *= s ;
372
+ res[ 1 ] *= s ;
255
373
256
- ans = div( c1, c2 );
374
+ out[ offsetOut ] = res[ 0 ];
375
+ out[ offsetOut+strideOut ] = res[ 1 ];
257
376
258
- out[ offsetOut ] = real( ans );
259
- out[ offsetOut+strideOut ] = imag( ans );
260
377
return out;
261
378
}
262
379
@@ -271,7 +388,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">com
271
388
< div class ='footer quiet pad2 space-top1 center small '>
272
389
Code coverage generated by
273
390
< a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
274
- at 2025-07-30T13:27:05.234Z
391
+ at 2025-08-02T13:03:56.047Z
275
392
</ div >
276
393
< script src ="../../../../../prettify.js "> </ script >
277
394
< script >
0 commit comments