From e0ac4e7dbdf5304772945df487efa4a078aab216 Mon Sep 17 00:00:00 2001 From: Gururaj Gurram Date: Mon, 23 Sep 2024 12:29:16 +0530 Subject: [PATCH 1/4] test: dznrm2 --- .../blas/base/dznrm2/test/test.ndarray.js | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js index d1b7b4acd2c0..102b265a04ca 100644 --- a/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js @@ -105,6 +105,66 @@ tape( 'the function computes the L2-norm', function test( t ) { actual = dznrm2( 3, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + + zx = new Complex128Array([ + 1e147, // 1 + 0, // 1 + 0, // 2 + 1e147, // 2 + 1e148, // 3 + 0, // 3 + 0, // 4 + 1e150 // 4 + ]); + expected = 1.0e+150; + + actual = dznrm2( 4, zx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + + zx = new Complex128Array([ + 1e-155, // 1 + 0, // 1 + 1e-160, // 2 + 0, // 2 + 0, // 3 + 0, // 3 + 1e-163, // 4 + 0 // 4 + ]); + expected = 1.0e-155; + + actual = dznrm2( 4, zx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + + zx = new Complex128Array([ + 1e-155, // 1 + 1e147, // 1 + 1e155, // 2 + 1e-148, // 2 + 1e149, // 3 + 1e160, // 3 + 1e-147, // 4 + 1e-155 // 4 + ]); + expected = 1.0e160; + + actual = dznrm2( 4, zx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + + zx = new Complex128Array([ + 12345678e-155, // 1 + 12345678e-160, // 1 + 0, // 2 + 0, // 2 + 0, // 3 + 0, // 3 + 12345678e-160, // 4 + 12345678e-165 // 4 + ]); + expected = 1.23e-147; + + actual = dznrm2( 4, zx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); t.end(); }); From 640567c28a9e808d104177ff8092fda1892b22f5 Mon Sep 17 00:00:00 2001 From: Gururaj Gurram Date: Tue, 1 Oct 2024 01:34:44 +0530 Subject: [PATCH 2/4] test: scnrm2 --- .../blas/base/scnrm2/test/test.ndarray.js | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js index 212ba4638173..6a952cc86cee 100644 --- a/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js @@ -105,6 +105,81 @@ tape( 'the function computes the L2-norm', function test( t ) { actual = scnrm2( 3, cx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + + cx = new Complex64Array([ + 5E+15, // 1 + 5E+15, // 1 + 5E+15, // 2 + 5E+15, // 2 + 5E+15, // 3 + 5E+15, // 3 + 5E+15, // 4 + 5E+15 // 4 + ]); + expected = 14142135623730950; + + actual = scnrm2( 4, cx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + + cx = new Complex64Array([ + 1E-20, // 1 + 1E-20, // 1 + 1E-20, // 2 + 1E-20, // 2 + 1E-20, // 3 + 1E-20, // 3 + 1E-20, // 4 + 1E-20 // 4 + ]); + expected = 2.828427124E-20; + + actual = scnrm2( 4, cx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + + cx = new Complex64Array([ + 1E20, // 1 + 1E10, // 1 + 1E20, // 2 + 1E10, // 2 + 1E20, // 3 + 1E10, // 3 + 1E20, // 4 + 1E10 // 4 + ]); + expected = 2E20; + + actual = scnrm2( 4, cx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + + cx = new Complex64Array([ + 1E-20, // 1 + 1E10, // 1 + 1E-20, // 2 + 1E10, // 2 + 1E-20, // 3 + 1E10, // 3 + 1E-20, // 4 + 1E10 // 4 + ]); + expected = 2E10; + + actual = scnrm2( 4, cx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + + cx = new Complex64Array([ + 1E-19, // 1 + 1.08420217E-19, // 1 + 1E-19, // 2 + 1.08420217E-19, // 2 + 1E-19, // 3 + 0, // 3 + 1E-19, // 4 + 0 // 4 + ]); + expected = 2.5207E-19; + + actual = scnrm2( 4, cx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); t.end(); }); From 489c656d82444f39e91df15856f8bedf2222099a Mon Sep 17 00:00:00 2001 From: Gururaj Gurram Date: Tue, 1 Oct 2024 12:48:35 +0530 Subject: [PATCH 3/4] update: dznrm2 test-cases --- .../blas/base/dznrm2/test/test.ndarray.js | 88 +++++++++++-------- 1 file changed, 52 insertions(+), 36 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js index 102b265a04ca..5fab00f8fbbb 100644 --- a/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js @@ -107,64 +107,80 @@ tape( 'the function computes the L2-norm', function test( t ) { isApprox( t, actual, expected, 2.0 ); zx = new Complex128Array([ - 1e147, // 1 - 0, // 1 - 0, // 2 - 1e147, // 2 - 1e148, // 3 - 0, // 3 - 0, // 4 - 1e150 // 4 + 1E150, // 1 + 1E150, // 1 + 1E150, // 2 + 1E150, // 2 + 1E150, // 3 + 1E150, // 3 + 1E150, // 4 + 1E150 // 4 ]); - expected = 1.0e+150; + expected = 2.828E+150; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); zx = new Complex128Array([ - 1e-155, // 1 - 0, // 1 - 1e-160, // 2 - 0, // 2 - 0, // 3 - 0, // 3 - 1e-163, // 4 - 0 // 4 + 1E-155, // 1 + 1E-155, // 1 + 1E-155, // 2 + 1E-155, // 2 + 1E-155, // 3 + 1E-155, // 3 + 1E-155, // 4 + 1E-155 // 4 ]); - expected = 1.0e-155; + expected = 2.828E-155; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); zx = new Complex128Array([ - 1e-155, // 1 - 1e147, // 1 - 1e155, // 2 - 1e-148, // 2 - 1e149, // 3 - 1e160, // 3 - 1e-147, // 4 - 1e-155 // 4 + 1E150, // 1 + 1E50, // 1 + 1E150, // 2 + 1E50, // 2 + 1E150, // 3 + 1E50, // 3 + 1E150, // 4 + 1E50 // 4 ]); - expected = 1.0e160; + expected = 2e150; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); zx = new Complex128Array([ - 12345678e-155, // 1 - 12345678e-160, // 1 - 0, // 2 - 0, // 2 - 0, // 3 - 0, // 3 - 12345678e-160, // 4 - 12345678e-165 // 4 + 1E-155, // 1 + 1E50, // 1 + 1E-155, // 2 + 1E50, // 2 + 1E-155, // 3 + 1E50, // 3 + 1E-155, // 4 + 1E50 // 4 ]); - expected = 1.23e-147; + expected = 2E50; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + + zx = new Complex128Array([ + 1.4E-154, // 1 + 1.5E-154, // 1 + 1.4E-154, // 2 + 1.5E-154, // 2 + 1.4E-154, // 3 + 0, // 3 + 1.4E-154, // 4 + 0 // 4 + ]); + expected = 3.51E-154; + + actual = dznrm2( 4, zx, 1, 0 ); + isApprox( t, actual, expected, 2.0 ); + t.end(); }); From 84bbad5cb6bcfd572c25dd9f93387d14366f16db Mon Sep 17 00:00:00 2001 From: Gururaj Gurram Date: Tue, 1 Oct 2024 20:39:19 +0530 Subject: [PATCH 4/4] test: clarify method to calculate expected value and adjust notation --- .../blas/base/dznrm2/test/test.ndarray.js | 92 ++++++++++--------- .../blas/base/scnrm2/test/test.ndarray.js | 91 +++++++++--------- 2 files changed, 96 insertions(+), 87 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js index 5fab00f8fbbb..2657e8fc7216 100644 --- a/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dznrm2/test/test.ndarray.js @@ -106,81 +106,85 @@ tape( 'the function computes the L2-norm', function test( t ) { actual = dznrm2( 3, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: zx = new Complex128Array([ - 1E150, // 1 - 1E150, // 1 - 1E150, // 2 - 1E150, // 2 - 1E150, // 3 - 1E150, // 3 - 1E150, // 4 - 1E150 // 4 + 1e150, // 1 + 1e150, // 1 + 1e150, // 2 + 1e150, // 2 + 1e150, // 3 + 1e150, // 3 + 1e150, // 4 + 1e150 // 4 ]); - expected = 2.828E+150; + expected = 2.82842e+150; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: zx = new Complex128Array([ - 1E-155, // 1 - 1E-155, // 1 - 1E-155, // 2 - 1E-155, // 2 - 1E-155, // 3 - 1E-155, // 3 - 1E-155, // 4 - 1E-155 // 4 + 1e-155, // 1 + 1e-155, // 1 + 1e-155, // 2 + 1e-155, // 2 + 1e-155, // 3 + 1e-155, // 3 + 1e-155, // 4 + 1e-155 // 4 ]); - expected = 2.828E-155; + expected = 2.82843e-155; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: zx = new Complex128Array([ - 1E150, // 1 - 1E50, // 1 - 1E150, // 2 - 1E50, // 2 - 1E150, // 3 - 1E50, // 3 - 1E150, // 4 - 1E50 // 4 + 1e150, // 1 + 1e50, // 1 + 1e150, // 2 + 1e50, // 2 + 1e150, // 3 + 1e50, // 3 + 1e150, // 4 + 1e50 // 4 ]); - expected = 2e150; + expected = 2.00000e150; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: zx = new Complex128Array([ - 1E-155, // 1 - 1E50, // 1 - 1E-155, // 2 - 1E50, // 2 - 1E-155, // 3 - 1E50, // 3 - 1E-155, // 4 - 1E50 // 4 + 1e-155, // 1 + 1e50, // 1 + 1e-155, // 2 + 1e50, // 2 + 1e-155, // 3 + 1e50, // 3 + 1e-155, // 4 + 1e50 // 4 ]); - expected = 2E50; + expected = 2.00000e50; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: zx = new Complex128Array([ - 1.4E-154, // 1 - 1.5E-154, // 1 - 1.4E-154, // 2 - 1.5E-154, // 2 - 1.4E-154, // 3 + 1.4e-154, // 1 + 1.5e-154, // 1 + 1.4e-154, // 2 + 1.5e-154, // 2 + 1.4e-154, // 3 0, // 3 - 1.4E-154, // 4 + 1.4e-154, // 4 0 // 4 ]); - expected = 3.51E-154; + expected = 3.51283e-154; actual = dznrm2( 4, zx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); - t.end(); }); diff --git a/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js index 6a952cc86cee..d864d9b3e8de 100644 --- a/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/scnrm2/test/test.ndarray.js @@ -106,77 +106,82 @@ tape( 'the function computes the L2-norm', function test( t ) { actual = scnrm2( 3, cx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: cx = new Complex64Array([ - 5E+15, // 1 - 5E+15, // 1 - 5E+15, // 2 - 5E+15, // 2 - 5E+15, // 3 - 5E+15, // 3 - 5E+15, // 4 - 5E+15 // 4 + 5e+15, // 1 + 5e+15, // 1 + 5e+15, // 2 + 5e+15, // 2 + 5e+15, // 3 + 5e+15, // 3 + 5e+15, // 4 + 5e+15 // 4 ]); - expected = 14142135623730950; + expected = 14142135623730952; actual = scnrm2( 4, cx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: cx = new Complex64Array([ - 1E-20, // 1 - 1E-20, // 1 - 1E-20, // 2 - 1E-20, // 2 - 1E-20, // 3 - 1E-20, // 3 - 1E-20, // 4 - 1E-20 // 4 + 1e-20, // 1 + 1e-20, // 1 + 1e-20, // 2 + 1e-20, // 2 + 1e-20, // 3 + 1e-20, // 3 + 1e-20, // 4 + 1e-20 // 4 ]); - expected = 2.828427124E-20; + expected = 2.82843e-20; actual = scnrm2( 4, cx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: cx = new Complex64Array([ - 1E20, // 1 - 1E10, // 1 - 1E20, // 2 - 1E10, // 2 - 1E20, // 3 - 1E10, // 3 - 1E20, // 4 - 1E10 // 4 + 1e20, // 1 + 1e10, // 1 + 1e20, // 2 + 1e10, // 2 + 1e20, // 3 + 1e10, // 3 + 1e20, // 4 + 1e10 // 4 ]); - expected = 2E20; + expected = 200000000000000000000; actual = scnrm2( 4, cx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: cx = new Complex64Array([ - 1E-20, // 1 - 1E10, // 1 - 1E-20, // 2 - 1E10, // 2 - 1E-20, // 3 - 1E10, // 3 - 1E-20, // 4 - 1E10 // 4 + 1e-20, // 1 + 1e10, // 1 + 1e-20, // 2 + 1e10, // 2 + 1e-20, // 3 + 1e10, // 3 + 1e-20, // 4 + 1e10 // 4 ]); - expected = 2E10; + expected = 20000000000; actual = scnrm2( 4, cx, 1, 0 ); isApprox( t, actual, expected, 2.0 ); + // Checked on Wolfram Alpha: cx = new Complex64Array([ - 1E-19, // 1 - 1.08420217E-19, // 1 - 1E-19, // 2 - 1.08420217E-19, // 2 - 1E-19, // 3 + 1e-19, // 1 + 1.08420217e-19, // 1 + 1e-19, // 2 + 1.08420217e-19, // 2 + 1e-19, // 3 0, // 3 - 1E-19, // 4 + 1e-19, // 4 0 // 4 ]); - expected = 2.5207E-19; + expected = 2.52012e-19; actual = scnrm2( 4, cx, 1, 0 ); isApprox( t, actual, expected, 2.0 );