diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/README.md b/lib/node_modules/@stdlib/blas/base/sgemmtr/README.md
new file mode 100644
index 000000000000..b3280f0d5781
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/README.md
@@ -0,0 +1,260 @@
+
+
+# sgemmtr
+
+> Perform the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is one of the `op(X) = X`, or `op(X) = X^T`, and update only the upper or lower triangular part of `C`.
+
+
+
+## Usage
+
+```javascript
+var sgemmtr = require( '@stdlib/blas/base/sgemmtr' );
+```
+
+#### sgemmtr( ord, uplo, ta, tb, M, N, K, α, A, lda, B, ldb, β, C, ldc )
+
+Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+
+```javascript
+var Float32Array = require( '@stdlib/array/float32' );
+
+var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+
+sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, B, 2, 1.0, C, 2 );
+// C => [ 2.0, 5.0, 3.0, 11.0 ]
+```
+
+The function has the following parameters:
+
+- **ord**: storage layout.
+- **uplo**: specifies whether to update the upper or lower triangular part of `C`.
+- **ta**: specifies whether `A` should be transposed, conjugate-transposed, or not transposed.
+- **tb**: specifies whether `B` should be transposed, conjugate-transposed, or not transposed.
+- **M**: number of rows in the matrix `op(A)` and in the matrix `C`.
+- **N**: number of columns in the matrix `op(B)` and in the matrix `C`.
+- **K**: number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`.
+- **α**: scalar constant.
+- **A**: first input matrix stored in linear memory as a [`Float32Array`][mdn-float32array].
+- **lda**: stride of the first dimension of `A` (leading dimension of `A`).
+- **B**: second input matrix stored in linear memory as a [`Float32Array`][mdn-float32array].
+- **ldb**: stride of the first dimension of `B` (leading dimension of `B`).
+- **β**: scalar constant.
+- **C**: third input matrix stored in linear memory as a [`Float32Array`][mdn-float32array].
+- **ldc**: stride of the first dimension of `C` (leading dimension of `C`).
+
+The stride parameters determine how elements in the input arrays are accessed at runtime. For example, to perform matrix multiplication of two subarrays
+
+```javascript
+var Float32Array = require( '@stdlib/array/float32' );
+
+var A = new Float32Array( [ 1.0, 2.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0 ] );
+var B = new Float32Array( [ 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0 ] );
+var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+
+sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 4, B, 4, 1.0, C, 2 );
+// C => [ 2.0, 5.0, 3.0, 11.0 ]
+```
+
+
+
+#### sgemmtr.ndarray( uplo, ta, tb, M, N, K, α, A, sa1, sa2, oa, B, sb1, sb2, ob, β, C, sc1, sc2, oc )
+
+Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)`, using alternative indexing semantics and where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+
+```javascript
+var Float32Array = require( '@stdlib/array/float32' );
+
+var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+
+sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, 1, 0, B, 2, 1, 0, 1.0, C, 2, 1, 0 );
+// C => [ 2.0, 5.0, 3.0, 11.0 ]
+```
+
+The function has the following additional parameters:
+
+- **sa1**: stride of the first dimension of `A`.
+- **sa2**: stride of the second dimension of `A`.
+- **oa**: starting index for `A`.
+- **sb1**: stride of the first dimension of `B`.
+- **sb2**: stride of the second dimension of `B`.
+- **ob**: starting index for `B`.
+- **sc1**: stride of the first dimension of `C`.
+- **sc2**: stride of the second dimension of `C`.
+- **oc**: starting index for `C`.
+
+While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example,
+
+```javascript
+var Float32Array = require( '@stdlib/array/float32' );
+
+var A = new Float32Array( [ 0.0, 0.0, 1.0, 3.0, 2.0, 4.0 ] );
+var B = new Float32Array( [ 0.0, 1.0, 0.0, 1.0, 1.0 ] );
+var C = new Float32Array( [ 0.0, 0.0, 0.0, 1.0, 3.0, 2.0, 4.0 ] );
+
+sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 1, 2, 2, B, 1, 2, 1, 1.0, C, 1, 2, 3 );
+// C => [ 0.0, 0.0, 0.0, 2.0, 3.0, 5.0, 11.0 ]
+```
+
+
+
+
+
+
+
+## Notes
+
+- `sgemmtr()` is an extension of the standard [BLAS][blas] level 3 `gemm` routine—provided by optimized BLAS libraries, such as Intel MKL and OpenBLAS, as [`?gemmt`][mkl-gemmt]—which updates only the upper or lower triangular part of `C`, avoiding unnecessary computation and writes when `C` is known to be symmetric or triangular.
+
+
+
+
+
+
+
+## Examples
+
+
+
+```javascript
+var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
+var sgemmtr = require( '@stdlib/blas/base/sgemmtr' );
+
+var opts = {
+ 'dtype': 'float32'
+};
+
+var M = 3;
+var N = 4;
+var K = 2;
+
+var A = discreteUniform( M*K, 0, 10, opts ); // 3x2
+var B = discreteUniform( K*N, 0, 10, opts ); // 2x4
+var C = discreteUniform( M*N, 0, 10, opts ); // 3x4
+
+sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', M, N, K, 1.0, A, K, B, N, 1.0, C, N );
+console.log( C );
+
+sgemmtr.ndarray( 'lower', 'no-transpose', 'no-transpose', M, N, K, 1.0, A, K, 1, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+console.log( C );
+```
+
+
+
+
+
+
+
+* * *
+
+
+
+## C APIs
+
+
+
+
+
+
+
+
+
+
+
+### Usage
+
+```c
+#include "stdlib/blas/base/sgemmtr.h"
+```
+
+#### TODO
+
+TODO.
+
+```c
+TODO
+```
+
+TODO
+
+```c
+TODO
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Examples
+
+```c
+TODO
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[blas]: http://www.netlib.org/blas
+
+[mkl-gemmt]: https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2023-2/cblas-gemmt.html
+
+[mdn-float32array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array
+
+[mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
+
+
+
+
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..3f4a656b26e5
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..0f00552e5f58
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..70747a472889
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..8753fa546286
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_cc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..64c0b5c1008f
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=row-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..ebfd5b708c4e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=row-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..eb84d0b0dd26
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=row-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..48ed15cc8687
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_cb_rc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=row-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..0bac7226cbb1
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=column-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..ccc89004ab40
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=column-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..14aebb6ba758
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=column-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..f2903b54a6e3
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_cc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=column-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..9fa89a65bde6
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=row-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..923a07f8592e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=row-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..678a43c50afc
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=row-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..f15e722244e5
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ca_rb_rc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, 1, N, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=column-major,order(B)=row-major,order(C)=row-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_nta_ntb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_nta_ntb.js
new file mode 100644
index 000000000000..e936be95397b
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_nta_ntb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'column-major', 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_nta_tb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_nta_tb.js
new file mode 100644
index 000000000000..96b437702366
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_nta_tb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'column-major', 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_ta_ntb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_ta_ntb.js
new file mode 100644
index 000000000000..0aea7151e173
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_ta_ntb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'column-major', 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_ta_tb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_ta_tb.js
new file mode 100644
index 000000000000..42fa8920014d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_column_major_ta_tb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'column-major', 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=column-major,order(B)=column-major,order(C)=column-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..4982c7423b1e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=column-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..6fdc60979e06
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=column-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..3c2578e09612
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=column-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..94837e67b002
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_cc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=column-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..75f7e63240d7
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=row-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..7cf800354c4b
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=row-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..d5dcd9b244b1
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=row-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..2e2a33ec8e80
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_cb_rc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, 1, N, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=column-major,order(C)=row-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..f23b968be2d4
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=column-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..ee7fe609f264
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=column-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..c5fe1f9ba2e6
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=column-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..13a3b7389a0d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_cc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, 1, N, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=column-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_nta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_nta_ntb.ndarray.js
new file mode 100644
index 000000000000..0cda11ba58cf
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_nta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_nta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_nta_tb.ndarray.js
new file mode 100644
index 000000000000..22f2bccdf3a6
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_nta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_ta_ntb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_ta_ntb.ndarray.js
new file mode 100644
index 000000000000..a67f96291d85
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_ta_ntb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_ta_tb.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_ta_tb.ndarray.js
new file mode 100644
index 000000000000..067297cc0ed1
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_ra_rb_rc_ta_tb.ndarray.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, N, 1, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:ndarray:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_nta_ntb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_nta_ntb.js
new file mode 100644
index 000000000000..1e71d1dea746
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_nta_ntb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=false,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_nta_tb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_nta_tb.js
new file mode 100644
index 000000000000..dc2818bcdff6
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_nta_tb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'row-major', 'upper', 'no-transpose', 'transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=false,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_ta_ntb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_ta_ntb.js
new file mode 100644
index 000000000000..51bb799a3d76
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_ta_ntb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'row-major', 'upper', 'transpose', 'no-transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=true,trans(B)=false,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_ta_tb.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_ta_tb.js
new file mode 100644
index 000000000000..c94c1e60a22f
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/benchmark/benchmark_row_major_ta_tb.js
@@ -0,0 +1,106 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
+var pow = require( '@stdlib/math/base/special/pow' );
+var floor = require( '@stdlib/math/base/special/floor' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float32'
+};
+
+
+// FUNCTIONS //
+
+/**
+* Creates a benchmark function.
+*
+* @private
+* @param {PositiveInteger} N - array dimension size
+* @returns {Function} benchmark function
+*/
+function createBenchmark( N ) {
+ var A = uniform( N*N, -10.0, 10.0, options );
+ var B = uniform( N*N, -10.0, 10.0, options );
+ var C = uniform( N*N, -10.0, 10.0, options );
+ return benchmark;
+
+ /**
+ * Benchmark function.
+ *
+ * @private
+ * @param {Benchmark} b - benchmark instance
+ */
+ function benchmark( b ) {
+ var z;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ z = sgemmtr( 'row-major', 'upper', 'transpose', 'transpose', N, N, N, 1.0, A, N, B, N, 1.0, C, N );
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ }
+ b.toc();
+ if ( isnanf( z[ i%z.length ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+ }
+}
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var len;
+ var min;
+ var max;
+ var f;
+ var i;
+
+ min = 1; // 10^min
+ max = 4; // 10^max
+
+ for ( i = min; i <= max; i++ ) {
+ len = floor( pow( pow( 10, i ), 1.0/2.0 ) );
+ f = createBenchmark( len );
+ bench( format( '%s:uplo=upper,order(A)=row-major,order(B)=row-major,order(C)=row-major,trans(A)=true,trans(B)=true,size=%d', pkg, (len*len) ), f );
+ }
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/repl.txt
new file mode 100644
index 000000000000..be08f2f84158
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/repl.txt
@@ -0,0 +1,187 @@
+
+{{alias}}( ord, uplo, ta, tb, M, N, K, α, A, lda, B, ldb, β, C, ldc )
+ Performs the matrix-matrix operation
+ `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X`
+ or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices,
+ with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an
+ `M` by `N` matrix, and only the elements in the upper or lower triangle of
+ `C` are updated.
+
+ Indexing is relative to the first index. To introduce an offset, use typed
+ array views.
+
+ If `M` or `N` is equal to `0`, the function returns `C` unchanged.
+
+ If `α` or `K` equals `0` and `β` equals `1`, the function returns `C`
+ unchanged.
+
+ Parameters
+ ----------
+ ord: string
+ Row-major (C-style) or column-major (Fortran-style) order.
+
+ uplo: string
+ Specifies whether to update the upper or lower triangular part of
+ `C`.
+
+ ta: string
+ Specifies whether `A` should be transposed, conjugate-transposed, or not
+ transposed.
+
+ tb: string
+ Specifies whether `B` should be transposed, conjugate-transposed, or not
+ transposed.
+
+ M: integer
+ Number of rows in the matrix `op(A)` and in the matrix `C`.
+
+ N: integer
+ Number of columns in the matrix `op(B)` and in the matrix `C`.
+
+ K: integer
+ Number of columns in the matrix `op(A)` and number of rows in the matrix
+ `op(B)`.
+
+ α: number
+ Scalar constant.
+
+ A: Float32Array
+ First matrix.
+
+ lda: integer
+ Stride of the first dimension of `A` (a.k.a., leading dimension of the
+ matrix `A`).
+
+ B: Float32Array
+ Second matrix.
+
+ ldb: integer
+ Stride of the first dimension of `B` (a.k.a., leading dimension of the
+ matrix `B`).
+
+ β: number
+ Scalar constant.
+
+ C: Float32Array
+ Third matrix.
+
+ ldc: integer
+ Stride of the first dimension of `C` (a.k.a., leading dimension of the
+ matrix `C`).
+
+ Returns
+ -------
+ C: Float32Array
+ Third matrix.
+
+ Examples
+ --------
+ // Standard usage:
+ > var A = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] );
+ > var B = new {{alias:@stdlib/array/float32}}( [ 1.0, 1.0, 0.0, 1.0 ] );
+ > var C = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] );
+ > var ord = 'row-major';
+ > var uplo = 'upper';
+ > var ta = 'no-transpose';
+ > var tb = 'no-transpose';
+ > {{alias}}( ord, uplo, ta, tb, 2, 2, 2, 1.0, A, 2, B, 2, 1.0, C, 2 )
+ [ 2.0, 5.0, 3.0, 11.0 ]
+
+
+{{alias}}.ndarray(uplo,ta,tb, M,N,K,α,A,sa1,sa2,oa, B,sb1,sb2,ob,β,C,sc1,sc2,oc)
+ Performs the matrix-matrix operation
+ `uplo(C) = uplo(α*op(A)*op(B) + β*C)`, using alternative indexing
+ semantics and where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α`
+ and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M`
+ by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix,
+ and only the elements in the upper or lower triangle of `C` are updated.
+
+ While typed array views mandate a view offset based on the underlying
+ buffer, the offset parameters support indexing semantics based on starting
+ indices.
+
+ Parameters
+ ----------
+ uplo: string
+ Specifies whether to update the upper or lower triangular part of
+ `C`.
+
+ ta: string
+ Specifies whether `A` should be transposed, conjugate-transposed, or not
+ transposed.
+
+ tb: string
+ Specifies whether `B` should be transposed, conjugate-transposed, or not
+ transposed.
+
+ M: integer
+ Number of rows in the matrix `op(A)` and in the matrix `C`.
+
+ N: integer
+ Number of columns in the matrix `op(B)` and in the matrix `C`.
+
+ K: integer
+ Number of columns in the matrix `op(A)` and number of rows in the matrix
+ `op(B)`.
+
+ α: number
+ Scalar constant.
+
+ A: Float32Array
+ First matrix.
+
+ sa1: integer
+ Stride of the first dimension of `A`.
+
+ sa2: integer
+ Stride of the second dimension of `A`.
+
+ oa: integer
+ Starting index for `A`.
+
+ B: Float32Array
+ Second matrix.
+
+ sb1: integer
+ Stride of the first dimension of `B`.
+
+ sb2: integer
+ Stride of the second dimension of `B`.
+
+ ob: integer
+ Starting index for `B`.
+
+ β: number
+ Scalar constant.
+
+ C: Float32Array
+ Third matrix.
+
+ sc1: integer
+ Stride of the first dimension of `C`.
+
+ sc2: integer
+ Stride of the second dimension of `C`.
+
+ oc: integer
+ Starting index for `C`.
+
+ Returns
+ -------
+ C: Float32Array
+ Third matrix.
+
+ Examples
+ --------
+ > var A = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] );
+ > var B = new {{alias:@stdlib/array/float32}}( [ 1.0, 1.0, 0.0, 1.0 ] );
+ > var C = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] );
+ > var uplo = 'upper';
+ > var ta = 'no-transpose';
+ > var tb = 'no-transpose';
+ > {{alias}}.ndarray(uplo,ta,tb, 2,2,2, 1.0, A,2,1,0, B,2,1,0, 1.0, C,2,1,0 )
+ [ 2.0, 5.0, 3.0, 11.0 ]
+
+ See Also
+ --------
+
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/types/index.d.ts
new file mode 100644
index 000000000000..180cc464286e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/types/index.d.ts
@@ -0,0 +1,144 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+// TypeScript Version: 4.1
+
+///
+
+import { Layout, MatrixTriangle, TransposeOperation } from '@stdlib/types/blas';
+
+/**
+* Interface describing `sgemmtr`.
+*/
+interface Routine {
+ /**
+ * Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+ *
+ * @param order - storage layout
+ * @param uplo - specifies whether to update the upper or lower triangular part of `C`
+ * @param transA - specifies whether `A` should be transposed, conjugate-transposed, or not transposed
+ * @param transB - specifies whether `B` should be transposed, conjugate-transposed, or not transposed
+ * @param M - number of rows in the matrix `op(A)` and in the matrix `C`
+ * @param N - number of columns in the matrix `op(B)` and in the matrix `C`
+ * @param K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+ * @param alpha - scalar constant
+ * @param A - first matrix
+ * @param LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`)
+ * @param B - second matrix
+ * @param LDB - stride of the first dimension of `B` (a.k.a., leading dimension of the matrix `B`)
+ * @param beta - scalar constant
+ * @param C - third matrix
+ * @param LDC - stride of the first dimension of `C` (a.k.a., leading dimension of the matrix `C`)
+ * @returns `C`
+ *
+ * @example
+ * var Float32Array = require( '@stdlib/array/float32' );
+ *
+ * var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+ * var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+ * var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+ *
+ * sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, B, 2, 1.0, C, 2 );
+ * // C => [ 2.0, 5.0, 3.0, 11.0 ]
+ */
+ ( order: Layout, uplo: MatrixTriangle, transA: TransposeOperation, transB: TransposeOperation, M: number, N: number, K: number, alpha: number, A: Float32Array, LDA: number, B: Float32Array, LDB: number, beta: number, C: Float32Array, LDC: number ): Float32Array;
+
+ /**
+ * Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)`, using alternative indexing semantics and where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+ *
+ * @param uplo - specifies whether to update the upper or lower triangular part of `C`
+ * @param transA - specifies whether `A` should be transposed, conjugate-transposed, or not transposed
+ * @param transB - specifies whether `B` should be transposed, conjugate-transposed, or not transposed
+ * @param M - number of rows in the matrix `op(A)` and in the matrix `C`
+ * @param N - number of columns in the matrix `op(B)` and in the matrix `C`
+ * @param K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+ * @param alpha - scalar constant
+ * @param A - first matrix
+ * @param strideA1 - stride of the first dimension of `A`
+ * @param strideA2 - stride of the second dimension of `A`
+ * @param offsetA - starting index for `A`
+ * @param B - second matrix
+ * @param strideB1 - stride of the first dimension of `B`
+ * @param strideB2 - stride of the second dimension of `B`
+ * @param offsetB - starting index for `B`
+ * @param beta - scalar constant
+ * @param C - third matrix
+ * @param strideC1 - stride of the first dimension of `C`
+ * @param strideC2 - stride of the second dimension of `C`
+ * @param offsetC - starting index for `C`
+ * @returns `C`
+ *
+ * @example
+ * var Float32Array = require( '@stdlib/array/float32' );
+ *
+ * var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+ * var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+ * var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+ *
+ * sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, 1, 0, B, 2, 1, 0, 1.0, C, 2, 1, 0 );
+ * // C => [ 2.0, 5.0, 3.0, 11.0 ]
+ */
+ ndarray( uplo: MatrixTriangle, transA: TransposeOperation, transB: TransposeOperation, M: number, N: number, K: number, alpha: number, A: Float32Array, strideA1: number, strideA2: number, offsetA: number, B: Float32Array, strideB1: number, strideB2: number, offsetB: number, beta: number, C: Float32Array, strideC1: number, strideC2: number, offsetC: number ): Float32Array;
+}
+
+/**
+* Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+*
+* @param order - storage layout
+* @param uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param transA - specifies whether `A` should be transposed, conjugate-transposed, or not transposed
+* @param transB - specifies whether `B` should be transposed, conjugate-transposed, or not transposed
+* @param M - number of rows in the matrix `op(A)` and in the matrix `C`
+* @param N - number of columns in the matrix `op(B)` and in the matrix `C`
+* @param K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+* @param alpha - scalar constant
+* @param A - first matrix
+* @param LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`)
+* @param B - second matrix
+* @param LDB - stride of the first dimension of `B` (a.k.a., leading dimension of the matrix `B`)
+* @param beta - scalar constant
+* @param C - third matrix
+* @param LDC - stride of the first dimension of `C` (a.k.a., leading dimension of the matrix `C`)
+* @returns `C`
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var A = new Float32Array( [ 1.0, 3.0, 2.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 0.0, 1.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 3.0, 2.0, 4.0 ] );
+*
+* sgemmtr( 'column-major', 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, B, 2, 1.0, C, 2 );
+* // C => [ 2.0, 3.0, 5.0, 11.0 ]
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var A = new Float32Array( [ 1.0, 3.0, 2.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 0.0, 1.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 3.0, 2.0, 4.0 ] );
+*
+* sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 1, 2, 0, B, 1, 2, 0, 1.0, C, 1, 2, 0 );
+* // C => [ 2.0, 3.0, 5.0, 11.0 ]
+*/
+declare var sgemmtr: Routine;
+
+
+// EXPORTS //
+
+export = sgemmtr;
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/types/test.ts
new file mode 100644
index 000000000000..6e9e1bdb490d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/docs/types/test.ts
@@ -0,0 +1,653 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import sgemmtr = require( './index' );
+
+
+// TESTS //
+
+// The function returns a Float32Array...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectType Float32Array
+}
+
+// The compiler throws an error if the function is provided a first argument which is not a string...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 10, 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( true, 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( false, 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( null, 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( undefined, 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( [], 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( {}, 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( ( A: number ): number => A, 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a second argument which is not a string...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 10, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', true, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', false, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', null, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', undefined, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', [ '1' ], 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', {}, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', ( A: number ): number => A, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a third argument which is not a string...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 10, 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', true, 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', false, 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', null, 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', undefined, 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', [ '1' ], 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', {}, 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', ( A: number ): number => A, 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fourth argument which is not a string...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 10, 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', true, 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', false, 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', null, 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', undefined, 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', [ '1' ], 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', {}, 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', ( A: number ): number => A, 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fifth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', '10', 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', true, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', false, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', null, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', undefined, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', [], 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', {}, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', ( A: number ): number => A, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a sixth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, '10', 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, true, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, false, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, null, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, undefined, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, [], 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, {}, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, ( A: number ): number => A, 5, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a seventh argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, '10', 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, true, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, false, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, null, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, undefined, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, [], 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, {}, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, ( A: number ): number => A, 1.0, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an eighth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, '10', A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, true, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, false, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, null, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, undefined, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, [], A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, {}, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, ( A: number ): number => A, A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a ninth argument which is not a Float32Array...
+{
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, 10, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, '10', 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, true, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, false, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, null, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, undefined, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, [ '1' ], 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, {}, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, ( A: number ): number => A, 5, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a tenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, '10', B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, true, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, false, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, null, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, undefined, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, [], B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, {}, B, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, ( A: number ): number => A, B, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an eleventh argument which is not a Float32Array...
+{
+ const A = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 10, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, '10', 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, true, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, false, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, null, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, undefined, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, [ '1' ], 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, {}, 5, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, ( A: number ): number => A, 5, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a twelfth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, '10', 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, true, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, false, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, null, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, undefined, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, [], 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, {}, 1.0, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, ( A: number ): number => A, 1.0, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a thirteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, '10', C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, true, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, false, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, null, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, undefined, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, [], C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, {}, C, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, ( A: number ): number => A, C, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fourteenth argument which is not a Float32Array...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, 10, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, '10', 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, true, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, false, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, null, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, undefined, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, [ '1' ], 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, {}, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, ( A: number ): number => A, 5 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fifteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, '10' ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, true ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, false ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, null ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, undefined ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, [] ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, {} ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, ( A: number ): number => A ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an unsupported number of arguments...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr(); // $ExpectError
+ sgemmtr( 'row-major' ); // $ExpectError
+ sgemmtr( 'row-major', 'upper' ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose' ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose' ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0 ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C ); // $ExpectError
+ sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, B, 5, 1.0, C, 5, 10 ); // $ExpectError
+}
+
+// Attached to main export is an `ndarray` method which returns a Float32Array...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectType Float32Array
+}
+
+// The compiler throws an error if the function is provided a first argument which is not a string...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 10, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( true, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( false, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( null, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( undefined, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( [ '1' ], 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( {}, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( ( A: number ): number => A, 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a second argument which is not a string...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 10, 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', true, 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', false, 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', null, 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', undefined, 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', [ '1' ], 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', {}, 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', ( A: number ): number => A, 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a third argument which is not a string...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 10, 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', true, 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', false, 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', null, 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', undefined, 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', [ '1' ], 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', {}, 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', ( A: number ): number => A, 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fourth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', '10', 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', true, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', false, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', null, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', undefined, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', [], 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', {}, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', ( A: number ): number => A, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fifth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, '10', 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, true, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, false, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, null, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, undefined, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, [], 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, {}, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, ( A: number ): number => A, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a sixth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, '10', 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, true, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, false, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, null, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, undefined, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, [], 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, {}, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, ( A: number ): number => A, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a seventh argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, '10', A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, true, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, false, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, null, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, undefined, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, [], A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, {}, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, ( A: number ): number => A, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an eighth argument which is not a Float32Array...
+{
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, 10, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, '10', 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, true, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, false, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, null, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, undefined, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, [ '1' ], 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, {}, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, ( A: number ): number => A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a ninth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, '10', 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, true, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, false, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, null, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, undefined, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, [], 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, {}, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, ( A: number ): number => A, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a tenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, '10', 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, true, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, false, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, null, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, undefined, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, [], 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, {}, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, ( A: number ): number => A, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an eleventh argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, '10', B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, true, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, false, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, null, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, undefined, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, [], B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, {}, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, ( A: number ): number => A, B, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a twelfth argument which is not a Float32Array...
+{
+ const A = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, 10, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, '10', 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, true, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, false, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, null, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, undefined, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, [ '1' ], 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, {}, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, ( A: number ): number => A, 5, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a thirteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, '10', 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, true, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, false, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, null, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, undefined, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, [], 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, {}, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, ( A: number ): number => A, 1, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fourteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, '10', 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, true, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, false, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, null, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, undefined, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, [], 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, {}, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, ( A: number ): number => A, 0, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a fifteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, '10', 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, true, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, false, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, null, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, undefined, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, [], 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, {}, 1.0, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, ( A: number ): number => A, 1.0, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a sixteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, '10', C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, true, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, false, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, null, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, undefined, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, [], C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, {}, C, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, ( A: number ): number => A, C, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a seventeenth argument which is not a Float32Array...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, 10, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, '10', 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, true, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, false, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, null, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, undefined, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, [ '1' ], 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, {}, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, ( A: number ): number => A, 5, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an eighteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, '10', 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, true, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, false, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, null, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, undefined, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, [], 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, {}, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, ( A: number ): number => A, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a nineteenth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, '10', 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, true, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, false, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, null, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, undefined, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, [], 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, {}, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, ( A: number ): number => A, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a twentieth argument which is not a number...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, '10' ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, true ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, false ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, null ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, undefined ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, [] ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, {} ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, ( A: number ): number => A ); // $ExpectError
+}
+
+// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments...
+{
+ const A = new Float32Array( 25 );
+ const B = new Float32Array( 25 );
+ const C = new Float32Array( 25 );
+
+ sgemmtr.ndarray(); // $ExpectError
+ sgemmtr.ndarray( 'upper' ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose' ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose' ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1 ); // $ExpectError
+ sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 5, 5, 5, 1.0, A, 5, 1, 0, B, 5, 1, 0, 1.0, C, 5, 1, 0, 10 ); // $ExpectError
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/examples/index.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/examples/index.js
new file mode 100644
index 000000000000..0cbbef6a11f3
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/examples/index.js
@@ -0,0 +1,40 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
+var sgemmtr = require( './../lib' );
+
+var opts = {
+ 'dtype': 'float32'
+};
+
+var M = 3;
+var N = 4;
+var K = 2;
+
+var A = discreteUniform( M*K, 0, 10, opts ); // 3x2
+var B = discreteUniform( K*N, 0, 10, opts ); // 2x4
+var C = discreteUniform( M*N, 0, 10, opts ); // 3x4
+
+sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', M, N, K, 1.0, A, K, B, N, 1.0, C, N );
+console.log( C );
+
+sgemmtr.ndarray( 'lower', 'no-transpose', 'no-transpose', M, N, K, 1.0, A, K, 1, 0, B, N, 1, 0, 1.0, C, N, 1, 0 );
+console.log( C );
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/base.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/base.js
new file mode 100644
index 000000000000..c8a44e6019ee
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/base.js
@@ -0,0 +1,567 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* eslint-disable max-len, max-params */
+
+'use strict';
+
+// MODULES //
+
+var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' );
+var sdot = require( '@stdlib/blas/base/sdot' ).ndarray;
+var blockSize = require( '@stdlib/ndarray/base/unary-tiling-block-size' );
+var f32 = require( '@stdlib/number/float64/base/to-float32' );
+
+
+// VARIABLES //
+
+var bsize = blockSize( 'float32', 'float32' ); // TODO: consider using a larger block size
+
+
+// FUNCTIONS //
+
+/**
+* Tests whether a provided string indicates to transpose a matrix.
+*
+* @private
+* @param {string} str - input string
+* @returns {boolean} boolean indicating whether to transpose a matrix
+*
+* @example
+* var bool = isTransposed( 'transpose' );
+* // returns true
+*
+* @example
+* var bool = isTransposed( 'conjugate-transpose' );
+* // returns true
+*
+* @example
+* var bool = isTransposed( 'no-transpose' );
+* // returns false
+*/
+function isTransposed( str ) { // TODO: consider moving to a separate helper utility package
+ return ( str !== 'no-transpose' );
+}
+
+/**
+* Fills the referenced (upper or lower) triangle of a matrix with zeros.
+*
+* @private
+* @param {string} uplo - specifies whether to reference the upper or lower triangular part of `X`
+* @param {NonNegativeInteger} M - number of rows
+* @param {NonNegativeInteger} N - number of columns
+* @param {Float32Array} X - matrix to fill
+* @param {integer} strideX1 - stride of the first dimension of `X`
+* @param {integer} strideX2 - stride of the second dimension of `X`
+* @param {NonNegativeInteger} offsetX - starting index for `X`
+* @returns {Float32Array} input matrix
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var X = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
+*
+* zeros( 'upper', 2, 3, X, 3, 1, 0 );
+* // X => [ 0.0, 0.0, 0.0, 4.0, 0.0, 0.0 ]
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var X = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
+*
+* zeros( 'upper', 2, 3, X, 1, 2, 0 );
+* // X => [ 0.0, 2.0, 0.0, 0.0, 0.0, 0.0 ]
+*/
+function zeros( uplo, M, N, X, strideX1, strideX2, offsetX ) { // TODO: consider moving to a separate package
+ var dx0;
+ var hi;
+ var lo;
+ var i0;
+ var i1;
+ var ix;
+
+ if ( isRowMajor( [ strideX1, strideX2 ] ) ) {
+ // For row-major matrices, the row index is the slow (outer) index and the column index is the fast (inner) index...
+ dx0 = strideX2;
+ for ( i1 = 0; i1 < M; i1++ ) {
+ if ( uplo === 'upper' ) {
+ lo = i1;
+ hi = N;
+ } else {
+ lo = 0;
+ hi = ( i1+1 < N ) ? i1+1 : N;
+ }
+ ix = offsetX + ( i1*strideX1 ) + ( lo*strideX2 );
+ for ( i0 = lo; i0 < hi; i0++ ) {
+ X[ ix ] = 0.0;
+ ix += dx0;
+ }
+ }
+ } else { // column-major
+ // For column-major matrices, the column index is the slow (outer) index and the row index is the fast (inner) index...
+ dx0 = strideX1;
+ for ( i1 = 0; i1 < N; i1++ ) {
+ if ( uplo === 'upper' ) {
+ lo = 0;
+ hi = ( i1+1 < M ) ? i1+1 : M;
+ } else {
+ lo = i1;
+ hi = M;
+ }
+ ix = offsetX + ( i1*strideX2 ) + ( lo*strideX1 );
+ for ( i0 = lo; i0 < hi; i0++ ) {
+ X[ ix ] = 0.0;
+ ix += dx0;
+ }
+ }
+ }
+ return X;
+}
+
+/**
+* Scales each element in the referenced (upper or lower) triangle of a matrix by a scalar `β`.
+*
+* @private
+* @param {string} uplo - specifies whether to reference the upper or lower triangular part of `X`
+* @param {NonNegativeInteger} M - number of rows
+* @param {NonNegativeInteger} N - number of columns
+* @param {number} beta - scalar constant
+* @param {Float32Array} X - matrix to fill
+* @param {integer} strideX1 - stride of the first dimension of `X`
+* @param {integer} strideX2 - stride of the second dimension of `X`
+* @param {NonNegativeInteger} offsetX - starting index for `X`
+* @returns {Float32Array} input matrix
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var X = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
+*
+* scal( 'upper', 2, 3, 5.0, X, 3, 1, 0 );
+* // X => [ 5.0, 10.0, 15.0, 4.0, 25.0, 30.0 ]
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var X = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );
+*
+* scal( 'upper', 2, 3, 5.0, X, 1, 2, 0 );
+* // X => [ 5.0, 2.0, 15.0, 20.0, 25.0, 30.0 ]
+*/
+function scal( uplo, M, N, beta, X, strideX1, strideX2, offsetX ) { // TODO: consider moving to a separate package
+ var dx0;
+ var hi;
+ var lo;
+ var i0;
+ var i1;
+ var ix;
+
+ if ( isRowMajor( [ strideX1, strideX2 ] ) ) {
+ // For row-major matrices, the row index is the slow (outer) index and the column index is the fast (inner) index...
+ dx0 = strideX2;
+ for ( i1 = 0; i1 < M; i1++ ) {
+ if ( uplo === 'upper' ) {
+ lo = i1;
+ hi = N;
+ } else {
+ lo = 0;
+ hi = ( i1+1 < N ) ? i1+1 : N;
+ }
+ ix = offsetX + ( i1*strideX1 ) + ( lo*strideX2 );
+ for ( i0 = lo; i0 < hi; i0++ ) {
+ X[ ix ] *= beta;
+ ix += dx0;
+ }
+ }
+ } else { // column-major
+ // For column-major matrices, the column index is the slow (outer) index and the row index is the fast (inner) index...
+ dx0 = strideX1;
+ for ( i1 = 0; i1 < N; i1++ ) {
+ if ( uplo === 'upper' ) {
+ lo = 0;
+ hi = ( i1+1 < M ) ? i1+1 : M;
+ } else {
+ lo = i1;
+ hi = M;
+ }
+ ix = offsetX + ( i1*strideX2 ) + ( lo*strideX1 );
+ for ( i0 = lo; i0 < hi; i0++ ) {
+ X[ ix ] *= beta;
+ ix += dx0;
+ }
+ }
+ }
+ return X;
+}
+
+/**
+* Performs matrix multiplication, updating only the referenced (upper or lower) triangle of `C`, using a naive algorithm which is cache-optimal when `A` is row-major and `B` is column-major.
+*
+* @private
+* @param {string} uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param {NonNegativeInteger} M - number of rows in the matrix `op(A)` and in the matrix `C`
+* @param {NonNegativeInteger} N - number of columns in the matrix `op(B)` and in the matrix `C`
+* @param {NonNegativeInteger} K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+* @param {number} alpha - scalar constant
+* @param {Float32Array} A - first matrix
+* @param {integer} strideA1 - stride of the first dimension of `A`
+* @param {integer} strideA2 - stride of the second dimension of `A`
+* @param {NonNegativeInteger} offsetA - starting index for `A`
+* @param {Float32Array} B - second matrix
+* @param {integer} strideB1 - stride of the first dimension of `B`
+* @param {integer} strideB2 - stride of the second dimension of `B`
+* @param {NonNegativeInteger} offsetB - starting index for `B`
+* @param {Float32Array} C - third matrix
+* @param {integer} strideC1 - stride of the first dimension of `C`
+* @param {integer} strideC2 - stride of the second dimension of `C`
+* @param {NonNegativeInteger} offsetC - starting index for `C`
+* @returns {Float32Array} `C`
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+*
+* naive( 'upper', 2, 2, 2, 1.0, A, 2, 1, 0, B, 2, 1, 0, C, 2, 1, 0 );
+* // C => [ 2.0, 5.0, 3.0, 11.0 ]
+*/
+function naive( uplo, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB, C, strideC1, strideC2, offsetC ) {
+ var da0;
+ var db0;
+ var dc0;
+ var hi;
+ var lo;
+ var i0;
+ var i1;
+ var ia;
+ var ib;
+ var ic;
+
+ // Note on variable naming convention: da#, db#, dc# where # corresponds to the loop number, with `0` being the innermost loop...
+
+ da0 = strideA2;
+ db0 = strideB1;
+ dc0 = strideC2;
+
+ for ( i1 = 0; i1 < M; i1++ ) {
+ if ( uplo === 'upper' ) {
+ lo = i1;
+ hi = N;
+ } else {
+ lo = 0;
+ hi = ( i1+1 < N ) ? i1+1 : N;
+ }
+ if ( lo >= hi ) {
+ continue;
+ }
+ ia = offsetA + ( i1*strideA1 );
+ ib = offsetB + ( lo*strideB2 );
+ ic = offsetC + ( i1*strideC1 ) + ( lo*strideC2 );
+ for ( i0 = lo; i0 < hi; i0++ ) {
+ C[ ic ] += f32( alpha * sdot( K, A, da0, ia, B, db0, ib ) );
+ ic += dc0;
+ ib += strideB2;
+ }
+ }
+ return C;
+}
+
+/**
+* Returns the (inclusive) lower column bound of the referenced triangle within a column block for a given row.
+*
+* @private
+* @param {string} uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param {integer} gr - global row index
+* @param {NonNegativeInteger} j0 - starting column index of the current column block
+* @returns {NonNegativeInteger} lower column bound
+*/
+function boundLo( uplo, gr, j0 ) {
+ var lo;
+ if ( uplo === 'upper' ) {
+ lo = gr - j0;
+ if ( lo < 0 ) {
+ return 0;
+ }
+ return lo;
+ }
+ return 0;
+}
+
+/**
+* Returns the (exclusive) upper column bound of the referenced triangle within a column block for a given row.
+*
+* @private
+* @param {string} uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param {integer} gr - global row index
+* @param {NonNegativeInteger} j0 - starting column index of the current column block
+* @param {NonNegativeInteger} s0 - number of columns in the current column block
+* @returns {NonNegativeInteger} upper column bound
+*/
+function boundHi( uplo, gr, j0, s0 ) {
+ var hi;
+ if ( uplo === 'upper' ) {
+ return s0;
+ }
+ hi = ( gr-j0 ) + 1;
+ if ( hi > s0 ) {
+ return s0;
+ }
+ return hi;
+}
+
+/**
+* Performs matrix multiplication, updating only the referenced (upper or lower) triangle of `C`, using loop tiling.
+*
+* @private
+* @param {string} uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param {NonNegativeInteger} M - number of rows in the matrix `op(A)` and in the matrix `C`
+* @param {NonNegativeInteger} N - number of columns in the matrix `op(B)` and in the matrix `C`
+* @param {NonNegativeInteger} K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+* @param {number} alpha - scalar constant
+* @param {Float32Array} A - first matrix
+* @param {integer} strideA1 - stride of the first dimension of `A`
+* @param {integer} strideA2 - stride of the second dimension of `A`
+* @param {NonNegativeInteger} offsetA - starting index for `A`
+* @param {Float32Array} B - second matrix
+* @param {integer} strideB1 - stride of the first dimension of `B`
+* @param {integer} strideB2 - stride of the second dimension of `B`
+* @param {NonNegativeInteger} offsetB - starting index for `B`
+* @param {Float32Array} C - third matrix
+* @param {integer} strideC1 - stride of the first dimension of `C`
+* @param {integer} strideC2 - stride of the second dimension of `C`
+* @param {NonNegativeInteger} offsetC - starting index for `C`
+* @returns {Float32Array} `C`
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+*
+* blocked( 'upper', 2, 2, 2, 1.0, A, 2, 1, 0, B, 2, 1, 0, C, 2, 1, 0 );
+* // C => [ 2.0, 5.0, 3.0, 11.0 ]
+*/
+function blocked( uplo, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB, C, strideC1, strideC2, offsetC ) {
+ var da0;
+ var db0;
+ var dc0;
+ var oa1;
+ var ob0;
+ var oc0;
+ var oc1;
+ var S0;
+ var S1;
+ var s0;
+ var s1;
+ var sk;
+ var hi;
+ var lo;
+ var gr;
+ var i0;
+ var i1;
+ var j0;
+ var j1;
+ var ia;
+ var ib;
+ var ic;
+ var oa;
+ var ob;
+ var k;
+
+ // Note on variable naming convention: S#, da#, db#, dc#, i#, j# where # corresponds to the loop number, with `0` being the innermost loop...
+
+ S0 = N;
+ S1 = M;
+
+ // Define increments for the innermost loop:
+ da0 = strideA2;
+ db0 = strideB1;
+ dc0 = strideC2;
+
+ // Iterate over blocks...
+ for ( j1 = S1; j1 > 0; ) {
+ if ( j1 < bsize ) {
+ s1 = j1;
+ j1 = 0;
+ } else {
+ s1 = bsize;
+ j1 -= bsize;
+ }
+ oa1 = offsetA + ( j1*strideA1 );
+ oc1 = offsetC + ( j1*strideC1 );
+ for ( j0 = S0; j0 > 0; ) {
+ if ( j0 < bsize ) {
+ s0 = j0;
+ j0 = 0;
+ } else {
+ s0 = bsize;
+ j0 -= bsize;
+ }
+ // Skip blocks which lie entirely outside the referenced triangle...
+ if (
+ ( uplo === 'upper' && ( j0+s0 ) <= j1 ) ||
+ ( uplo === 'lower' && ( j1+s1 ) <= j0 )
+ ) {
+ continue;
+ }
+ ob0 = offsetB + ( j0*strideB2 );
+ oc0 = oc1 + ( j0*strideC2 ); // index offset for `C` for the current block
+ for ( k = K; k > 0; ) {
+ if ( k < bsize ) {
+ sk = k;
+ k = 0;
+ } else {
+ sk = bsize;
+ k -= bsize;
+ }
+ oa = oa1 + ( k*strideA2 );
+ ob = ob0 + ( k*strideB1 );
+ for ( i1 = 0; i1 < s1; i1++ ) {
+ gr = j1 + i1; // global row index
+ lo = boundLo( uplo, gr, j0 );
+ hi = boundHi( uplo, gr, j0, s0 );
+ if ( lo >= hi ) {
+ continue;
+ }
+ ia = oa + ( i1*strideA1 );
+ ib = ob + ( lo*strideB2 );
+ ic = oc0 + ( i1*strideC1 ) + ( lo*strideC2 );
+ for ( i0 = lo; i0 < hi; i0++ ) {
+ C[ ic ] += f32( alpha * sdot( sk, A, da0, ia, B, db0, ib ) );
+ ic += dc0;
+ ib += strideB2;
+ }
+ }
+ }
+ }
+ }
+ return C;
+}
+
+
+// MAIN //
+
+/**
+* Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+*
+* @private
+* @param {string} uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param {string} transA - specifies whether `A` should be transposed, conjugate-transposed, or not transposed
+* @param {string} transB - specifies whether `B` should be transposed, conjugate-transposed, or not transposed
+* @param {NonNegativeInteger} M - number of rows in the matrix `op(A)` and in the matrix `C`
+* @param {NonNegativeInteger} N - number of columns in the matrix `op(B)` and in the matrix `C`
+* @param {NonNegativeInteger} K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+* @param {number} alpha - scalar constant
+* @param {Float32Array} A - first matrix
+* @param {integer} strideA1 - stride of the first dimension of `A`
+* @param {integer} strideA2 - stride of the second dimension of `A`
+* @param {NonNegativeInteger} offsetA - starting index for `A`
+* @param {Float32Array} B - second matrix
+* @param {integer} strideB1 - stride of the first dimension of `B`
+* @param {integer} strideB2 - stride of the second dimension of `B`
+* @param {NonNegativeInteger} offsetB - starting index for `B`
+* @param {number} beta - scalar constant
+* @param {Float32Array} C - third matrix
+* @param {integer} strideC1 - stride of the first dimension of `C`
+* @param {integer} strideC2 - stride of the second dimension of `C`
+* @param {NonNegativeInteger} offsetC - starting index for `C`
+* @returns {Float32Array} `C`
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+*
+* sgemmtr( 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, 1, 0, B, 2, 1, 0, 1.0, C, 2, 1, 0 );
+* // C => [ 2.0, 5.0, 3.0, 11.0 ]
+*/
+function sgemmtr( uplo, transA, transB, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB, beta, C, strideC1, strideC2, offsetC ) {
+ var isrma;
+ var isrmb;
+ var sa1;
+ var sa2;
+ var sb1;
+ var sb2;
+
+ if ( M === 0 || N === 0 || ( ( beta === 1.0 ) && ( ( alpha === 0.0 ) || ( K === 0 ) ) ) ) {
+ return C;
+ }
+ // Form: uplo(C) = β⋅uplo(C)
+ if ( beta === 0.0 ) {
+ C = zeros( uplo, M, N, C, strideC1, strideC2, offsetC );
+ } else if ( beta !== 1.0 ) {
+ C = scal( uplo, M, N, beta, C, strideC1, strideC2, offsetC );
+ }
+ // Check whether we can early return...
+ if ( alpha === 0.0 ) {
+ return C;
+ }
+ // Determine the memory layouts of `A` and `B`...
+ isrma = isRowMajor( [ strideA1, strideA2 ] );
+ isrmb = isRowMajor( [ strideB1, strideB2 ] );
+
+ // Check whether we can avoid loop tiling and simply use the "naive" (cache-optimal) algorithm for performing matrix multiplication...
+ if ( isrma ) { // orderA === 'row-major'
+ if ( !isTransposed( transA ) ) {
+ if ( !isrmb && !isTransposed( transB ) ) { // orderB === 'column-major'
+ // Form: uplo(C) = uplo(α⋅A⋅B + C)
+ return naive( uplo, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB, C, strideC1, strideC2, offsetC );
+ }
+ if ( isrmb && isTransposed( transB ) ) { // orderB === 'row-major'
+ // Form: uplo(C) = uplo(α⋅A⋅B^T + C)
+ return naive( uplo, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB2, strideB1, offsetB, C, strideC1, strideC2, offsetC );
+ }
+ }
+ } else if ( isTransposed( transA ) ) { // orderA === 'column-major'
+ if ( isrmb && isTransposed( transB ) ) { // orderB === 'row-major'
+ // Form: uplo(C) = uplo(α⋅A^T⋅B^T + C)
+ return naive( uplo, M, N, K, alpha, A, strideA2, strideA1, offsetA, B, strideB2, strideB1, offsetB, C, strideC1, strideC2, offsetC );
+ }
+ if ( !isrmb && !isTransposed( transB ) ) { // orderB === 'column-major'
+ // Form: uplo(C) = uplo(α⋅A^T⋅B + C)
+ return naive( uplo, M, N, K, alpha, A, strideA2, strideA1, offsetA, B, strideB1, strideB2, offsetB, C, strideC1, strideC2, offsetC );
+ }
+ }
+ // Swap strides to perform transposes...
+ if ( isTransposed( transA ) ) {
+ sa1 = strideA2;
+ sa2 = strideA1;
+ } else {
+ sa1 = strideA1;
+ sa2 = strideA2;
+ }
+ if ( isTransposed( transB ) ) {
+ sb1 = strideB2;
+ sb2 = strideB1;
+ } else {
+ sb1 = strideB1;
+ sb2 = strideB2;
+ }
+ // Perform loop tiling to promote cache locality:
+ return blocked( uplo, M, N, K, alpha, A, sa1, sa2, offsetA, B, sb1, sb2, offsetB, C, strideC1, strideC2, offsetC );
+}
+
+
+// EXPORTS //
+
+module.exports = sgemmtr;
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/index.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/index.js
new file mode 100644
index 000000000000..96946794afea
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/index.js
@@ -0,0 +1,72 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+/**
+* BLAS level 3 routine to perform the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+*
+* @module @stdlib/blas/base/sgemmtr
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+* var sgemmtr = require( '@stdlib/blas/base/sgemmtr' );
+*
+* var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+*
+* sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, B, 2, 1.0, C, 2 );
+* // C => [ 2.0, 5.0, 3.0, 11.0 ]
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+* var sgemmtr = require( '@stdlib/blas/base/sgemmtr' );
+*
+* var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+*
+* sgemmtr.ndarray( 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, 1, 0, B, 2, 1, 0, 1.0, C, 2, 1, 0 );
+* // C => [ 2.0, 5.0, 3.0, 11.0 ]
+*/
+
+// MODULES //
+
+var join = require( 'path' ).join;
+var tryRequire = require( '@stdlib/utils/try-require' );
+var isError = require( '@stdlib/assert/is-error' );
+var main = require( './main.js' );
+
+
+// MAIN //
+
+var sgemmtr;
+var tmp = tryRequire( join( __dirname, './native.js' ) );
+if ( isError( tmp ) ) {
+ sgemmtr = main;
+} else {
+ sgemmtr = tmp;
+}
+
+
+// EXPORTS //
+
+module.exports = sgemmtr;
+
+// exports: { "ndarray": "sgemmtr.ndarray" }
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/main.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/main.js
new file mode 100644
index 000000000000..851c7c45497f
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/main.js
@@ -0,0 +1,35 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
+var sgemmtr = require( './sgemmtr.js' );
+var ndarray = require( './ndarray.js' );
+
+
+// MAIN //
+
+setReadOnly( sgemmtr, 'ndarray', ndarray );
+
+
+// EXPORTS //
+
+module.exports = sgemmtr;
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/ndarray.js
new file mode 100644
index 000000000000..fa9b0cc3bdeb
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/ndarray.js
@@ -0,0 +1,112 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var resolveTrans = require( '@stdlib/blas/base/transpose-operation-resolve-str' );
+var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-str' );
+var format = require( '@stdlib/string/format' );
+var base = require( './base.js' );
+
+
+// MAIN //
+
+/**
+* Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+*
+* @param {(integer|string)} uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param {(integer|string)} transA - specifies whether `A` should be transposed, conjugate-transposed, or not transposed
+* @param {(integer|string)} transB - specifies whether `B` should be transposed, conjugate-transposed, or not transposed
+* @param {NonNegativeInteger} M - number of rows in the matrix `op(A)` and in the matrix `C`
+* @param {NonNegativeInteger} N - number of columns in the matrix `op(B)` and in the matrix `C`
+* @param {NonNegativeInteger} K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+* @param {number} alpha - scalar constant
+* @param {Float32Array} A - first matrix
+* @param {integer} strideA1 - stride of the first dimension of `A`
+* @param {integer} strideA2 - stride of the second dimension of `A`
+* @param {NonNegativeInteger} offsetA - starting index for `A`
+* @param {Float32Array} B - second matrix
+* @param {integer} strideB1 - stride of the first dimension of `B`
+* @param {integer} strideB2 - stride of the second dimension of `B`
+* @param {NonNegativeInteger} offsetB - starting index for `B`
+* @param {number} beta - scalar constant
+* @param {Float32Array} C - third matrix
+* @param {integer} strideC1 - stride of the first dimension of `C`
+* @param {integer} strideC2 - stride of the second dimension of `C`
+* @param {NonNegativeInteger} offsetC - starting index for `C`
+* @throws {TypeError} first argument must specify whether to reference the lower or upper triangular matrix
+* @throws {TypeError} second argument must be a valid transpose operation
+* @throws {TypeError} third argument must be a valid transpose operation
+* @throws {RangeError} fourth argument must be a nonnegative integer
+* @throws {RangeError} fifth argument must be a nonnegative integer
+* @throws {RangeError} sixth argument must be a nonnegative integer
+* @throws {RangeError} eighteenth argument must be non-zero
+* @throws {RangeError} nineteenth argument must be non-zero
+* @returns {Float32Array} `C`
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+*
+* sgemmtr( 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, 1, 0, B, 2, 1, 0, 1.0, C, 2, 1, 0 );
+* // C => [ 2.0, 5.0, 3.0, 11.0 ]
+*/
+function sgemmtr( uplo, transA, transB, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB, beta, C, strideC1, strideC2, offsetC ) { // eslint-disable-line max-params, max-len
+ var ta;
+ var tb;
+ var u;
+
+ u = resolveUplo( uplo );
+ if ( u === null ) {
+ throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) );
+ }
+ ta = resolveTrans( transA );
+ if ( ta === null ) {
+ throw new TypeError( format( 'invalid argument. Second argument must be a valid transpose operation. Value: `%s`.', transA ) );
+ }
+ tb = resolveTrans( transB );
+ if ( tb === null ) {
+ throw new TypeError( format( 'invalid argument. Third argument must be a valid transpose operation. Value: `%s`.', transB ) );
+ }
+ if ( M < 0 ) {
+ throw new RangeError( format( 'invalid argument. Fourth argument must be a nonnegative integer. Value: `%d`.', M ) );
+ }
+ if ( N < 0 ) {
+ throw new RangeError( format( 'invalid argument. Fifth argument must be a nonnegative integer. Value: `%d`.', N ) );
+ }
+ if ( K < 0 ) {
+ throw new RangeError( format( 'invalid argument. Sixth argument must be a nonnegative integer. Value: `%d`.', K ) );
+ }
+ if ( strideC1 === 0 ) {
+ throw new RangeError( format( 'invalid argument. Eighteenth argument must be non-zero. Value: `%d`.', strideC1 ) );
+ }
+ if ( strideC2 === 0 ) {
+ throw new RangeError( format( 'invalid argument. Nineteenth argument must be non-zero. Value: `%d`.', strideC2 ) );
+ }
+ return base( u, ta, tb, M, N, K, alpha, A, strideA1, strideA2, offsetA, B, strideB1, strideB2, offsetB, beta, C, strideC1, strideC2, offsetC ); // eslint-disable-line max-len
+}
+
+
+// EXPORTS //
+
+module.exports = sgemmtr;
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/sgemmtr.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/sgemmtr.js
new file mode 100644
index 000000000000..65b5d397e59d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/lib/sgemmtr.js
@@ -0,0 +1,168 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var max = require( '@stdlib/math/base/special/fast/max' );
+var isLayout = require( '@stdlib/blas/base/assert/is-layout' );
+var resolveTrans = require( '@stdlib/blas/base/transpose-operation-resolve-str' );
+var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-str' );
+var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major-string' );
+var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' );
+var format = require( '@stdlib/string/format' );
+var base = require( './base.js' );
+
+
+// MAIN //
+
+/**
+* Performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `α` and `β` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix, and only the elements in the upper or lower triangle of `C` are updated.
+*
+* @param {string} order - storage layout
+* @param {(integer|string)} uplo - specifies whether to update the upper or lower triangular part of `C`
+* @param {(integer|string)} transA - specifies whether `A` should be transposed, conjugate-transposed, or not transposed
+* @param {(integer|string)} transB - specifies whether `B` should be transposed, conjugate-transposed, or not transposed
+* @param {NonNegativeInteger} M - number of rows in the matrix `op(A)` and in the matrix `C`
+* @param {NonNegativeInteger} N - number of columns in the matrix `op(B)` and in the matrix `C`
+* @param {NonNegativeInteger} K - number of columns in the matrix `op(A)` and number of rows in the matrix `op(B)`
+* @param {number} alpha - scalar constant
+* @param {Float32Array} A - first matrix
+* @param {PositiveInteger} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`)
+* @param {Float32Array} B - second matrix
+* @param {PositiveInteger} LDB - stride of the first dimension of `B` (a.k.a., leading dimension of the matrix `B`)
+* @param {number} beta - scalar constant
+* @param {Float32Array} C - third matrix
+* @param {PositiveInteger} LDC - stride of the first dimension of `C` (a.k.a., leading dimension of the matrix `C`)
+* @throws {TypeError} first argument must be a valid order
+* @throws {TypeError} second argument must specify whether to reference the lower or upper triangular matrix
+* @throws {TypeError} third argument must be a valid transpose operation
+* @throws {TypeError} fourth argument must be a valid transpose operation
+* @throws {RangeError} fifth argument must be a nonnegative integer
+* @throws {RangeError} sixth argument must be a nonnegative integer
+* @throws {RangeError} seventh argument must be a nonnegative integer
+* @throws {RangeError} tenth argument must be greater than or equal to max(1,M) when `A` is not transposed and max(1,K) otherwise
+* @throws {RangeError} twelfth argument must be greater than or equal to max(1,K) when `B` is not transposed and max(1,N) otherwise
+* @throws {RangeError} fifteenth argument must be greater than or equal to max(1,M)
+* @returns {Float32Array} `C`
+*
+* @example
+* var Float32Array = require( '@stdlib/array/float32' );
+*
+* var A = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+* var B = new Float32Array( [ 1.0, 1.0, 0.0, 1.0 ] );
+* var C = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] );
+*
+* sgemmtr( 'row-major', 'upper', 'no-transpose', 'no-transpose', 2, 2, 2, 1.0, A, 2, B, 2, 1.0, C, 2 );
+* // C => [ 2.0, 5.0, 3.0, 11.0 ]
+*/
+function sgemmtr( order, uplo, transA, transB, M, N, K, alpha, A, LDA, B, LDB, beta, C, LDC ) { // eslint-disable-line max-params, max-len
+ var nrowsa;
+ var nrowsb;
+ var valc;
+ var isrm;
+ var iscm;
+ var sa1;
+ var sa2;
+ var sb1;
+ var sb2;
+ var sc1;
+ var sc2;
+ var ta;
+ var tb;
+ var u;
+
+ if ( !isLayout( order ) ) {
+ throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) );
+ }
+ u = resolveUplo( uplo );
+ if ( u === null ) {
+ throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) );
+ }
+ ta = resolveTrans( transA );
+ if ( ta === null ) {
+ throw new TypeError( format( 'invalid argument. Third argument must be a valid transpose operation. Value: `%s`.', transA ) );
+ }
+ tb = resolveTrans( transB );
+ if ( tb === null ) {
+ throw new TypeError( format( 'invalid argument. Fourth argument must be a valid transpose operation. Value: `%s`.', transB ) );
+ }
+ if ( M < 0 ) {
+ throw new RangeError( format( 'invalid argument. Fifth argument must be a nonnegative integer. Value: `%d`.', M ) );
+ }
+ if ( N < 0 ) {
+ throw new RangeError( format( 'invalid argument. Sixth argument must be a nonnegative integer. Value: `%d`.', N ) );
+ }
+ if ( K < 0 ) {
+ throw new RangeError( format( 'invalid argument. Seventh argument must be a nonnegative integer. Value: `%d`.', K ) );
+ }
+ isrm = isRowMajor( order );
+ iscm = isColumnMajor( order );
+ if (
+ ( isrm && transA === 'no-transpose' ) ||
+ ( iscm && transA === 'transpose' )
+ ) {
+ nrowsa = K;
+ } else {
+ nrowsa = M;
+ }
+ if (
+ ( isrm && transB === 'no-transpose' ) ||
+ ( iscm && transB === 'transpose' )
+ ) {
+ nrowsb = N;
+ } else {
+ nrowsb = K;
+ }
+ if ( LDA < max( 1, nrowsa ) ) {
+ throw new RangeError( format( 'invalid argument. Tenth argument must be greater than or equal to max(1,%d). Value: `%d`.', nrowsa, LDA ) );
+ }
+ if ( LDB < max( 1, nrowsb ) ) {
+ throw new RangeError( format( 'invalid argument. Twelfth argument must be greater than or equal to max(1,%d). Value: `%d`.', nrowsb, LDB ) );
+ }
+ if ( isrm ) {
+ valc = N;
+ } else {
+ valc = M;
+ }
+ if ( LDC < max( 1, valc ) ) {
+ throw new RangeError( format( 'invalid argument. Fifteenth argument must be greater than or equal to max(1,%d). Value: `%d`.', valc, LDC ) );
+ }
+ if ( iscm ) {
+ sa1 = 1;
+ sa2 = LDA;
+ sb1 = 1;
+ sb2 = LDB;
+ sc1 = 1;
+ sc2 = LDC;
+ } else { // order === 'row-major'
+ sa1 = LDA;
+ sa2 = 1;
+ sb1 = LDB;
+ sb2 = 1;
+ sc1 = LDC;
+ sc2 = 1;
+ }
+ return base( u, ta, tb, M, N, K, alpha, A, sa1, sa2, 0, B, sb1, sb2, 0, beta, C, sc1, sc2, 0 ); // eslint-disable-line max-len
+}
+
+
+// EXPORTS //
+
+module.exports = sgemmtr;
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/package.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/package.json
new file mode 100644
index 000000000000..4d4bf8a932c7
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "@stdlib/blas/base/sgemmtr",
+ "version": "0.0.0",
+ "description": "Perform the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` where `op(X)` is either `op(X) = X` or `op(X) = X^T`, and update only the upper or lower triangular part of `C`.",
+ "license": "Apache-2.0",
+ "author": {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ },
+ "contributors": [
+ {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ }
+ ],
+ "main": "./lib",
+ "directories": {
+ "benchmark": "./benchmark",
+ "doc": "./docs",
+ "example": "./examples",
+ "lib": "./lib",
+ "test": "./test"
+ },
+ "types": "./docs/types",
+ "scripts": {},
+ "homepage": "https://github.com/stdlib-js/stdlib",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/stdlib-js/stdlib.git"
+ },
+ "bugs": {
+ "url": "https://github.com/stdlib-js/stdlib/issues"
+ },
+ "dependencies": {},
+ "devDependencies": {},
+ "engines": {
+ "node": ">=0.10.0",
+ "npm": ">2.7.0"
+ },
+ "os": [
+ "aix",
+ "darwin",
+ "freebsd",
+ "linux",
+ "macos",
+ "openbsd",
+ "sunos",
+ "win32",
+ "windows"
+ ],
+ "keywords": [
+ "stdlib",
+ "stdmath",
+ "mathematics",
+ "math",
+ "blas",
+ "level 3",
+ "sgemmtr",
+ "gemm",
+ "matmul",
+ "matrix multiplication",
+ "triangular",
+ "matrix",
+ "multiplication",
+ "linear",
+ "algebra",
+ "subroutines",
+ "array",
+ "ndarray",
+ "float32",
+ "float",
+ "float32array"
+ ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_ntb_l.json
new file mode 100644
index 000000000000..03168a6528d5
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_ntb_u.json
new file mode 100644
index 000000000000..8757e6e139a5
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_tb_l.json
new file mode 100644
index 000000000000..0d668f11c1fe
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_tb_u.json
new file mode 100644
index 000000000000..d1ff16312a00
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_ntb_l.json
new file mode 100644
index 000000000000..9164938d2ffa
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_ntb_u.json
new file mode 100644
index 000000000000..258b1bcee78c
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_tb_l.json
new file mode 100644
index 000000000000..34ac1ca87fb6
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_tb_u.json
new file mode 100644
index 000000000000..33ae4507bcb4
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_cc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_ntb_l.json
new file mode 100644
index 000000000000..5613911bef73
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_ntb_u.json
new file mode 100644
index 000000000000..c5e5e3ac7b94
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_tb_l.json
new file mode 100644
index 000000000000..a71b86c81633
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_tb_u.json
new file mode 100644
index 000000000000..7a29f9db05e1
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_ntb_l.json
new file mode 100644
index 000000000000..ab04cbbf6329
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_ntb_u.json
new file mode 100644
index 000000000000..f22296417423
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_tb_l.json
new file mode 100644
index 000000000000..3acf665f1f4d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_tb_u.json
new file mode 100644
index 000000000000..7f6738cfc948
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_cb_rc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_ntb_l.json
new file mode 100644
index 000000000000..5f1db481064e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_ntb_u.json
new file mode 100644
index 000000000000..76e63c5e70fc
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_tb_l.json
new file mode 100644
index 000000000000..f4db1f80abdc
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_tb_u.json
new file mode 100644
index 000000000000..9fdc6367da60
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_ntb_l.json
new file mode 100644
index 000000000000..2c4d0cd8e989
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_ntb_u.json
new file mode 100644
index 000000000000..8c3ff1090bea
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_tb_l.json
new file mode 100644
index 000000000000..61861b9a63fe
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_tb_u.json
new file mode 100644
index 000000000000..8c80d02086de
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_cc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_ntb_l.json
new file mode 100644
index 000000000000..7ec00d7956c7
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_ntb_u.json
new file mode 100644
index 000000000000..ef3a29dde698
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_tb_l.json
new file mode 100644
index 000000000000..4474d6f1a014
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_tb_u.json
new file mode 100644
index 000000000000..495a94e21c0a
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 3,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_ntb_l.json
new file mode 100644
index 000000000000..8086c90b9215
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_ntb_u.json
new file mode 100644
index 000000000000..9ea567cce030
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_tb_l.json
new file mode 100644
index 000000000000..440caa3ce806
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_tb_u.json
new file mode 100644
index 000000000000..e7c62244aab5
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ca_rb_rc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 1,
+ "strideA2": 2,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_ntb_l.json
new file mode 100644
index 000000000000..3fd10acd51de
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_ntb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_ntb_u.json
new file mode 100644
index 000000000000..130fd7db8180
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_ntb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_tb_l.json
new file mode 100644
index 000000000000..4f0bb3e70a1d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_tb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_tb_u.json
new file mode 100644
index 000000000000..69c5d13a1fb6
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_nta_tb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_ntb_l.json
new file mode 100644
index 000000000000..c53668ef213e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_ntb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_ntb_u.json
new file mode 100644
index 000000000000..9003b51cc1a9
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_ntb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_tb_l.json
new file mode 100644
index 000000000000..ba4be202921d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_tb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_tb_u.json
new file mode 100644
index 000000000000..f741c84d0e93
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/column_major_ta_tb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "column-major",
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_ntb_l.json
new file mode 100644
index 000000000000..fd62253e008a
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_ntb_u.json
new file mode 100644
index 000000000000..9c8de7c55e6e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_tb_l.json
new file mode 100644
index 000000000000..bbda0270bfe0
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_tb_u.json
new file mode 100644
index 000000000000..40e86a1d0062
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_ntb_l.json
new file mode 100644
index 000000000000..b7eface0ae46
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_ntb_u.json
new file mode 100644
index 000000000000..21e1599ca2bd
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_tb_l.json
new file mode 100644
index 000000000000..a4e8d177de41
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_tb_u.json
new file mode 100644
index 000000000000..86e2ab29ad0a
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_cc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_ntb_l.json
new file mode 100644
index 000000000000..100ec076a17e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_ntb_u.json
new file mode 100644
index 000000000000..ae438cd7c578
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_tb_l.json
new file mode 100644
index 000000000000..f538b9cfd59a
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_tb_u.json
new file mode 100644
index 000000000000..4396b275a4ad
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_ntb_l.json
new file mode 100644
index 000000000000..b606dd7b6f95
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_ntb_u.json
new file mode 100644
index 000000000000..9a520b9d5064
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 2,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_tb_l.json
new file mode 100644
index 000000000000..ad3c0ed4fe02
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_tb_u.json
new file mode 100644
index 000000000000..d201a90ccc75
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_cb_rc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 1,
+ "strideB2": 3,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_ntb_l.json
new file mode 100644
index 000000000000..a49d44c17d8a
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_ntb_u.json
new file mode 100644
index 000000000000..c4f81c4293b3
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_tb_l.json
new file mode 100644
index 000000000000..db06fa87eb1e
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_tb_u.json
new file mode 100644
index 000000000000..32a42c2e8e74
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_ntb_l.json
new file mode 100644
index 000000000000..7a739f16e59c
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_ntb_u.json
new file mode 100644
index 000000000000..131c3d679e70
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_tb_l.json
new file mode 100644
index 000000000000..92ab2529bf33
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 23.0, 36.0, 2.0, 31.0, 48.0, 3.0, 6.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_tb_u.json
new file mode 100644
index 000000000000..259467323887
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_cc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 4.0, 7.0, 2.0, 5.0, 8.0, 3.0, 6.0, 9.0 ],
+ "strideC1": 1,
+ "strideC2": 3,
+ "offsetC": 0,
+ "C_out": [ 10.0, 4.0, 7.0, 14.0, 31.0, 8.0, 18.0, 39.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_l.json
new file mode 100644
index 000000000000..21ee32404b62
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 2.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 3.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 21.0, 2.0, 3.0, 50.0, 67.0, 6.0, 79.0, 104.0, 129.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_u.json
new file mode 100644
index 000000000000..fb298f3240e6
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 2.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 3.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 21.0, 30.0, 39.0, 4.0, 67.0, 84.0, 7.0, 8.0, 129.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_l.json
new file mode 100644
index 000000000000..c71ddfc4b78f
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_u.json
new file mode 100644
index 000000000000..7f9576fc9111
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_tb_l.json
new file mode 100644
index 000000000000..e15d3812ca86
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_tb_u.json
new file mode 100644
index 000000000000..585a56ff33e7
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_nta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideA1": 2,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_ntb_l.json
new file mode 100644
index 000000000000..9503e535dcf0
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_ntb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_ntb_u.json
new file mode 100644
index 000000000000..398cbf77e181
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_ntb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "strideB1": 3,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_tb_l.json
new file mode 100644
index 000000000000..7cb971b4c44d
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_tb_l.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_tb_u.json
new file mode 100644
index 000000000000..9ca31fd03180
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/ra_rb_rc_ta_tb_u.json
@@ -0,0 +1,23 @@
+{
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "strideA1": 3,
+ "strideA2": 1,
+ "offsetA": 0,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "strideB1": 2,
+ "strideB2": 1,
+ "offsetB": 0,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "strideC1": 3,
+ "strideC2": 1,
+ "offsetC": 0,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_alpha2_beta3_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_alpha2_beta3_l.json
new file mode 100644
index 000000000000..ab418fffc857
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_alpha2_beta3_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 2.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 3.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 21.0, 2.0, 3.0, 50.0, 67.0, 6.0, 79.0, 104.0, 129.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_alpha2_beta3_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_alpha2_beta3_u.json
new file mode 100644
index 000000000000..5487b04844cf
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_alpha2_beta3_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 2.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 3.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 21.0, 30.0, 39.0, 4.0, 67.0, 84.0, 7.0, 8.0, 129.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_l.json
new file mode 100644
index 000000000000..78932ccc511c
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_u.json
new file mode 100644
index 000000000000..3f7fc51fec49
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_ntb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_tb_l.json
new file mode 100644
index 000000000000..90898a8b15a4
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_tb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "lower",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_tb_u.json
new file mode 100644
index 000000000000..4fa98eb927d8
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_nta_tb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "upper",
+ "transA": "no-transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "lda": 2,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_ntb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_ntb_l.json
new file mode 100644
index 000000000000..9ad447097f97
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_ntb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_ntb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_ntb_u.json
new file mode 100644
index 000000000000..98c5b36274b0
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_ntb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "no-transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ],
+ "ldb": 3,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_tb_l.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_tb_l.json
new file mode 100644
index 000000000000..c943790fb063
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_tb_l.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "lower",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 2.0, 3.0, 23.0, 31.0, 6.0, 36.0, 48.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_tb_u.json b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_tb_u.json
new file mode 100644
index 000000000000..b9e593f0b8a8
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/fixtures/row_major_ta_tb_u.json
@@ -0,0 +1,18 @@
+{
+ "order": "row-major",
+ "uplo": "upper",
+ "transA": "transpose",
+ "transB": "transpose",
+ "M": 3,
+ "N": 3,
+ "K": 2,
+ "alpha": 1.0,
+ "A": [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ],
+ "lda": 3,
+ "B": [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ],
+ "ldb": 2,
+ "beta": 1.0,
+ "C": [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ],
+ "ldc": 3,
+ "C_out": [ 10.0, 14.0, 18.0, 4.0, 31.0, 39.0, 7.0, 8.0, 60.0 ]
+}
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.js
new file mode 100644
index 000000000000..cac3797567de
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.js
@@ -0,0 +1,82 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var proxyquire = require( 'proxyquire' );
+var IS_BROWSER = require( '@stdlib/assert/is-browser' );
+var sgemmtr = require( './../lib' );
+
+
+// VARIABLES //
+
+var opts = {
+ 'skip': IS_BROWSER
+};
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof sgemmtr, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) {
+ t.strictEqual( typeof sgemmtr.ndarray, 'function', 'method is a function' );
+ t.end();
+});
+
+tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) {
+ var sgemmtr = proxyquire( './../lib', {
+ '@stdlib/utils/try-require': tryRequire
+ });
+
+ t.strictEqual( sgemmtr, mock, 'returns expected value' );
+ t.end();
+
+ function tryRequire() {
+ return mock;
+ }
+
+ function mock() {
+ // Mock...
+ }
+});
+
+tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) {
+ var sgemmtr;
+ var main;
+
+ main = require( './../lib/sgemmtr.js' );
+
+ sgemmtr = proxyquire( './../lib', {
+ '@stdlib/utils/try-require': tryRequire
+ });
+
+ t.strictEqual( sgemmtr, main, 'returns expected value' );
+ t.end();
+
+ function tryRequire() {
+ return new Error( 'Cannot find module' );
+ }
+});
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.ndarray.js
new file mode 100644
index 000000000000..3835c1747190
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.ndarray.js
@@ -0,0 +1,2113 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* eslint-disable max-len, stdlib/no-empty-lines-between-requires */
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var Float32Array = require( '@stdlib/array/float32' );
+var ones = require( '@stdlib/array/ones' );
+var sgemmtr = require( './../lib/ndarray.js' );
+
+
+// FIXTURES //
+
+var cacbccntantbU = require( './fixtures/ca_cb_cc_nta_ntb_u.json' );
+var cacbccntantbL = require( './fixtures/ca_cb_cc_nta_ntb_l.json' );
+var cacbccntatbU = require( './fixtures/ca_cb_cc_nta_tb_u.json' );
+var cacbccntatbL = require( './fixtures/ca_cb_cc_nta_tb_l.json' );
+var cacbcctantbU = require( './fixtures/ca_cb_cc_ta_ntb_u.json' );
+var cacbcctantbL = require( './fixtures/ca_cb_cc_ta_ntb_l.json' );
+var cacbcctatbU = require( './fixtures/ca_cb_cc_ta_tb_u.json' );
+var cacbcctatbL = require( './fixtures/ca_cb_cc_ta_tb_l.json' );
+var cacbrcntantbU = require( './fixtures/ca_cb_rc_nta_ntb_u.json' );
+var cacbrcntantbL = require( './fixtures/ca_cb_rc_nta_ntb_l.json' );
+var cacbrcntatbU = require( './fixtures/ca_cb_rc_nta_tb_u.json' );
+var cacbrcntatbL = require( './fixtures/ca_cb_rc_nta_tb_l.json' );
+var cacbrctantbU = require( './fixtures/ca_cb_rc_ta_ntb_u.json' );
+var cacbrctantbL = require( './fixtures/ca_cb_rc_ta_ntb_l.json' );
+var cacbrctatbU = require( './fixtures/ca_cb_rc_ta_tb_u.json' );
+var cacbrctatbL = require( './fixtures/ca_cb_rc_ta_tb_l.json' );
+var carbccntantbU = require( './fixtures/ca_rb_cc_nta_ntb_u.json' );
+var carbccntantbL = require( './fixtures/ca_rb_cc_nta_ntb_l.json' );
+var carbccntatbU = require( './fixtures/ca_rb_cc_nta_tb_u.json' );
+var carbccntatbL = require( './fixtures/ca_rb_cc_nta_tb_l.json' );
+var carbcctantbU = require( './fixtures/ca_rb_cc_ta_ntb_u.json' );
+var carbcctantbL = require( './fixtures/ca_rb_cc_ta_ntb_l.json' );
+var carbcctatbU = require( './fixtures/ca_rb_cc_ta_tb_u.json' );
+var carbcctatbL = require( './fixtures/ca_rb_cc_ta_tb_l.json' );
+var carbrcntantbU = require( './fixtures/ca_rb_rc_nta_ntb_u.json' );
+var carbrcntantbL = require( './fixtures/ca_rb_rc_nta_ntb_l.json' );
+var carbrcntatbU = require( './fixtures/ca_rb_rc_nta_tb_u.json' );
+var carbrcntatbL = require( './fixtures/ca_rb_rc_nta_tb_l.json' );
+var carbrctantbU = require( './fixtures/ca_rb_rc_ta_ntb_u.json' );
+var carbrctantbL = require( './fixtures/ca_rb_rc_ta_ntb_l.json' );
+var carbrctatbU = require( './fixtures/ca_rb_rc_ta_tb_u.json' );
+var carbrctatbL = require( './fixtures/ca_rb_rc_ta_tb_l.json' );
+var racbccntantbU = require( './fixtures/ra_cb_cc_nta_ntb_u.json' );
+var racbccntantbL = require( './fixtures/ra_cb_cc_nta_ntb_l.json' );
+var racbccntatbU = require( './fixtures/ra_cb_cc_nta_tb_u.json' );
+var racbccntatbL = require( './fixtures/ra_cb_cc_nta_tb_l.json' );
+var racbcctantbU = require( './fixtures/ra_cb_cc_ta_ntb_u.json' );
+var racbcctantbL = require( './fixtures/ra_cb_cc_ta_ntb_l.json' );
+var racbcctatbU = require( './fixtures/ra_cb_cc_ta_tb_u.json' );
+var racbcctatbL = require( './fixtures/ra_cb_cc_ta_tb_l.json' );
+var racbrcntantbU = require( './fixtures/ra_cb_rc_nta_ntb_u.json' );
+var racbrcntantbL = require( './fixtures/ra_cb_rc_nta_ntb_l.json' );
+var racbrcntatbU = require( './fixtures/ra_cb_rc_nta_tb_u.json' );
+var racbrcntatbL = require( './fixtures/ra_cb_rc_nta_tb_l.json' );
+var racbrctantbU = require( './fixtures/ra_cb_rc_ta_ntb_u.json' );
+var racbrctantbL = require( './fixtures/ra_cb_rc_ta_ntb_l.json' );
+var racbrctatbU = require( './fixtures/ra_cb_rc_ta_tb_u.json' );
+var racbrctatbL = require( './fixtures/ra_cb_rc_ta_tb_l.json' );
+var rarbccntantbU = require( './fixtures/ra_rb_cc_nta_ntb_u.json' );
+var rarbccntantbL = require( './fixtures/ra_rb_cc_nta_ntb_l.json' );
+var rarbccntatbU = require( './fixtures/ra_rb_cc_nta_tb_u.json' );
+var rarbccntatbL = require( './fixtures/ra_rb_cc_nta_tb_l.json' );
+var rarbcctantbU = require( './fixtures/ra_rb_cc_ta_ntb_u.json' );
+var rarbcctantbL = require( './fixtures/ra_rb_cc_ta_ntb_l.json' );
+var rarbcctatbU = require( './fixtures/ra_rb_cc_ta_tb_u.json' );
+var rarbcctatbL = require( './fixtures/ra_rb_cc_ta_tb_l.json' );
+var rarbrcntantbU = require( './fixtures/ra_rb_rc_nta_ntb_u.json' );
+var rarbrcntantbL = require( './fixtures/ra_rb_rc_nta_ntb_l.json' );
+var rarbrcntatbU = require( './fixtures/ra_rb_rc_nta_tb_u.json' );
+var rarbrcntatbL = require( './fixtures/ra_rb_rc_nta_tb_l.json' );
+var rarbrctantbU = require( './fixtures/ra_rb_rc_ta_ntb_u.json' );
+var rarbrctantbL = require( './fixtures/ra_rb_rc_ta_ntb_l.json' );
+var rarbrctatbU = require( './fixtures/ra_rb_rc_ta_tb_u.json' );
+var rarbrctatbL = require( './fixtures/ra_rb_rc_ta_tb_l.json' );
+
+var alphaBetaU = require( './fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_u.json' );
+var alphaBetaL = require( './fixtures/ra_rb_rc_nta_ntb_alpha2_beta3_l.json' );
+
+
+// FUNCTIONS //
+
+/**
+* Returns the index, within a storage buffer, of matrix element `(i,j)`.
+*
+* @private
+* @param {NonNegativeInteger} i - row index
+* @param {NonNegativeInteger} j - column index
+* @param {integer} s1 - stride of the first dimension
+* @param {integer} s2 - stride of the second dimension
+* @param {NonNegativeInteger} o - offset
+* @returns {NonNegativeInteger} index
+*/
+function idx( i, j, s1, s2, o ) {
+ return o + ( i*s1 ) + ( j*s2 );
+}
+
+/**
+* Returns a boolean indicating whether matrix element `(i,j)` lies within the referenced (upper or lower) triangle.
+*
+* @private
+* @param {NonNegativeInteger} i - row index
+* @param {NonNegativeInteger} j - column index
+* @param {string} uplo - `'upper'` or `'lower'`
+* @returns {boolean} boolean indicating whether the element is referenced
+*/
+function isReferenced( i, j, uplo ) {
+ return ( uplo === 'upper' ) ? ( j >= i ) : ( j <= i );
+}
+
+/**
+* Returns a copy of `C` with every element in the referenced triangle set to zero and every other element left unchanged.
+*
+* @private
+* @param {Collection} C - input matrix
+* @param {string} uplo - `'upper'` or `'lower'`
+* @param {NonNegativeInteger} M - number of rows
+* @param {NonNegativeInteger} N - number of columns
+* @param {integer} s1 - stride of the first dimension of `C`
+* @param {integer} s2 - stride of the second dimension of `C`
+* @param {NonNegativeInteger} o - offset for `C`
+* @returns {Float32Array} output matrix
+*/
+function triangleZeroed( C, uplo, M, N, s1, s2, o ) {
+ var out;
+ var i;
+ var j;
+
+ out = new Float32Array( C );
+ for ( i = 0; i < M; i++ ) {
+ for ( j = 0; j < N; j++ ) {
+ if ( isReferenced( i, j, uplo ) ) {
+ out[ idx( i, j, s1, s2, o ) ] = 0.0;
+ }
+ }
+ }
+ return out;
+}
+
+/**
+* Returns a copy of `C` with every element in the referenced triangle scaled by `beta` and every other element left unchanged.
+*
+* @private
+* @param {Collection} C - input matrix
+* @param {string} uplo - `'upper'` or `'lower'`
+* @param {NonNegativeInteger} M - number of rows
+* @param {NonNegativeInteger} N - number of columns
+* @param {integer} s1 - stride of the first dimension of `C`
+* @param {integer} s2 - stride of the second dimension of `C`
+* @param {NonNegativeInteger} o - offset for `C`
+* @param {number} beta - scalar constant
+* @returns {Float32Array} output matrix
+*/
+function triangleScaled( C, uplo, M, N, s1, s2, o, beta ) {
+ var out;
+ var ix;
+ var i;
+ var j;
+
+ out = new Float32Array( C );
+ for ( i = 0; i < M; i++ ) {
+ for ( j = 0; j < N; j++ ) {
+ if ( isReferenced( i, j, uplo ) ) {
+ ix = idx( i, j, s1, s2, o );
+ out[ ix ] *= beta;
+ }
+ }
+ }
+ return out;
+}
+
+/**
+* Returns a matrix with every element in the referenced triangle set to `value` and every other element left at `0.0`.
+*
+* @private
+* @param {string} uplo - `'upper'` or `'lower'`
+* @param {NonNegativeInteger} M - number of rows
+* @param {NonNegativeInteger} N - number of columns
+* @param {integer} s1 - stride of the first dimension
+* @param {integer} s2 - stride of the second dimension
+* @param {NonNegativeInteger} len - output length
+* @param {number} value - fill value
+* @returns {Float32Array} output matrix
+*/
+function triangleFilled( uplo, M, N, s1, s2, len, value ) {
+ var out;
+ var i;
+ var j;
+
+ out = new Float32Array( len );
+ for ( i = 0; i < M; i++ ) {
+ for ( j = 0; j < N; j++ ) {
+ if ( isReferenced( i, j, uplo ) ) {
+ out[ idx( i, j, s1, s2, 0 ) ] = value;
+ }
+ }
+ }
+ return out;
+}
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof sgemmtr, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function has an arity of 20', function test( t ) {
+ t.strictEqual( sgemmtr.length, 20, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function throws an error if provided an invalid first argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ 'foo',
+ 'bar',
+ 'beep',
+ 'boop'
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( value, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid second argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ 'foo',
+ 'bar',
+ 'beep',
+ 'boop'
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.uplo, value, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid third argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ 'foo',
+ 'bar',
+ 'beep',
+ 'boop'
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.uplo, data.transA, value, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid fourth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.uplo, data.transA, data.transB, value, data.N, data.K, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid fifth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.uplo, data.transA, data.transB, data.M, value, data.K, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid sixth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, value, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), data.strideC1, data.strideC2, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid eighteenth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ 0
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), value, data.strideC2, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid nineteenth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rarbrcntantbU;
+
+ values = [
+ 0
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.strideA1, data.strideA2, data.offsetA, new Float32Array( data.B ), data.strideB1, data.strideB2, data.offsetB, data.beta, new Float32Array( data.C ), data.strideC1, value, data.offsetC );
+ };
+ }
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbccntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbccntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbccntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbccntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbcctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbcctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbcctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, column_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbcctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrcntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrcntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrcntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrcntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, column_major, row_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cacbrctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbccntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbccntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbccntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbccntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbcctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbcctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbcctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, column_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbcctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrcntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrcntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrcntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrcntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column_major, row_major, row_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = carbrctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbccntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbccntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbccntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbccntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbcctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbcctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbcctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, column_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbcctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrcntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrcntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrcntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrcntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, column_major, row_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = racbrctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbccntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbccntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbccntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbccntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbcctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbcctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbcctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, column_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbcctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrcntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrcntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrcntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrcntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row_major, row_major, row_major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns a reference to the third input matrix', function test( t ) {
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.end();
+});
+
+tape( 'if either `M` or `N` is `0`, the function returns the third input matrix unchanged', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, 0, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, 0, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` or `K` is `0` and `β` is `1`, the function returns the third input matrix unchanged', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, 1.0, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, 0, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, 1.0, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is `0`, the function zeros only the referenced triangle of the third input matrix (upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleZeroed( data.C, data.uplo, data.M, data.N, data.strideC1, data.strideC2, data.offsetC );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, 0.0, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is `0`, the function zeros only the referenced triangle of the third input matrix (lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleZeroed( data.C, data.uplo, data.M, data.N, data.strideC1, data.strideC2, data.offsetC );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, 0.0, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is neither `0` nor `1`, the function scales only the referenced triangle of the third input matrix by `β`', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rarbrctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleScaled( data.C, data.uplo, data.M, data.N, data.strideC1, data.strideC2, data.offsetC, 10.0 );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, 10.0, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function supports computation over large arrays (row-major, upper)', function test( t ) {
+ var expected;
+ var out;
+ var N;
+ var a;
+ var b;
+ var c;
+
+ N = 100;
+
+ a = ones( N*N, 'float32' );
+ b = ones( a.length, 'float32' );
+ c = new Float32Array( a.length );
+
+ expected = triangleFilled( 'upper', N, N, N, 1, a.length, N );
+
+ out = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, a, N, 1, 0, b, N, 1, 0, 1.0, c, N, 1, 0 );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function supports computation over large arrays (row-major, lower)', function test( t ) {
+ var expected;
+ var out;
+ var N;
+ var a;
+ var b;
+ var c;
+
+ N = 100;
+
+ a = ones( N*N, 'float32' );
+ b = ones( a.length, 'float32' );
+ c = new Float32Array( a.length );
+
+ expected = triangleFilled( 'lower', N, N, N, 1, a.length, N );
+
+ out = sgemmtr( 'lower', 'no-transpose', 'no-transpose', N, N, N, 1.0, a, N, 1, 0, b, N, 1, 0, 1.0, c, N, 1, 0 );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function supports computation over large arrays (column-major, upper)', function test( t ) {
+ var expected;
+ var out;
+ var N;
+ var a;
+ var b;
+ var c;
+
+ N = 100;
+
+ a = ones( N*N, 'float32' );
+ b = ones( a.length, 'float32' );
+ c = new Float32Array( a.length );
+
+ expected = triangleFilled( 'upper', N, N, 1, N, a.length, N );
+
+ out = sgemmtr( 'upper', 'no-transpose', 'no-transpose', N, N, N, 1.0, a, 1, N, 0, b, 1, N, 0, 1.0, c, 1, N, 0 );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function supports computation over large arrays (column-major, lower)', function test( t ) {
+ var expected;
+ var out;
+ var N;
+ var a;
+ var b;
+ var c;
+
+ N = 100;
+
+ a = ones( N*N, 'float32' );
+ b = ones( a.length, 'float32' );
+ c = new Float32Array( a.length );
+
+ expected = triangleFilled( 'lower', N, N, 1, N, a.length, N );
+
+ out = sgemmtr( 'lower', 'no-transpose', 'no-transpose', N, N, N, 1.0, a, 1, N, 0, b, 1, N, 0, 1.0, c, 1, N, 0 );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function correctly applies both `α` and `β` scalars (row-major, row-major, row-major, no-transpose, no-transpose, α=2, β=3, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = alphaBetaU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+tape( 'the function correctly applies both `α` and `β` scalars (row-major, row-major, row-major, no-transpose, no-transpose, α=2, β=3, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = alphaBetaL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.strideA1, data.strideA2, data.offsetA, b, data.strideB1, data.strideB2, data.offsetB, data.beta, c, data.strideC1, data.strideC2, data.offsetC );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
diff --git a/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.sgemmtr.js b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.sgemmtr.js
new file mode 100644
index 000000000000..0d513ece1040
--- /dev/null
+++ b/lib/node_modules/@stdlib/blas/base/sgemmtr/test/test.sgemmtr.js
@@ -0,0 +1,1096 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2026 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+/* eslint-disable max-len, stdlib/no-empty-lines-between-requires */
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var Float32Array = require( '@stdlib/array/float32' );
+var sgemmtr = require( './../lib/sgemmtr.js' );
+
+
+// FIXTURES //
+
+var cntantbU = require( './fixtures/column_major_nta_ntb_u.json' );
+var cntantbL = require( './fixtures/column_major_nta_ntb_l.json' );
+var ctantbU = require( './fixtures/column_major_ta_ntb_u.json' );
+var ctantbL = require( './fixtures/column_major_ta_ntb_l.json' );
+var cntatbU = require( './fixtures/column_major_nta_tb_u.json' );
+var cntatbL = require( './fixtures/column_major_nta_tb_l.json' );
+var ctatbU = require( './fixtures/column_major_ta_tb_u.json' );
+var ctatbL = require( './fixtures/column_major_ta_tb_l.json' );
+
+var rntantbU = require( './fixtures/row_major_nta_ntb_u.json' );
+var rntantbL = require( './fixtures/row_major_nta_ntb_l.json' );
+var rtantbU = require( './fixtures/row_major_ta_ntb_u.json' );
+var rtantbL = require( './fixtures/row_major_ta_ntb_l.json' );
+var rntatbU = require( './fixtures/row_major_nta_tb_u.json' );
+var rntatbL = require( './fixtures/row_major_nta_tb_l.json' );
+var rtatbU = require( './fixtures/row_major_ta_tb_u.json' );
+var rtatbL = require( './fixtures/row_major_ta_tb_l.json' );
+var rntantbAlpha2Beta3U = require( './fixtures/row_major_nta_ntb_alpha2_beta3_u.json' );
+var rntantbAlpha2Beta3L = require( './fixtures/row_major_nta_ntb_alpha2_beta3_l.json' );
+
+
+// FUNCTIONS //
+
+/**
+* Returns the index, within a storage buffer, of matrix element `(i,j)`.
+*
+* @private
+* @param {NonNegativeInteger} i - row index
+* @param {NonNegativeInteger} j - column index
+* @param {string} order - storage layout
+* @param {PositiveInteger} ld - leading dimension
+* @returns {NonNegativeInteger} index
+*/
+function idx( i, j, order, ld ) {
+ if ( order === 'row-major' ) {
+ return ( i*ld ) + j;
+ }
+ return i + ( j*ld );
+}
+
+/**
+* Returns a boolean indicating whether matrix element `(i,j)` lies within the referenced (upper or lower) triangle.
+*
+* @private
+* @param {NonNegativeInteger} i - row index
+* @param {NonNegativeInteger} j - column index
+* @param {string} uplo - `'upper'` or `'lower'`
+* @returns {boolean} boolean indicating whether the element is referenced
+*/
+function isReferenced( i, j, uplo ) {
+ return ( uplo === 'upper' ) ? ( j >= i ) : ( j <= i );
+}
+
+/**
+* Returns a copy of `C` with every element in the referenced triangle set to zero and every other element left unchanged.
+*
+* @private
+* @param {Collection} C - input matrix
+* @param {string} order - storage layout
+* @param {string} uplo - `'upper'` or `'lower'`
+* @param {NonNegativeInteger} M - number of rows
+* @param {NonNegativeInteger} N - number of columns
+* @param {PositiveInteger} ldc - leading dimension of `C`
+* @returns {Float32Array} output matrix
+*/
+function triangleZeroed( C, order, uplo, M, N, ldc ) {
+ var out;
+ var i;
+ var j;
+
+ out = new Float32Array( C );
+ for ( i = 0; i < M; i++ ) {
+ for ( j = 0; j < N; j++ ) {
+ if ( isReferenced( i, j, uplo ) ) {
+ out[ idx( i, j, order, ldc ) ] = 0.0;
+ }
+ }
+ }
+ return out;
+}
+
+/**
+* Returns a copy of `C` with every element in the referenced triangle scaled by `beta` and every other element left unchanged.
+*
+* @private
+* @param {Collection} C - input matrix
+* @param {string} order - storage layout
+* @param {string} uplo - `'upper'` or `'lower'`
+* @param {NonNegativeInteger} M - number of rows
+* @param {NonNegativeInteger} N - number of columns
+* @param {PositiveInteger} ldc - leading dimension of `C`
+* @param {number} beta - scalar constant
+* @returns {Float32Array} output matrix
+*/
+function triangleScaled( C, order, uplo, M, N, ldc, beta ) {
+ var out;
+ var ix;
+ var i;
+ var j;
+
+ out = new Float32Array( C );
+ for ( i = 0; i < M; i++ ) {
+ for ( j = 0; j < N; j++ ) {
+ if ( isReferenced( i, j, uplo ) ) {
+ ix = idx( i, j, order, ldc );
+ out[ ix ] *= beta;
+ }
+ }
+ }
+ return out;
+}
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof sgemmtr, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function has an arity of 15', function test( t ) {
+ t.strictEqual( sgemmtr.length, 15, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function throws an error if provided an invalid first argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ 'foo',
+ 'bar',
+ 'beep',
+ 'boop'
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( value, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid second argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ 'foo',
+ 'bar',
+ 'beep',
+ 'boop'
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, value, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid third argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ 'foo',
+ 'bar',
+ 'beep',
+ 'boop'
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, value, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid fourth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ 'foo',
+ 'bar',
+ 'beep',
+ 'boop'
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, data.transA, value, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid fifth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, data.transA, data.transB, value, data.N, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid sixth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, value, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid seventh argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, value, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid tenth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ 1,
+ 0,
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), value, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid twelfth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ 2,
+ 1,
+ 0,
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), value, data.beta, new Float32Array( data.C ), data.ldc );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an invalid fifteenth argument', function test( t ) {
+ var values;
+ var data;
+ var i;
+
+ data = rntantbU;
+
+ values = [
+ 2,
+ 1,
+ 0,
+ -1,
+ -2,
+ -3
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, new Float32Array( data.A ), data.lda, new Float32Array( data.B ), data.ldb, data.beta, new Float32Array( data.C ), value );
+ };
+ }
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, no-transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cntantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, no-transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cntantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, transpose, no-transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctantbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, transpose, no-transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctantbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, no-transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cntatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, no-transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = cntatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (row-major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, transpose, transpose, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function performs the matrix-matrix operation `uplo(C) = uplo(α*op(A)*op(B) + β*C)` (column-major, transpose, transpose, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns a reference to the third input matrix (row-major)', function test( t ) {
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns a reference to the third input matrix (column-major)', function test( t ) {
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.end();
+});
+
+tape( 'if either `M` or `N` is `0`, the function returns the third input matrix unchanged (row-major)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, 0, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, 0, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if either `M` or `N` is `0`, the function returns the third input matrix unchanged (column-major)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, 0, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, 0, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` or `K` is `0` and `β` is `1`, the function returns the third input matrix unchanged (row-major)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 1.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, 0, data.alpha, a, data.lda, b, data.ldb, 1.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` or `K` is `0` and `β` is `1`, the function returns the third input matrix unchanged (column-major)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 1.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, 0, data.alpha, a, data.lda, b, data.ldb, 1.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is `0`, the function zeros only the referenced triangle of the third input matrix (row-major, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleZeroed( data.C, data.order, data.uplo, data.M, data.N, data.ldc );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 0.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is `0`, the function zeros only the referenced triangle of the third input matrix (row-major, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleZeroed( data.C, data.order, data.uplo, data.M, data.N, data.ldc );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 0.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is `0`, the function zeros only the referenced triangle of the third input matrix (column-major, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleZeroed( data.C, data.order, data.uplo, data.M, data.N, data.ldc );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 0.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is `0`, the function zeros only the referenced triangle of the third input matrix (column-major, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbL;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleZeroed( data.C, data.order, data.uplo, data.M, data.N, data.ldc );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 0.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is neither `0` nor `1`, the function scales only the referenced triangle of the third input matrix by `β` (row-major)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rtatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleScaled( data.C, data.order, data.uplo, data.M, data.N, data.ldc, 10.0 );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 10.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'if `α` is `0` and `β` is neither `0` nor `1`, the function scales only the referenced triangle of the third input matrix by `β` (column-major)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = ctatbU;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = triangleScaled( data.C, data.order, data.uplo, data.M, data.N, data.ldc, 10.0 );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, 0.0, a, data.lda, b, data.ldb, 10.0, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function correctly applies both `α` and `β` scalars (row-major, no-transpose, no-transpose, α=2, β=3, upper)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rntantbAlpha2Beta3U;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function correctly applies both `α` and `β` scalars (row-major, no-transpose, no-transpose, α=2, β=3, lower)', function test( t ) {
+ var expected;
+ var data;
+ var out;
+ var a;
+ var b;
+ var c;
+
+ data = rntantbAlpha2Beta3L;
+
+ a = new Float32Array( data.A );
+ b = new Float32Array( data.B );
+ c = new Float32Array( data.C );
+
+ expected = new Float32Array( data.C_out );
+
+ out = sgemmtr( data.order, data.uplo, data.transA, data.transB, data.M, data.N, data.K, data.alpha, a, data.lda, b, data.ldb, data.beta, c, data.ldc );
+ t.strictEqual( out, c, 'returns expected value' );
+ t.deepEqual( out, expected, 'returns expected value' );
+ t.end();
+});