@@ -120,22 +120,27 @@ function scaleGeneral( M, N, A, strideA1, strideA2, offsetA, mul ) {
120
120
* // A => <Float64Array>[ 2.0, 0.0, 0.0, 4.0, 6.0, 0.0, 8.0, 10.0, 12.0 ]
121
121
*/
122
122
function scaleUpper ( M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
123
+ var idx ;
123
124
var ia ;
124
125
var i0 ;
125
126
var i1 ;
126
127
127
128
ia = offsetA ;
128
129
if ( isrm ) {
129
130
for ( i1 = 0 ; i1 < M ; i1 ++ ) {
131
+ idx = ia + ( i1 * strideA2 ) ;
130
132
for ( i0 = i1 ; i0 < N ; i0 ++ ) {
131
- A [ ia + ( i0 * strideA2 ) ] *= mul ;
133
+ A [ idx ] *= mul ;
134
+ idx += strideA2 ;
132
135
}
133
136
ia += strideA1 ;
134
137
}
135
138
} else {
136
139
for ( i1 = 0 ; i1 < N ; i1 ++ ) {
137
- for ( i0 = 0 ; i0 <= min ( i1 , M - 1 ) ; i0 ++ ) {
138
- A [ ia + ( i0 * strideA1 ) ] *= mul ;
140
+ idx = ia ;
141
+ for ( i0 = 0 ; i0 <= min ( i1 , M - 1 ) ; i0 ++ ) {
142
+ A [ idx ] *= mul ;
143
+ idx += strideA1 ;
139
144
}
140
145
ia += strideA2 ;
141
146
}
@@ -173,22 +178,27 @@ function scaleUpper( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
173
178
* // A => <Float64Array>[ 2.0, 4.0, 6.0, 0.0, 8.0, 10.0, 0.0, 0.0, 12.0 ]
174
179
*/
175
180
function scaleLower ( M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
181
+ var idx ;
176
182
var ia ;
177
183
var i0 ;
178
184
var i1 ;
179
185
180
186
ia = offsetA ;
181
187
if ( isrm ) {
182
188
for ( i1 = 0 ; i1 < M ; i1 ++ ) {
183
- for ( i0 = 0 ; i0 <= min ( i1 , N - 1 ) ; i0 ++ ) {
184
- A [ ia + ( i0 * strideA2 ) ] *= mul ;
189
+ idx = ia ;
190
+ for ( i0 = 0 ; i0 <= min ( i1 , N - 1 ) ; i0 ++ ) {
191
+ A [ idx ] *= mul ;
192
+ idx += strideA2 ;
185
193
}
186
194
ia += strideA1 ;
187
195
}
188
196
} else {
189
197
for ( i1 = 0 ; i1 < N ; i1 ++ ) {
198
+ idx = ia + ( i1 * strideA1 ) ;
190
199
for ( i0 = i1 ; i0 < M ; i0 ++ ) {
191
- A [ ia + ( i0 * strideA1 ) ] *= mul ;
200
+ A [ idx ] *= mul ;
201
+ idx += strideA1 ;
192
202
}
193
203
ia += strideA2 ;
194
204
}
@@ -226,23 +236,28 @@ function scaleLower( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
226
236
* // A => <Float64Array>[ 2.0, 10.0, 0.0, 0.0, 4.0, 12.0, 18.0, 0.0, 6.0, 14.0, 20.0, 24.0, 8.0, 16.0, 22.0, 26.0 ]
227
237
*/
228
238
function scaleUpperHHessenberg ( M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
239
+ var idx ;
229
240
var ia ;
230
241
var i0 ;
231
242
var i1 ;
232
243
233
244
if ( isrm ) {
234
245
ia = offsetA ;
235
246
for ( i1 = 0 ; i1 < M ; i1 ++ ) {
247
+ idx = ia + ( max ( i1 - 1 , 0 ) * strideA2 ) ;
236
248
for ( i0 = max ( i1 - 1 , 0 ) ; i0 < N ; i0 ++ ) {
237
- A [ ia + ( i0 * strideA2 ) ] *= mul ;
249
+ A [ idx ] *= mul ;
250
+ idx += strideA2 ;
238
251
}
239
252
ia += strideA1 ;
240
253
}
241
254
} else {
242
255
ia = offsetA ;
243
256
for ( i0 = 0 ; i0 < N ; i0 ++ ) {
257
+ idx = ia ;
244
258
for ( i1 = 0 ; i1 <= min ( i0 + 1 , M - 1 ) ; i1 ++ ) {
245
- A [ ia + ( i1 * strideA1 ) ] *= mul ;
259
+ A [ idx ] *= mul ;
260
+ idx += strideA1 ;
246
261
}
247
262
ia += strideA2 ;
248
263
}
@@ -281,6 +296,7 @@ function scaleUpperHHessenberg( M, N, A, strideA1, strideA2, offsetA, isrm, mul
281
296
* // A => <Float64Array>[ 11.0, 61.0, 101.0, 22.0, 72.0, 112.0, 33.0, 83.0, 123.0, 44.0, 94.0, 0.0, 55.0, 0.0, 0.0 ]
282
297
*/
283
298
function scaleSymmetricBandedLower ( KL , M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
299
+ var idx ;
284
300
var ia ;
285
301
var i0 ;
286
302
var i1 ;
@@ -293,15 +309,19 @@ function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, is
293
309
294
310
if ( isrm ) {
295
311
for ( i1 = 0 ; i1 < M ; i1 ++ ) {
312
+ idx = ia ;
296
313
for ( i0 = 0 ; i0 < ( N - i1 ) ; i0 ++ ) {
297
- A [ ia + ( i0 * strideA2 ) ] *= mul ;
314
+ A [ idx ] *= mul ;
315
+ idx += strideA2 ;
298
316
}
299
317
ia += strideA1 ;
300
318
}
301
319
} else {
302
320
for ( i1 = 0 ; i1 < N ; i1 ++ ) {
321
+ idx = ia ;
303
322
for ( i0 = 0 ; i0 < min ( k3 , k4 - i1 ) ; i0 ++ ) {
304
- A [ ia + ( i0 * strideA1 ) ] *= mul ;
323
+ A [ idx ] *= mul ;
324
+ idx += strideA1 ;
305
325
}
306
326
ia += strideA2 ;
307
327
}
@@ -340,6 +360,7 @@ function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, is
340
360
* // A => <Float64Array>[ 0.0, 0.0, 11.0, 0.0, 61.0, 22.0, 101.0, 72.0, 33.0, 112.0, 83.0, 44.0, 123.0, 94.0, 55.0 ]
341
361
*/
342
362
function scaleSymmetricBandedUpper ( KU , M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
363
+ var idx ;
343
364
var ia ;
344
365
var i0 ;
345
366
var i1 ;
@@ -348,15 +369,19 @@ function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, is
348
369
349
370
if ( isrm ) {
350
371
for ( i1 = 0 ; i1 <= KU ; i1 ++ ) {
372
+ idx = ia + ( max ( KU - i1 , 0 ) * strideA2 ) ;
351
373
for ( i0 = max ( KU - i1 , 0 ) ; i0 < N ; i0 ++ ) {
352
- A [ ia + ( i0 * strideA2 ) ] *= mul ;
374
+ A [ idx ] *= mul ;
375
+ idx += strideA2 ;
353
376
}
354
377
ia += strideA1 ;
355
378
}
356
379
} else {
357
380
for ( i1 = 0 ; i1 < N ; i1 ++ ) {
381
+ idx = ia + ( max ( KU - i1 , 0 ) * strideA1 ) ;
358
382
for ( i0 = max ( KU - i1 , 0 ) ; i0 <= KU ; i0 ++ ) {
359
- A [ ia + ( i0 * strideA1 ) ] *= mul ;
383
+ A [ idx ] *= mul ;
384
+ idx += strideA1 ;
360
385
}
361
386
ia += strideA2 ;
362
387
}
@@ -395,6 +420,7 @@ function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, is
395
420
* // A => <Float64Array>[ 0.0, 0.0, 0.0, 11.0, 21.0, 31.0, 0.0, 0.0, 12.0, 22.0, 32.0, 42.0, 0.0, 0.0, 23.0, 33.0, 43.0, 53.0, 0.0, 0.0, 34.0, 44.0, 54.0, 0.0, 0.0, 0.0, 45.0, 55.0, 0.0, 0.0 ]
396
421
*/
397
422
function scaleBanded ( KL , KU , M , N , A , strideA1 , strideA2 , offsetA , mul ) {
423
+ var idx ;
398
424
var ia ;
399
425
var i0 ;
400
426
var i1 ;
@@ -410,8 +436,10 @@ function scaleBanded( KL, KU, M, N, A, strideA1, strideA2, offsetA, mul ) {
410
436
ia = offsetA ;
411
437
412
438
for ( i1 = 0 ; i1 < N ; i1 ++ ) {
439
+ idx = ia + ( max ( k1 - i1 , k2 ) * strideA1 ) ;
413
440
for ( i0 = max ( k1 - i1 , k2 ) ; i0 <= min ( k3 , k4 - i1 ) ; i0 ++ ) {
414
- A [ ia + ( i0 * strideA1 ) ] *= mul ;
441
+ A [ idx ] *= mul ;
442
+ idx += strideA1 ;
415
443
}
416
444
ia += strideA2 ;
417
445
}
0 commit comments