|  | 
| 16 | 16 | * limitations under the License. | 
| 17 | 17 | */ | 
| 18 | 18 | 
 | 
| 19 |  | -/* eslint-disable array-element-newline */ | 
|  | 19 | +/* eslint-disable array-element-newline, max-lines */ | 
| 20 | 20 | 
 | 
| 21 | 21 | 'use strict'; | 
| 22 | 22 | 
 | 
| @@ -1103,3 +1103,149 @@ tape( 'the function returns expected values for job = both with complex input (c | 
| 1103 | 1103 | 	t.deepEqual( scale, expectedScale, 'returns expected value' ); | 
| 1104 | 1104 | 	t.end(); | 
| 1105 | 1105 | }); | 
|  | 1106 | + | 
|  | 1107 | +tape( 'the function returns expected values for job = scale with zero norm (row-major) (negative strides)', function test( t ) { | 
|  | 1108 | +	var expectedScale; | 
|  | 1109 | +	var expectedOut; | 
|  | 1110 | +	var expectedA; | 
|  | 1111 | +	var scale; | 
|  | 1112 | +	var info; | 
|  | 1113 | +	var out; | 
|  | 1114 | +	var A; | 
|  | 1115 | + | 
|  | 1116 | +	A = new Float64Array([ | 
|  | 1117 | +		6.0, 0.0, 3.0, | 
|  | 1118 | +		5.0, 0.0, 2.0, | 
|  | 1119 | +		4.0, 0.0, 1.0 | 
|  | 1120 | +	]); | 
|  | 1121 | +	out = new Float64Array( 2 ); | 
|  | 1122 | +	scale = new Float64Array( 3 ); | 
|  | 1123 | + | 
|  | 1124 | +	expectedOut = new Float64Array( [ 2.0, 0.0 ] ); | 
|  | 1125 | +	expectedScale = new Float64Array( [ 1.0, 1.0, 1.0 ] ); | 
|  | 1126 | +	expectedA = new Float64Array([ | 
|  | 1127 | +		6.0, 0.0, 3.0, | 
|  | 1128 | +		5.0, 0.0, 2.0, | 
|  | 1129 | +		4.0, 0.0, 1.0 | 
|  | 1130 | +	]); | 
|  | 1131 | + | 
|  | 1132 | +	info = dgebal( 'scale', 3, A, -3, -1, 8, out, -1, 1, scale, -1, 2 ); | 
|  | 1133 | +	t.strictEqual( info, 0, 'returns expected value' ); | 
|  | 1134 | +	t.deepEqual( out, expectedOut, 'returns expected value' ); | 
|  | 1135 | +	t.deepEqual( A, expectedA, 'returns expected value' ); | 
|  | 1136 | +	t.deepEqual( scale, expectedScale, 'returns expected value' ); | 
|  | 1137 | +	t.end(); | 
|  | 1138 | +}); | 
|  | 1139 | + | 
|  | 1140 | +tape( 'the function returns expected values for job = scale with zero norm (column-major) (negative strides)', function test( t ) { | 
|  | 1141 | +	var expectedScale; | 
|  | 1142 | +	var expectedOut; | 
|  | 1143 | +	var expectedA; | 
|  | 1144 | +	var scale; | 
|  | 1145 | +	var info; | 
|  | 1146 | +	var out; | 
|  | 1147 | +	var A; | 
|  | 1148 | + | 
|  | 1149 | +	A = new Float64Array([ | 
|  | 1150 | +		1.0, 2.0, 3.0, | 
|  | 1151 | +		0.0, 0.0, 0.0, | 
|  | 1152 | +		4.0, 5.0, 6.0 | 
|  | 1153 | +	]); | 
|  | 1154 | +	A = new Float64Array([ | 
|  | 1155 | +		6.0, 5.0, 4.0, | 
|  | 1156 | +		0.0, 0.0, 0.0, | 
|  | 1157 | +		3.0, 2.0, 1.0 | 
|  | 1158 | +	]); | 
|  | 1159 | +	out = new Float64Array( 2 ); | 
|  | 1160 | +	scale = new Float64Array( 3 ); | 
|  | 1161 | + | 
|  | 1162 | +	expectedOut = new Float64Array( [ 2.0, 0.0 ] ); | 
|  | 1163 | +	expectedScale = new Float64Array( [ 1.0, 1.0, 1.0 ] ); | 
|  | 1164 | +	expectedA = new Float64Array([ | 
|  | 1165 | +		1.0, 2.0, 3.0, | 
|  | 1166 | +		0.0, 0.0, 0.0, | 
|  | 1167 | +		4.0, 5.0, 6.0 | 
|  | 1168 | +	]); | 
|  | 1169 | +	expectedA = new Float64Array([ | 
|  | 1170 | +		6.0, 5.0, 4.0, | 
|  | 1171 | +		0.0, 0.0, 0.0, | 
|  | 1172 | +		3.0, 2.0, 1.0 | 
|  | 1173 | +	]); | 
|  | 1174 | + | 
|  | 1175 | +	info = dgebal( 'scale', 3, A, -1, -3, 8, out, -1, 1, scale, -1, 2 ); | 
|  | 1176 | + | 
|  | 1177 | +	t.strictEqual( info, 0, 'returns expected value' ); | 
|  | 1178 | +	t.deepEqual( out, expectedOut, 'returns expected value' ); | 
|  | 1179 | +	t.deepEqual( A, expectedA, 'returns expected value' ); | 
|  | 1180 | +	t.deepEqual( scale, expectedScale, 'returns expected value' ); | 
|  | 1181 | +	t.end(); | 
|  | 1182 | +}); | 
|  | 1183 | + | 
|  | 1184 | +tape( 'the function returns expected values for job = scale with small values (row-major) (negative strides)', function test( t ) { | 
|  | 1185 | +	var expectedScale; | 
|  | 1186 | +	var expectedOut; | 
|  | 1187 | +	var expectedA; | 
|  | 1188 | +	var scale; | 
|  | 1189 | +	var info; | 
|  | 1190 | +	var out; | 
|  | 1191 | +	var A; | 
|  | 1192 | + | 
|  | 1193 | +	A = new Float64Array([ | 
|  | 1194 | +		4.0e4, 2.0, 1.0, 4.0e-4, | 
|  | 1195 | +		3.0e4, 2.0, 1.0, 3.0e-4, | 
|  | 1196 | +		2.0e4, 2.0, 1.0, 2.0e-4, | 
|  | 1197 | +		1.0e4, 2.0, 1.0, 1.0e-4 | 
|  | 1198 | +	]); | 
|  | 1199 | +	out = new Float64Array( 2 ); | 
|  | 1200 | +	scale = new Float64Array( 4 ); | 
|  | 1201 | + | 
|  | 1202 | +	expectedOut = new Float64Array( [ 3.0, 0.0 ] ); | 
|  | 1203 | +	expectedScale = new Float64Array( [ 1.0, 128.0, 128.0, 4096.0 ] ); | 
|  | 1204 | +	expectedA = new Float64Array([ | 
|  | 1205 | +		4.0e4, 2.56e2, 1.28e2, 1.6384, | 
|  | 1206 | +		2.34375e2, 2.0, 1.0, 9.6e-3, | 
|  | 1207 | +		1.5625e2, 2.0, 1.0, 6.4e-3, | 
|  | 1208 | +		2.44140625, 6.25e-2, 3.125e-2, 1.0e-4 | 
|  | 1209 | +	]); | 
|  | 1210 | + | 
|  | 1211 | +	info = dgebal( 'scale', 4, A, -4, -1, 15, out, -1, 1, scale, -1, 3 ); | 
|  | 1212 | +	t.strictEqual( info, 0, 'returns expected value' ); | 
|  | 1213 | +	t.deepEqual( out, expectedOut, 'returns expected value' ); | 
|  | 1214 | +	t.deepEqual( A, expectedA, 'returns expected value' ); | 
|  | 1215 | +	t.deepEqual( scale, expectedScale, 'returns expected value' ); | 
|  | 1216 | +	t.end(); | 
|  | 1217 | +}); | 
|  | 1218 | + | 
|  | 1219 | +tape( 'the function returns expected values for job = scale with small values (column-major)', function test( t ) { | 
|  | 1220 | +	var expectedScale; | 
|  | 1221 | +	var expectedOut; | 
|  | 1222 | +	var expectedA; | 
|  | 1223 | +	var scale; | 
|  | 1224 | +	var info; | 
|  | 1225 | +	var out; | 
|  | 1226 | +	var A; | 
|  | 1227 | + | 
|  | 1228 | +	A = new Float64Array([ | 
|  | 1229 | +		4.0e4, 3.0e4, 2.0e4, 1.0e4, | 
|  | 1230 | +		2.0, 2.0, 2.0, 2.0, | 
|  | 1231 | +		1.0, 1.0, 1.0, 1.0, | 
|  | 1232 | +		4.0e-4, 3.0e-4, 2.0e-4, 1.0e-4 | 
|  | 1233 | +	]); | 
|  | 1234 | +	out = new Float64Array( 2 ); | 
|  | 1235 | +	scale = new Float64Array( 4 ); | 
|  | 1236 | + | 
|  | 1237 | +	expectedOut = new Float64Array( [ 3.0, 0.0 ] ); | 
|  | 1238 | +	expectedScale = new Float64Array( [ 1.0, 128.0, 128.0, 4096.0 ] ); | 
|  | 1239 | +	expectedA = new Float64Array([ | 
|  | 1240 | +		4.0e4, 2.34375e2, 1.5625e2, 2.44140625, | 
|  | 1241 | +		2.56e2, 2.0, 2.0, 6.25e-2, | 
|  | 1242 | +		1.28e2, 1.0, 1.0, 3.125e-2, | 
|  | 1243 | +		1.6384, 9.6e-3, 6.4e-3, 1.0e-4 | 
|  | 1244 | +	]); | 
|  | 1245 | +	info = dgebal( 'scale', 4, A, -1, -4, 15, out, -1, 1, scale, -1, 3 ); | 
|  | 1246 | +	t.strictEqual( info, 0, 'returns expected value' ); | 
|  | 1247 | +	t.deepEqual( out, expectedOut, 'returns expected value' ); | 
|  | 1248 | +	t.deepEqual( A, expectedA, 'returns expected value' ); | 
|  | 1249 | +	t.deepEqual( scale, expectedScale, 'returns expected value' ); | 
|  | 1250 | +	t.end(); | 
|  | 1251 | +}); | 
0 commit comments