Skip to content

Commit f94763c

Browse files
committed
refactor: pointer arithmetic
1 parent 57dadab commit f94763c

File tree

1 file changed

+32
-13
lines changed
  • lib/node_modules/@stdlib/lapack/base/dgtts2/lib

1 file changed

+32
-13
lines changed

lib/node_modules/@stdlib/lapack/base/dgtts2/lib/base.js

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -69,76 +69,95 @@ function transpose( N, nrhs, DL, strideDL, offsetDL, D, strideD, offsetD, DU, st
6969
var ipi;
7070
var idu;
7171
var idl;
72+
var ib1;
73+
var ib2;
7274
var id;
7375
var ip;
7476
var i;
7577
var j;
7678

7779
if ( nrhs <= 1 ) {
80+
ib1 = offsetB; // ib1 = offsetB + (j*strideB2);
7881
for ( j = 0; j < nrhs; j++) {
7982
ip = offsetIPIV + ( (N-2) * strideIPIV );
8083
idl = offsetDL + ( (N-2) * strideDL );
8184
id = offsetD;
8285
idu = offsetDU;
8386
idu2 = offsetDU2;
8487

85-
B[ offsetB + (strideB2*j) ] = B[ offsetB + (strideB2*j) ] / D[ id ];
88+
B[ ib1 ] /= D[ id ];
8689
if ( N > 1 ) {
87-
B[ offsetB + strideB1 + (strideB2*j) ] = ( B[ offsetB + strideB1 + (strideB2*j) ] - ( DU[ idu ] * B[ offsetB + (strideB2*j) ] ) ) / D[ id + strideD ];
90+
B[ ib1 + strideB1 ] = ( B[ ib1 + strideB1 ] - ( DU[ idu ] * B[ ib1 ] ) ) / D[ id + strideD ];
8891
}
8992

9093
idu = offsetDU + strideDU;
9194
id = offsetD + ( 2 * strideD );
95+
96+
ib2 = strideB1 * 2;
9297
for ( i = 2; i < N; i++ ) {
93-
B[ offsetB + (strideB1*i) + (strideB2*j) ] = ( B[ offsetB + (strideB1*i) + (strideB2*j) ] - ( DU[ idu ] * B[ offsetB + (strideB1*(i-1)) + (strideB2*j) ] ) - ( DU2[ idu2 ] * B[ offsetB + (strideB1*(i-2)) + (strideB2*j) ] ) ) / D[ id ];
98+
B[ ib1 + ib2 ] = ( B[ ib1 + ib2 ] - ( DU[ idu ] * B[ ib1 + ib2 - strideB1 ] ) - ( DU2[ idu2 ] * B[ ib1 + ib2 - (2*strideB1) ] ) ) / D[ id ];
9499

95100
idu += strideDU;
96101
idu2 += strideDU2;
97102
id += strideD;
103+
ib2 += strideB1;
98104
}
105+
106+
ib2 = strideB1 * ( N-2 );
99107
for ( i = N - 2; i >= 0; i-- ) {
100108
ipi = IPIV[ ip ];
101-
temp = B[ offsetB + (strideB1*i) + (strideB2*j) ] - ( DL[ idl ] * B[ offsetB + (strideB1*(i+1)) + (strideB2*j) ] );
102-
B[ offsetB + (strideB1*i) + (strideB2*j) ] = B[ offsetB + (strideB1*ipi) + (strideB2*j) ];
109+
temp = B[ ib1 + ib2 ] - ( DL[ idl ] * B[ ib1 + ib2 + strideB1 ] );
110+
B[ ib1 + ib2 ] = B[ offsetB + (strideB1*ipi) + (strideB2*j) ];
103111
B[ offsetB + (strideB1*ipi) + (strideB2*j) ] = temp;
104112

105113
ip -= strideIPIV;
106114
idl -= strideDL;
115+
ib2 -= strideB1;
107116
}
117+
118+
ib1 += strideB2;
108119
}
109120
} else {
121+
ib1 = offsetB;
110122
for ( j = 0; j < nrhs; j++ ) {
111123
idu = offsetDU;
112124
id = offsetD;
113125
idu2 = offsetDU2;
114126
ip = offsetIPIV + ( (N-2) * strideIPIV );
115-
idl = offsetDL + ( (N-2) * strideDL );
116127

117-
B[ offsetB + (strideB2*j) ] /= D[ id ];
128+
B[ ib1 ] /= D[ id ];
118129
if ( N > 1 ) {
119-
B[ offsetB + strideB1 + (strideB2*j) ] = ( B[ offsetB + strideB1 + (strideB2*j) ] - ( DU[ idu ] * B[ offsetB + (strideB2*j) ] ) ) / D[ id + strideD ];
130+
B[ ib1 + strideB1 ] = ( B[ ib1 + strideB1 ] - ( DU[ idu ] * B[ ib1 ] ) ) / D[ id + strideD ];
120131
}
121132
idu = offsetDU + strideDU;
122133
id = offsetD + ( 2 * strideD );
134+
ib2 = 2 * strideB1;
123135
for ( i = 2; i < N; i++ ) {
124-
B[ offsetB + (strideB1*i) + (strideB2*j) ] = ( B[ offsetB + (strideB1*i) + (strideB2*j) ] - ( DU[ idu ] * B[ offsetB + (strideB1*(i-1)) + (strideB2*j) ] ) - ( DU2[ idu2 ] * B[ offsetB + (strideB1*(i-2)) + (strideB2*j) ] ) ) / D[ id ];
136+
B[ ib1 + ib2 ] = ( B[ ib1 + ib2 ] - ( DU[ idu ] * B[ ib1 + ib2 - strideB1 ] ) - ( DU2[ idu2 ] * B[ ib1 + ib2 - (2*strideB1) ] ) ) / D[ id ];
125137

126138
idu += strideDU;
127139
id += strideD;
128140
idu2 += strideDU2;
141+
ib2 += strideB1;
129142
}
143+
144+
ib2 = ( N-2 ) * strideB1;
145+
idl = offsetDL + ( (N-2) * strideDL );
130146
for ( i = N - 2; i >= 0; i-- ) {
131147
if ( IPIV[ ip ] === i ) {
132-
B[ offsetB + (strideB1*i) + (strideB2*j) ] -= DL[ offsetDL + (strideDL*i) ] * B[ offsetB + (strideB1*(i+1)) + (strideB2*j) ];
148+
B[ ib1 + ib2 ] -= DL[ idl ] * B[ ib1 + ib2 + strideB1 ];
133149
} else {
134-
temp = B[ offsetB + (strideB1*(i+1)) + (strideB2*j) ];
135-
B[ offsetB + (strideB1*(i+1)) + (strideB2*j) ] = B[ offsetB + (strideB1*i) + (strideB2*j) ] - ( DL[ idl ] * temp );
136-
B[ offsetB + (strideB1*i) + (strideB2*j) ] = temp;
150+
temp = B[ ib1 + ib2 + strideB1 ];
151+
B[ ib1 + ib2 + strideB1 ] = B[ ib1 + ib2 ] - ( DL[ idl ] * temp );
152+
B[ ib1 + ib2 ] = temp;
137153
}
138154

139155
ip -= strideIPIV;
140156
idl -= strideDL;
157+
ib2 -= strideB1;
141158
}
159+
160+
ib1 += strideB2;
142161
}
143162
}
144163

0 commit comments

Comments
 (0)