Skip to content

Commit b37df1c

Browse files
authored
wgsl: Add sparseMatrixRange to FPTraits API (#3183)
Fixes #3174
1 parent 591c655 commit b37df1c

File tree

5 files changed

+148
-171
lines changed

5 files changed

+148
-171
lines changed

src/resources/cache/hashes.json

Lines changed: 104 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,106 @@
11
{
2-
"webgpu/shader/execution/binary/af_addition.bin": "ca9569aa",
3-
"webgpu/shader/execution/binary/af_logical.bin": "79fb9de7",
4-
"webgpu/shader/execution/binary/af_division.bin": "87cef40b",
5-
"webgpu/shader/execution/binary/af_matrix_addition.bin": "8afe5300",
6-
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "bd433833",
7-
"webgpu/shader/execution/binary/af_multiplication.bin": "7803251d",
8-
"webgpu/shader/execution/binary/af_remainder.bin": "f5feb53",
9-
"webgpu/shader/execution/binary/af_subtraction.bin": "7cc42f3a",
10-
"webgpu/shader/execution/binary/f16_addition.bin": "e56d4073",
11-
"webgpu/shader/execution/binary/f16_logical.bin": "6dfc24ba",
12-
"webgpu/shader/execution/binary/f16_division.bin": "933c3c35",
13-
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "934c3596",
14-
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "f2a1e8",
15-
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "b1ca61be",
16-
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "e054a92b",
17-
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "4706075e",
18-
"webgpu/shader/execution/binary/f16_multiplication.bin": "28dbd8b6",
19-
"webgpu/shader/execution/binary/f16_remainder.bin": "986de10c",
20-
"webgpu/shader/execution/binary/f16_subtraction.bin": "d3e7f74f",
21-
"webgpu/shader/execution/binary/f32_addition.bin": "fc66b530",
22-
"webgpu/shader/execution/binary/f32_logical.bin": "6aecdb17",
23-
"webgpu/shader/execution/binary/f32_division.bin": "b0b2294c",
24-
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "4f84f9a4",
25-
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "cf99f3b9",
26-
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "ac8e0983",
27-
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "76301b8",
28-
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "db0f8c38",
29-
"webgpu/shader/execution/binary/f32_multiplication.bin": "ecbcde06",
30-
"webgpu/shader/execution/binary/f32_remainder.bin": "9d11467e",
31-
"webgpu/shader/execution/binary/f32_subtraction.bin": "7dbddc79",
32-
"webgpu/shader/execution/binary/i32_arithmetic.bin": "43c80b5e",
33-
"webgpu/shader/execution/binary/i32_comparison.bin": "1b9d7888",
34-
"webgpu/shader/execution/binary/u32_arithmetic.bin": "c031871c",
35-
"webgpu/shader/execution/binary/u32_comparison.bin": "9b05600",
36-
"webgpu/shader/execution/abs.bin": "acfe9bb2",
37-
"webgpu/shader/execution/acos.bin": "8ed18869",
38-
"webgpu/shader/execution/acosh.bin": "1cf98804",
39-
"webgpu/shader/execution/asin.bin": "71698297",
40-
"webgpu/shader/execution/asinh.bin": "7256451c",
41-
"webgpu/shader/execution/atan.bin": "96e29c5d",
42-
"webgpu/shader/execution/atan2.bin": "2dd9139",
43-
"webgpu/shader/execution/atanh.bin": "fafe4e6c",
44-
"webgpu/shader/execution/bitcast.bin": "b9fb1fbd",
45-
"webgpu/shader/execution/ceil.bin": "ff230775",
46-
"webgpu/shader/execution/clamp.bin": "ae2f4ac",
47-
"webgpu/shader/execution/cos.bin": "ff432f2b",
48-
"webgpu/shader/execution/cosh.bin": "d7af2ee9",
49-
"webgpu/shader/execution/cross.bin": "11bf35a8",
50-
"webgpu/shader/execution/degrees.bin": "c53959da",
51-
"webgpu/shader/execution/determinant.bin": "da997a93",
52-
"webgpu/shader/execution/distance.bin": "817d1cb",
53-
"webgpu/shader/execution/dot.bin": "96070df0",
54-
"webgpu/shader/execution/exp.bin": "e9728b8a",
55-
"webgpu/shader/execution/exp2.bin": "66d0d5c5",
56-
"webgpu/shader/execution/faceForward.bin": "cac5c81",
57-
"webgpu/shader/execution/floor.bin": "18f58cc",
58-
"webgpu/shader/execution/fma.bin": "6372916b",
59-
"webgpu/shader/execution/fract.bin": "6335e79f",
60-
"webgpu/shader/execution/frexp.bin": "54d2bdb0",
61-
"webgpu/shader/execution/inverseSqrt.bin": "10ba17af",
62-
"webgpu/shader/execution/ldexp.bin": "dba21b3e",
63-
"webgpu/shader/execution/length.bin": "aad9991",
64-
"webgpu/shader/execution/log.bin": "ff19d8a0",
65-
"webgpu/shader/execution/log2.bin": "b3ebf3dd",
66-
"webgpu/shader/execution/max.bin": "61a11c89",
67-
"webgpu/shader/execution/min.bin": "5de15c84",
68-
"webgpu/shader/execution/mix.bin": "a07ec401",
69-
"webgpu/shader/execution/modf.bin": "91cac6b2",
70-
"webgpu/shader/execution/normalize.bin": "6da0731",
71-
"webgpu/shader/execution/pack2x16float.bin": "119a9ab1",
72-
"webgpu/shader/execution/pow.bin": "986f5d89",
73-
"webgpu/shader/execution/quantizeToF16.bin": "77efff6b",
74-
"webgpu/shader/execution/radians.bin": "a035b517",
75-
"webgpu/shader/execution/reflect.bin": "c2763f1a",
76-
"webgpu/shader/execution/refract.bin": "e71dd5de",
77-
"webgpu/shader/execution/round.bin": "36f3ecde",
78-
"webgpu/shader/execution/saturate.bin": "392167ed",
79-
"webgpu/shader/execution/sign.bin": "766ace88",
80-
"webgpu/shader/execution/sin.bin": "c1fd0733",
81-
"webgpu/shader/execution/sinh.bin": "3f78d331",
82-
"webgpu/shader/execution/smoothstep.bin": "9f72a10",
83-
"webgpu/shader/execution/sqrt.bin": "17fe3757",
84-
"webgpu/shader/execution/step.bin": "e20fb42",
85-
"webgpu/shader/execution/tan.bin": "c3c67187",
86-
"webgpu/shader/execution/tanh.bin": "9d06e776",
87-
"webgpu/shader/execution/transpose.bin": "f739a482",
88-
"webgpu/shader/execution/trunc.bin": "16600f63",
89-
"webgpu/shader/execution/unpack2x16float.bin": "4d6c065c",
90-
"webgpu/shader/execution/unpack2x16snorm.bin": "8d8fc5df",
91-
"webgpu/shader/execution/unpack2x16unorm.bin": "1824a555",
92-
"webgpu/shader/execution/unpack4x8snorm.bin": "bad79c86",
93-
"webgpu/shader/execution/unpack4x8unorm.bin": "8a744dfa",
94-
"webgpu/shader/execution/unary/af_arithmetic.bin": "63f22c73",
95-
"webgpu/shader/execution/unary/af_assignment.bin": "fb65d5ff",
96-
"webgpu/shader/execution/unary/bool_conversion.bin": "cae3c1bd",
97-
"webgpu/shader/execution/unary/f16_arithmetic.bin": "f6937f3e",
98-
"webgpu/shader/execution/unary/f16_conversion.bin": "786501ec",
99-
"webgpu/shader/execution/unary/f32_arithmetic.bin": "eef2bb81",
100-
"webgpu/shader/execution/unary/f32_conversion.bin": "983e48bb",
101-
"webgpu/shader/execution/unary/i32_arithmetic.bin": "c93e4e68",
102-
"webgpu/shader/execution/unary/i32_complement.bin": "2505e4e6",
103-
"webgpu/shader/execution/unary/i32_conversion.bin": "8cceff52",
104-
"webgpu/shader/execution/unary/u32_complement.bin": "dada6764",
105-
"webgpu/shader/execution/unary/u32_conversion.bin": "9b89fb5"
2+
"webgpu/shader/execution/binary/af_addition.bin": "a5da1df9",
3+
"webgpu/shader/execution/binary/af_logical.bin": "27d915bd",
4+
"webgpu/shader/execution/binary/af_division.bin": "a5270697",
5+
"webgpu/shader/execution/binary/af_matrix_addition.bin": "62f800a8",
6+
"webgpu/shader/execution/binary/af_matrix_subtraction.bin": "9183d57f",
7+
"webgpu/shader/execution/binary/af_multiplication.bin": "865258e7",
8+
"webgpu/shader/execution/binary/af_remainder.bin": "4c61df7e",
9+
"webgpu/shader/execution/binary/af_subtraction.bin": "43dd47ae",
10+
"webgpu/shader/execution/binary/f16_addition.bin": "513d71c8",
11+
"webgpu/shader/execution/binary/f16_logical.bin": "443f9a98",
12+
"webgpu/shader/execution/binary/f16_division.bin": "f54e29cb",
13+
"webgpu/shader/execution/binary/f16_matrix_addition.bin": "f910cec6",
14+
"webgpu/shader/execution/binary/f16_matrix_matrix_multiplication.bin": "b70ddbb2",
15+
"webgpu/shader/execution/binary/f16_matrix_scalar_multiplication.bin": "62afef7a",
16+
"webgpu/shader/execution/binary/f16_matrix_subtraction.bin": "29e3722d",
17+
"webgpu/shader/execution/binary/f16_matrix_vector_multiplication.bin": "f4a29ad1",
18+
"webgpu/shader/execution/binary/f16_multiplication.bin": "9baf80a1",
19+
"webgpu/shader/execution/binary/f16_remainder.bin": "85c74732",
20+
"webgpu/shader/execution/binary/f16_subtraction.bin": "b06f0345",
21+
"webgpu/shader/execution/binary/f32_addition.bin": "e0f9ce70",
22+
"webgpu/shader/execution/binary/f32_logical.bin": "47cadba6",
23+
"webgpu/shader/execution/binary/f32_division.bin": "7005e989",
24+
"webgpu/shader/execution/binary/f32_matrix_addition.bin": "98e53a9",
25+
"webgpu/shader/execution/binary/f32_matrix_matrix_multiplication.bin": "b5c60cda",
26+
"webgpu/shader/execution/binary/f32_matrix_scalar_multiplication.bin": "522a3569",
27+
"webgpu/shader/execution/binary/f32_matrix_subtraction.bin": "c19e488c",
28+
"webgpu/shader/execution/binary/f32_matrix_vector_multiplication.bin": "9af1d0c3",
29+
"webgpu/shader/execution/binary/f32_multiplication.bin": "e59c1749",
30+
"webgpu/shader/execution/binary/f32_remainder.bin": "f0aa263b",
31+
"webgpu/shader/execution/binary/f32_subtraction.bin": "f4bc3081",
32+
"webgpu/shader/execution/binary/i32_arithmetic.bin": "e92caa13",
33+
"webgpu/shader/execution/binary/i32_comparison.bin": "21f566be",
34+
"webgpu/shader/execution/binary/u32_arithmetic.bin": "4190d758",
35+
"webgpu/shader/execution/binary/u32_comparison.bin": "91fe8844",
36+
"webgpu/shader/execution/abs.bin": "40c39d52",
37+
"webgpu/shader/execution/acos.bin": "9998e303",
38+
"webgpu/shader/execution/acosh.bin": "7636c6b9",
39+
"webgpu/shader/execution/asin.bin": "fd7059cd",
40+
"webgpu/shader/execution/asinh.bin": "58959a2",
41+
"webgpu/shader/execution/atan.bin": "ed0a5fe5",
42+
"webgpu/shader/execution/atan2.bin": "bcfaa17a",
43+
"webgpu/shader/execution/atanh.bin": "fe79d05d",
44+
"webgpu/shader/execution/bitcast.bin": "ab8f3a85",
45+
"webgpu/shader/execution/ceil.bin": "82690ce1",
46+
"webgpu/shader/execution/clamp.bin": "a30a2b8e",
47+
"webgpu/shader/execution/cos.bin": "bf80f288",
48+
"webgpu/shader/execution/cosh.bin": "2add503b",
49+
"webgpu/shader/execution/cross.bin": "ce546995",
50+
"webgpu/shader/execution/degrees.bin": "af783136",
51+
"webgpu/shader/execution/determinant.bin": "16d6108",
52+
"webgpu/shader/execution/distance.bin": "34788cf8",
53+
"webgpu/shader/execution/dot.bin": "5d8d3fff",
54+
"webgpu/shader/execution/exp.bin": "e890f3d",
55+
"webgpu/shader/execution/exp2.bin": "80f0c788",
56+
"webgpu/shader/execution/faceForward.bin": "4cf3e04d",
57+
"webgpu/shader/execution/floor.bin": "4d91b147",
58+
"webgpu/shader/execution/fma.bin": "9579e337",
59+
"webgpu/shader/execution/fract.bin": "a1372b54",
60+
"webgpu/shader/execution/frexp.bin": "7d140601",
61+
"webgpu/shader/execution/inverseSqrt.bin": "515fb6e3",
62+
"webgpu/shader/execution/ldexp.bin": "826a29a8",
63+
"webgpu/shader/execution/length.bin": "124ac33b",
64+
"webgpu/shader/execution/log.bin": "aad3a1a8",
65+
"webgpu/shader/execution/log2.bin": "7ef34360",
66+
"webgpu/shader/execution/max.bin": "69a1807",
67+
"webgpu/shader/execution/min.bin": "8dfa353d",
68+
"webgpu/shader/execution/mix.bin": "96c9d02d",
69+
"webgpu/shader/execution/modf.bin": "26670f53",
70+
"webgpu/shader/execution/normalize.bin": "60571bc4",
71+
"webgpu/shader/execution/pack2x16float.bin": "31601129",
72+
"webgpu/shader/execution/pow.bin": "8f5de92",
73+
"webgpu/shader/execution/quantizeToF16.bin": "9936c450",
74+
"webgpu/shader/execution/radians.bin": "56c3610d",
75+
"webgpu/shader/execution/reflect.bin": "61beb0cf",
76+
"webgpu/shader/execution/refract.bin": "d0180f9b",
77+
"webgpu/shader/execution/round.bin": "3bc78d47",
78+
"webgpu/shader/execution/saturate.bin": "8478071d",
79+
"webgpu/shader/execution/sign.bin": "58d75a88",
80+
"webgpu/shader/execution/sin.bin": "b14cf00a",
81+
"webgpu/shader/execution/sinh.bin": "a8d76c62",
82+
"webgpu/shader/execution/smoothstep.bin": "246c76eb",
83+
"webgpu/shader/execution/sqrt.bin": "f6c4f4c1",
84+
"webgpu/shader/execution/step.bin": "8268c823",
85+
"webgpu/shader/execution/tan.bin": "af3ecb02",
86+
"webgpu/shader/execution/tanh.bin": "c22b8364",
87+
"webgpu/shader/execution/transpose.bin": "f8663cd3",
88+
"webgpu/shader/execution/trunc.bin": "b532e654",
89+
"webgpu/shader/execution/unpack2x16float.bin": "67d0b480",
90+
"webgpu/shader/execution/unpack2x16snorm.bin": "be8c0687",
91+
"webgpu/shader/execution/unpack2x16unorm.bin": "8ef57a36",
92+
"webgpu/shader/execution/unpack4x8snorm.bin": "a807e0f6",
93+
"webgpu/shader/execution/unpack4x8unorm.bin": "b8ed39e8",
94+
"webgpu/shader/execution/unary/af_arithmetic.bin": "f6181e3d",
95+
"webgpu/shader/execution/unary/af_assignment.bin": "1da130e3",
96+
"webgpu/shader/execution/unary/bool_conversion.bin": "166e7b55",
97+
"webgpu/shader/execution/unary/f16_arithmetic.bin": "576d8432",
98+
"webgpu/shader/execution/unary/f16_conversion.bin": "187365c9",
99+
"webgpu/shader/execution/unary/f32_arithmetic.bin": "abfce14d",
100+
"webgpu/shader/execution/unary/f32_conversion.bin": "69c41336",
101+
"webgpu/shader/execution/unary/i32_arithmetic.bin": "cca83969",
102+
"webgpu/shader/execution/unary/i32_complement.bin": "2a173277",
103+
"webgpu/shader/execution/unary/i32_conversion.bin": "11d03e95",
104+
"webgpu/shader/execution/unary/u32_complement.bin": "6fce0665",
105+
"webgpu/shader/execution/unary/u32_conversion.bin": "53c94e7b"
106106
}
53 Bytes
Binary file not shown.

src/webgpu/shader/execution/expression/call/builtin/transpose.spec.ts

Lines changed: 21 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -10,72 +10,37 @@ import { makeTestGroup } from '../../../../../../common/framework/test_group.js'
1010
import { GPUTest } from '../../../../../gpu_test.js';
1111
import { TypeAbstractFloat, TypeF16, TypeF32, TypeMat } from '../../../../../util/conversion.js';
1212
import { FP } from '../../../../../util/floating_point.js';
13-
import {
14-
sparseMatrixF16Range,
15-
sparseMatrixF32Range,
16-
sparseMatrixF64Range,
17-
} from '../../../../../util/math.js';
1813
import { makeCaseCache } from '../../case_cache.js';
1914
import { allInputSources, onlyConstInputSource, run } from '../../expression.js';
2015

2116
import { abstractBuiltin, builtin } from './builtin.js';
2217

2318
export const g = makeTestGroup(GPUTest);
2419

25-
// Cases: f32_matCxR_[non_]const
26-
const f32_cases = ([2, 3, 4] as const)
27-
.flatMap(cols =>
28-
([2, 3, 4] as const).flatMap(rows =>
29-
([true, false] as const).map(nonConst => ({
30-
[`f32_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => {
31-
return FP.f32.generateMatrixToMatrixCases(
32-
sparseMatrixF32Range(cols, rows),
33-
nonConst ? 'unfiltered' : 'finite',
34-
FP.f32.transposeInterval
35-
);
36-
},
37-
}))
20+
// Cases: [f32|f16|abstract]_matCxR_[non_]const
21+
// abstract_matCxR_non_const is empty and not used
22+
const cases = (['f32', 'f16', 'abstract'] as const)
23+
.flatMap(trait =>
24+
([2, 3, 4] as const).flatMap(cols =>
25+
([2, 3, 4] as const).flatMap(rows =>
26+
([true, false] as const).map(nonConst => ({
27+
[`${trait}_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => {
28+
if (trait === 'abstract' && nonConst) {
29+
return [];
30+
}
31+
return FP[trait].generateMatrixToMatrixCases(
32+
FP[trait].sparseMatrixRange(cols, rows),
33+
nonConst ? 'unfiltered' : 'finite',
34+
FP[trait].transposeInterval
35+
);
36+
},
37+
}))
38+
)
3839
)
3940
)
4041
.reduce((a, b) => ({ ...a, ...b }), {});
4142

42-
// Cases: f16_matCxR_[non_]const
43-
const f16_cases = ([2, 3, 4] as const)
44-
.flatMap(cols =>
45-
([2, 3, 4] as const).flatMap(rows =>
46-
([true, false] as const).map(nonConst => ({
47-
[`f16_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => {
48-
return FP.f16.generateMatrixToMatrixCases(
49-
sparseMatrixF16Range(cols, rows),
50-
nonConst ? 'unfiltered' : 'finite',
51-
FP.f16.transposeInterval
52-
);
53-
},
54-
}))
55-
)
56-
)
57-
.reduce((a, b) => ({ ...a, ...b }), {});
58-
59-
// Cases: abstract_matCxR
60-
const abstract_cases = ([2, 3, 4] as const)
61-
.flatMap(cols =>
62-
([2, 3, 4] as const).map(rows => ({
63-
[`abstract_mat${cols}x${rows}`]: () => {
64-
return FP.abstract.generateMatrixToMatrixCases(
65-
sparseMatrixF64Range(cols, rows),
66-
'finite',
67-
FP.abstract.transposeInterval
68-
);
69-
},
70-
}))
71-
)
72-
.reduce((a, b) => ({ ...a, ...b }), {});
73-
74-
export const d = makeCaseCache('transpose', {
75-
...f32_cases,
76-
...f16_cases,
77-
...abstract_cases,
78-
});
43+
export const d = makeCaseCache('transpose', cases);
7944

8045
g.test('abstract_float')
8146
.specURL('https://www.w3.org/TR/WGSL/#matrix-builtin-functions')
@@ -89,7 +54,7 @@ g.test('abstract_float')
8954
.fn(async t => {
9055
const cols = t.params.cols;
9156
const rows = t.params.rows;
92-
const cases = await d.get(`abstract_mat${cols}x${rows}`);
57+
const cases = await d.get(`abstract_mat${cols}x${rows}_const`);
9358
await run(
9459
t,
9560
abstractBuiltin('transpose'),

src/webgpu/util/floating_point.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,24 @@ import {
3737
map2DArray,
3838
oneULPF16,
3939
oneULPF32,
40-
quantizeToF32,
4140
quantizeToF16,
41+
quantizeToF32,
42+
scalarF16Range,
43+
scalarF32Range,
44+
scalarF64Range,
45+
sparseMatrixF16Range,
46+
sparseMatrixF32Range,
47+
sparseMatrixF64Range,
48+
sparseScalarF16Range,
49+
sparseScalarF32Range,
50+
sparseScalarF64Range,
4251
sparseVectorF16Range,
4352
sparseVectorF32Range,
4453
sparseVectorF64Range,
4554
unflatten2DArray,
4655
vectorF16Range,
4756
vectorF32Range,
4857
vectorF64Range,
49-
scalarF32Range,
50-
sparseScalarF32Range,
51-
scalarF64Range,
52-
sparseScalarF64Range,
53-
scalarF16Range,
54-
sparseScalarF16Range,
5558
} from './math.js';
5659

5760
/** Indicate the kind of WGSL floating point numbers being operated on */
@@ -1101,6 +1104,12 @@ export abstract class FPTraits {
11011104
public abstract vectorRange(dim: number): ROArrayArray<number>;
11021105
/** @returns a reduced range of dim element vectors for testing */
11031106
public abstract sparseVectorRange(dim: number): ROArrayArray<number>;
1107+
/** @returns a reduced range of cols x rows matrices for testing
1108+
*
1109+
* A non-sparse version of this generator is intentionally not provided due to
1110+
* runtime issues with more dense ranges.
1111+
*/
1112+
public abstract sparseMatrixRange(cols: number, rows: number): ROArrayArrayArray<number>;
11041113

11051114
// Framework - Cases
11061115

@@ -4544,6 +4553,7 @@ class F32Traits extends FPTraits {
45444553
public readonly sparseScalarRange = sparseScalarF32Range;
45454554
public readonly vectorRange = vectorF32Range;
45464555
public readonly sparseVectorRange = sparseVectorF32Range;
4556+
public readonly sparseMatrixRange = sparseMatrixF32Range;
45474557

45484558
// Framework - Fundamental Error Intervals - Overrides
45494559
public readonly absoluteErrorInterval = this.absoluteErrorIntervalImpl.bind(this);
@@ -5020,6 +5030,7 @@ class FPAbstractTraits extends FPTraits {
50205030
public readonly sparseScalarRange = sparseScalarF64Range;
50215031
public readonly vectorRange = vectorF64Range;
50225032
public readonly sparseVectorRange = sparseVectorF64Range;
5033+
public readonly sparseMatrixRange = sparseMatrixF64Range;
50235034

50245035
// Framework - Fundamental Error Intervals - Overrides
50255036
public readonly absoluteErrorInterval = this.unboundedAbsoluteErrorInterval.bind(this);
@@ -5356,6 +5367,7 @@ class F16Traits extends FPTraits {
53565367
public readonly sparseScalarRange = sparseScalarF16Range;
53575368
public readonly vectorRange = vectorF16Range;
53585369
public readonly sparseVectorRange = sparseVectorF16Range;
5370+
public readonly sparseMatrixRange = sparseMatrixF16Range;
53595371

53605372
// Framework - Fundamental Error Intervals - Overrides
53615373
public readonly absoluteErrorInterval = this.absoluteErrorIntervalImpl.bind(this);

0 commit comments

Comments
 (0)