From 91dff800aba525d282fa48531417c42de5fb5feb Mon Sep 17 00:00:00 2001 From: kaustubh Date: Wed, 27 May 2026 14:32:13 +0530 Subject: [PATCH 1/9] feat: add C implementation for blas/base/csscal --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: passed - task: lint_repl_help status: passed - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: passed - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: missing_dependencies - task: lint_c_examples status: missing_dependencies - task: lint_c_benchmarks status: missing_dependencies - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/blas/base/csscal/README.md | 149 +++++- .../blas/base/csscal/benchmark/benchmark.js | 2 +- .../base/csscal/benchmark/benchmark.native.js | 113 ++++ .../csscal/benchmark/benchmark.ndarray.js | 2 +- .../benchmark/benchmark.ndarray.native.js | 113 ++++ .../blas/base/csscal/benchmark/c/Makefile | 146 +++++ .../csscal/benchmark/c/benchmark.length.c | 197 +++++++ .../@stdlib/blas/base/csscal/binding.gyp | 173 ++++++ .../@stdlib/blas/base/csscal/docs/repl.txt | 1 + .../blas/base/csscal/examples/c/Makefile | 146 +++++ .../blas/base/csscal/examples/c/example.c | 50 ++ .../blas/base/csscal/examples/index.js | 5 +- .../@stdlib/blas/base/csscal/include.gypi | 70 +++ .../csscal/include/stdlib/blas/base/csscal.h | 48 ++ .../include/stdlib/blas/base/csscal_cblas.h | 43 ++ .../blas/base/csscal/lib/csscal.native.js | 55 ++ .../@stdlib/blas/base/csscal/lib/native.js | 35 ++ .../blas/base/csscal/lib/ndarray.native.js | 56 ++ .../@stdlib/blas/base/csscal/manifest.json | 503 ++++++++++++++++++ .../@stdlib/blas/base/csscal/package.json | 3 + .../@stdlib/blas/base/csscal/src/Makefile | 70 +++ .../@stdlib/blas/base/csscal/src/addon.c | 63 +++ .../@stdlib/blas/base/csscal/src/csscal.c | 34 ++ .../blas/base/csscal/src/csscal_cblas.c | 59 ++ .../blas/base/csscal/src/csscal_ndarray.c | 47 ++ .../blas/base/csscal/test/test.csscal.js | 12 +- .../base/csscal/test/test.csscal.native.js | 226 ++++++++ .../base/csscal/test/test.ndarray.native.js | 276 ++++++++++ 28 files changed, 2685 insertions(+), 12 deletions(-) create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/benchmark/benchmark.ndarray.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/benchmark/c/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/benchmark/c/benchmark.length.c create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/binding.gyp create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/include.gypi create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/include/stdlib/blas/base/csscal.h create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/include/stdlib/blas/base/csscal_cblas.h create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/lib/csscal.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/lib/native.js create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/lib/ndarray.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/manifest.json create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/src/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/src/addon.c create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/src/csscal.c create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/src/csscal_cblas.c create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/src/csscal_ndarray.c create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/test/test.csscal.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/csscal/test/test.ndarray.native.js diff --git a/lib/node_modules/@stdlib/blas/base/csscal/README.md b/lib/node_modules/@stdlib/blas/base/csscal/README.md index 9e14ecd19994..e9f9682d2b1b 100644 --- a/lib/node_modules/@stdlib/blas/base/csscal/README.md +++ b/lib/node_modules/@stdlib/blas/base/csscal/README.md @@ -141,14 +141,159 @@ function rand() { var x = filledarrayBy( 10, 'complex64', rand ); console.log( x.toString() ); +// Scale elements from `x` by `alpha`: csscal( x.length, 2.0, x, 1 ); -console.log( x.toString() ); +console.log( x.get( x.length-1 ).toString() ); +``` + + + + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/base/csscal.h" +``` + +#### c_csscal( N, alpha, \*X, strideX ) + +Scales a single-precision complex floating-point vector by a single-precision floating-point constant. + +```c +#include "stdlib/complex/float32/ctor.h" + +stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ) +}; + +c_csscal( 3, 2.0f, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] stdlib_complex64_t*` input array. +- **strideX**: `[in] CBLAS_INT` index increment for `x`. + +```c +void c_csscal( const CBLAS_INT N, const float alpha, void *X, const CBLAS_INT strideX ); +``` + +#### c_csscal_ndarray( N, alpha, \*X, strideX, offsetX ) + +Scales a single-precision complex floating-point vector by a single-precision floating-point constant using alternative indexing semantics. + +```c +#include "stdlib/complex/float32/ctor.h" + +stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ) +}; + +c_csscal_ndarray( 3, 2.0f, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] void*` input array. +- **strideX**: `[in] CBLAS_INT` index increment for `x`. +- **offsetX**: `[in] CBLAS_INT` starting index for `x`. + +```c +void c_csscal_ndarray( const CBLAS_INT N, const float alpha, void *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/base/csscal.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/complex/float32/real.h" +#include "stdlib/complex/float32/imag.h" +#include + +int main( void ) { + stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ), + stdlib_complex64( 7.0f, 8.0f ) + }; + + // Specify the number of elements: + const int N = 4; + + // Specify the stride length: + const int strideX = 1; + + c_csscal( N, 2.0f, (void *)x, strideX ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "x[ %i ] = %f + %fj\n", i, stdlib_complex64_real( x[ i ] ), stdlib_complex64_imag( x[ i ] ) ); + } + + c_csscal_ndarray( N, 2.0f, (void *)x, strideX, 0 ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "x[ %i ] = %f + %fj\n", i, stdlib_complex64_real( x[ i ] ), stdlib_complex64_imag( x[ i ] ) ); + } +} ```
+
+ + + From 6ecd08ddf7ec029f19ea571eee4af13ebff29d5e Mon Sep 17 00:00:00 2001 From: kaustubh Date: Thu, 28 May 2026 13:11:07 +0530 Subject: [PATCH 8/9] fix: cleanup for manifest --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/blas/base/csscal/manifest.json | 42 +++---------------- 1 file changed, 6 insertions(+), 36 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/csscal/manifest.json b/lib/node_modules/@stdlib/blas/base/csscal/manifest.json index ba1a33cce11e..5b4f3d248e5c 100644 --- a/lib/node_modules/@stdlib/blas/base/csscal/manifest.json +++ b/lib/node_modules/@stdlib/blas/base/csscal/manifest.json @@ -71,10 +71,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", - "@stdlib/math/base/assert/is-nanf", "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, @@ -96,8 +93,6 @@ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, @@ -148,10 +143,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/math/base/assert/is-nanf", - "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag" + "@stdlib/complex/float32/ctor" ] }, { @@ -173,9 +165,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag" + "@stdlib/complex/float32/ctor" ] }, @@ -222,10 +212,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", - "@stdlib/math/base/assert/is-nanf", "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, @@ -247,8 +234,6 @@ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, @@ -297,10 +282,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/math/base/assert/is-nanf", - "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag" + "@stdlib/complex/float32/ctor" ] }, { @@ -321,9 +303,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag" + "@stdlib/complex/float32/ctor" ] }, @@ -373,10 +353,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/math/base/assert/is-nanf", - "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag" + "@stdlib/complex/float32/ctor" ] }, { @@ -398,9 +375,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag" + "@stdlib/complex/float32/ctor" ] }, @@ -447,10 +422,7 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", - "@stdlib/math/base/assert/is-nanf", "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, @@ -472,8 +444,6 @@ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", "@stdlib/complex/float32/ctor", - "@stdlib/complex/float32/real", - "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, From 2bf964eec5465a9f6dcd5db2cc853a61e868c5f7 Mon Sep 17 00:00:00 2001 From: kaustubh Date: Thu, 28 May 2026 14:48:38 +0530 Subject: [PATCH 9/9] fix: update the example.c implementation --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: missing_dependencies - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../blas/base/csscal/examples/c/example.c | 26 ++++++++++--------- .../@stdlib/blas/base/csscal/manifest.json | 18 ++++++++++--- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/csscal/examples/c/example.c b/lib/node_modules/@stdlib/blas/base/csscal/examples/c/example.c index df06cc3d9d36..d437841dd354 100644 --- a/lib/node_modules/@stdlib/blas/base/csscal/examples/c/example.c +++ b/lib/node_modules/@stdlib/blas/base/csscal/examples/c/example.c @@ -17,34 +17,36 @@ */ #include "stdlib/blas/base/csscal.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/complex/float32/real.h" +#include "stdlib/complex/float32/imag.h" #include int main( void ) { - // Create a strided array of interleaved real and imaginary components: - float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; - - // Create a real scalar: - const float alpha = 2.0f; + stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ), + stdlib_complex64( 7.0f, 8.0f ) + }; // Specify the number of elements: const int N = 4; - // Specify stride length: + // Specify the stride length: const int strideX = 1; - // Scale the elements of the array: - c_csscal( N, alpha, (void *)x, strideX ); + c_csscal( N, 2.0f, (void *)x, strideX ); // Print the result: for ( int i = 0; i < N; i++ ) { - printf( "x[ %i ] = %f + %fj\n", i, x[ i*2 ], x[ (i*2)+1 ] ); + printf( "x[ %i ] = %f + %fj\n", i, stdlib_complex64_real( x[ i ] ), stdlib_complex64_imag( x[ i ] ) ); } - // Scale the elements of the array using alternative indexing semantics: - c_csscal_ndarray( N, alpha, (void *)x, -strideX, 3 ); + c_csscal_ndarray( N, 2.0f, (void *)x, strideX, 0 ); // Print the result: for ( int i = 0; i < N; i++ ) { - printf( "x[ %i ] = %f + %fj\n", i, x[ i*2 ], x[ (i*2)+1 ] ); + printf( "x[ %i ] = %f + %fj\n", i, stdlib_complex64_real( x[ i ] ), stdlib_complex64_imag( x[ i ] ) ); } } diff --git a/lib/node_modules/@stdlib/blas/base/csscal/manifest.json b/lib/node_modules/@stdlib/blas/base/csscal/manifest.json index 5b4f3d248e5c..8ccd02922b8b 100644 --- a/lib/node_modules/@stdlib/blas/base/csscal/manifest.json +++ b/lib/node_modules/@stdlib/blas/base/csscal/manifest.json @@ -93,6 +93,8 @@ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", "@stdlib/complex/float32/ctor", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, @@ -165,7 +167,9 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/complex/float32/ctor" + "@stdlib/complex/float32/ctor", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag" ] }, @@ -234,6 +238,8 @@ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", "@stdlib/complex/float32/ctor", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] }, @@ -303,7 +309,9 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/complex/float32/ctor" + "@stdlib/complex/float32/ctor", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag" ] }, @@ -375,7 +383,9 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/min-view-buffer-index", - "@stdlib/complex/float32/ctor" + "@stdlib/complex/float32/ctor", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag" ] }, @@ -444,6 +454,8 @@ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", "@stdlib/complex/float32/ctor", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag", "@stdlib/complex/float32/base/scale" ] },