@@ -120,22 +120,27 @@ function scaleGeneral( M, N, A, strideA1, strideA2, offsetA, mul ) {
120120* // A => <Float64Array>[ 2.0, 0.0, 0.0, 4.0, 6.0, 0.0, 8.0, 10.0, 12.0 ]
121121*/
122122function scaleUpper ( M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
123+ var idx ;
123124 var ia ;
124125 var i0 ;
125126 var i1 ;
126127
127128 ia = offsetA ;
128129 if ( isrm ) {
129130 for ( i1 = 0 ; i1 < M ; i1 ++ ) {
131+ idx = ia + ( i1 * strideA2 ) ;
130132 for ( i0 = i1 ; i0 < N ; i0 ++ ) {
131- A [ ia + ( i0 * strideA2 ) ] *= mul ;
133+ A [ idx ] *= mul ;
134+ idx += strideA2 ;
132135 }
133136 ia += strideA1 ;
134137 }
135138 } else {
136139 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 ;
139144 }
140145 ia += strideA2 ;
141146 }
@@ -173,22 +178,27 @@ function scaleUpper( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
173178* // A => <Float64Array>[ 2.0, 4.0, 6.0, 0.0, 8.0, 10.0, 0.0, 0.0, 12.0 ]
174179*/
175180function scaleLower ( M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
181+ var idx ;
176182 var ia ;
177183 var i0 ;
178184 var i1 ;
179185
180186 ia = offsetA ;
181187 if ( isrm ) {
182188 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 ;
185193 }
186194 ia += strideA1 ;
187195 }
188196 } else {
189197 for ( i1 = 0 ; i1 < N ; i1 ++ ) {
198+ idx = ia + ( i1 * strideA1 ) ;
190199 for ( i0 = i1 ; i0 < M ; i0 ++ ) {
191- A [ ia + ( i0 * strideA1 ) ] *= mul ;
200+ A [ idx ] *= mul ;
201+ idx += strideA1 ;
192202 }
193203 ia += strideA2 ;
194204 }
@@ -226,23 +236,28 @@ function scaleLower( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
226236* // 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 ]
227237*/
228238function scaleUpperHHessenberg ( M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
239+ var idx ;
229240 var ia ;
230241 var i0 ;
231242 var i1 ;
232243
233244 if ( isrm ) {
234245 ia = offsetA ;
235246 for ( i1 = 0 ; i1 < M ; i1 ++ ) {
247+ idx = ia + ( max ( i1 - 1 , 0 ) * strideA2 ) ;
236248 for ( i0 = max ( i1 - 1 , 0 ) ; i0 < N ; i0 ++ ) {
237- A [ ia + ( i0 * strideA2 ) ] *= mul ;
249+ A [ idx ] *= mul ;
250+ idx += strideA2 ;
238251 }
239252 ia += strideA1 ;
240253 }
241254 } else {
242255 ia = offsetA ;
243256 for ( i0 = 0 ; i0 < N ; i0 ++ ) {
257+ idx = ia ;
244258 for ( i1 = 0 ; i1 <= min ( i0 + 1 , M - 1 ) ; i1 ++ ) {
245- A [ ia + ( i1 * strideA1 ) ] *= mul ;
259+ A [ idx ] *= mul ;
260+ idx += strideA1 ;
246261 }
247262 ia += strideA2 ;
248263 }
@@ -281,6 +296,7 @@ function scaleUpperHHessenberg( M, N, A, strideA1, strideA2, offsetA, isrm, mul
281296* // 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 ]
282297*/
283298function scaleSymmetricBandedLower ( KL , M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
299+ var idx ;
284300 var ia ;
285301 var i0 ;
286302 var i1 ;
@@ -293,15 +309,19 @@ function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, is
293309
294310 if ( isrm ) {
295311 for ( i1 = 0 ; i1 < M ; i1 ++ ) {
312+ idx = ia ;
296313 for ( i0 = 0 ; i0 < ( N - i1 ) ; i0 ++ ) {
297- A [ ia + ( i0 * strideA2 ) ] *= mul ;
314+ A [ idx ] *= mul ;
315+ idx += strideA2 ;
298316 }
299317 ia += strideA1 ;
300318 }
301319 } else {
302320 for ( i1 = 0 ; i1 < N ; i1 ++ ) {
321+ idx = ia ;
303322 for ( i0 = 0 ; i0 < min ( k3 , k4 - i1 ) ; i0 ++ ) {
304- A [ ia + ( i0 * strideA1 ) ] *= mul ;
323+ A [ idx ] *= mul ;
324+ idx += strideA1 ;
305325 }
306326 ia += strideA2 ;
307327 }
@@ -340,6 +360,7 @@ function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, is
340360* // 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 ]
341361*/
342362function scaleSymmetricBandedUpper ( KU , M , N , A , strideA1 , strideA2 , offsetA , isrm , mul ) {
363+ var idx ;
343364 var ia ;
344365 var i0 ;
345366 var i1 ;
@@ -348,15 +369,19 @@ function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, is
348369
349370 if ( isrm ) {
350371 for ( i1 = 0 ; i1 <= KU ; i1 ++ ) {
372+ idx = ia + ( max ( KU - i1 , 0 ) * strideA2 ) ;
351373 for ( i0 = max ( KU - i1 , 0 ) ; i0 < N ; i0 ++ ) {
352- A [ ia + ( i0 * strideA2 ) ] *= mul ;
374+ A [ idx ] *= mul ;
375+ idx += strideA2 ;
353376 }
354377 ia += strideA1 ;
355378 }
356379 } else {
357380 for ( i1 = 0 ; i1 < N ; i1 ++ ) {
381+ idx = ia + ( max ( KU - i1 , 0 ) * strideA1 ) ;
358382 for ( i0 = max ( KU - i1 , 0 ) ; i0 <= KU ; i0 ++ ) {
359- A [ ia + ( i0 * strideA1 ) ] *= mul ;
383+ A [ idx ] *= mul ;
384+ idx += strideA1 ;
360385 }
361386 ia += strideA2 ;
362387 }
@@ -395,6 +420,7 @@ function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, is
395420* // 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 ]
396421*/
397422function scaleBanded ( KL , KU , M , N , A , strideA1 , strideA2 , offsetA , mul ) {
423+ var idx ;
398424 var ia ;
399425 var i0 ;
400426 var i1 ;
@@ -410,8 +436,10 @@ function scaleBanded( KL, KU, M, N, A, strideA1, strideA2, offsetA, mul ) {
410436 ia = offsetA ;
411437
412438 for ( i1 = 0 ; i1 < N ; i1 ++ ) {
439+ idx = ia + ( max ( k1 - i1 , k2 ) * strideA1 ) ;
413440 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 ;
415443 }
416444 ia += strideA2 ;
417445 }
0 commit comments