From 0538961650558fa4de2def08141e5132ae260862 Mon Sep 17 00:00:00 2001 From: ShabiShett07 Date: Sun, 25 May 2025 10:39:51 +0530 Subject: [PATCH 01/18] feat: add C implementation for blas/base/zdscal --- .../blas/base/zdscal/src/zdscal_ndarray.c | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_ndarray.c diff --git a/lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_ndarray.c b/lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_ndarray.c new file mode 100644 index 000000000000..1eaf30d1661e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_ndarray.c @@ -0,0 +1,47 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 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. +*/ + +#include "stdlib/blas/base/zdscal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float64/base/scale.h" + +/** +* Scales a double-precision complex floating-point vector by a double-precision floating-point constant using alternative indexing semantics. +* +* @param N number of indexed elements +* @param alpha constant +* @param X input array +* @param strideX X stride length +* @param offsetX starting index for X +*/ +void API_SUFFIX(c_zdscal_ndarray)( const CBLAS_INT N, const double alpha, void *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + double *x = (double *)X; + CBLAS_INT ix; + CBLAS_INT sx; + CBLAS_INT i; + double tmp; + + if ( N <= 0 || alpha == 1.0 ) { + return; + } + sx = strideX * 2; + ix = offsetX * 2; + for ( i = 0; i < N; i++ ) { + } + return; +} From 0dc7cda814df856231eef8323e1689407bb4e77f Mon Sep 17 00:00:00 2001 From: ShabiShett07 Date: Sun, 25 May 2025 23:12:34 +0530 Subject: [PATCH 02/18] chore: add 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: passed - task: lint_package_json status: passed - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - 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: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/blas/base/zdscal/README.md | 130 +++++++ .../base/zdscal/benchmark/benchmark.native.js | 113 ++++++ .../benchmark/benchmark.ndarray.native.js | 113 ++++++ .../blas/base/zdscal/benchmark/c/Makefile | 146 ++++++++ .../zdscal/benchmark/c/benchmark.length.c | 192 +++++++++++ .../base/zdscal/benchmark/fortran/Makefile | 141 ++++++++ .../benchmark/fortran/benchmark.length.f | 210 ++++++++++++ .../@stdlib/blas/base/zdscal/binding.gyp | 265 ++++++++++++++ .../blas/base/zdscal/examples/c/Makefile | 146 ++++++++ .../blas/base/zdscal/examples/c/example.c | 48 +++ .../@stdlib/blas/base/zdscal/include.gypi | 70 ++++ .../zdscal/include/stdlib/blas/base/zdscal.h | 49 +++ .../include/stdlib/blas/base/zdscal_cblas.h | 44 +++ .../include/stdlib/blas/base/zdscal_fortran.h | 43 +++ .../@stdlib/blas/base/zdscal/lib/native.js | 35 ++ .../blas/base/zdscal/lib/ndarray.native.js | 57 ++++ .../blas/base/zdscal/lib/zdscal.native.js | 57 ++++ .../@stdlib/blas/base/zdscal/manifest.json | 322 ++++++++++++++++++ .../@stdlib/blas/base/zdscal/package.json | 3 + .../@stdlib/blas/base/zdscal/src/Makefile | 70 ++++ .../@stdlib/blas/base/zdscal/src/addon.c | 65 ++++ .../@stdlib/blas/base/zdscal/src/zdscal.c | 35 ++ .../@stdlib/blas/base/zdscal/src/zdscal.f | 80 +++++ .../blas/base/zdscal/src/zdscal_cblas.c | 50 +++ .../@stdlib/blas/base/zdscal/src/zdscal_f.c | 51 +++ .../blas/base/zdscal/src/zdscal_ndarray.c | 11 +- .../base/zdscal/test/test.ndarray.native.js | 276 +++++++++++++++ .../base/zdscal/test/test.zdscal.native.js | 226 ++++++++++++ 28 files changed, 3043 insertions(+), 5 deletions(-) create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/benchmark/benchmark.ndarray.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/benchmark/c/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/benchmark/c/benchmark.length.c create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/benchmark/fortran/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/benchmark/fortran/benchmark.length.f create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/binding.gyp create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/include.gypi create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/include/stdlib/blas/base/zdscal.h create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/include/stdlib/blas/base/zdscal_cblas.h create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/include/stdlib/blas/base/zdscal_fortran.h create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/lib/native.js create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/lib/ndarray.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/lib/zdscal.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/manifest.json create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/src/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/src/addon.c create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal.c create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal.f create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_cblas.c create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_f.c create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/test/test.ndarray.native.js create mode 100644 lib/node_modules/@stdlib/blas/base/zdscal/test/test.zdscal.native.js diff --git a/lib/node_modules/@stdlib/blas/base/zdscal/README.md b/lib/node_modules/@stdlib/blas/base/zdscal/README.md index 49d5fc189255..8bc72da40065 100644 --- a/lib/node_modules/@stdlib/blas/base/zdscal/README.md +++ b/lib/node_modules/@stdlib/blas/base/zdscal/README.md @@ -149,6 +149,136 @@ console.log( zx.toString() ); + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/base/zdscal.h" +``` + +#### c_zdscal( N, alpha, \*X, strideX ) + +Scales a double-precision complex floating-point vector by a double-precision floating-point constant. + +```c +#include "stdlib/complex/float64/ctor.h" + +stdlib_complex128_t x[] = { stdlib_complex128( 1.0, 2.0 ), stdlib_complex128( 3.0, 4.0 ), stdlib_complex128( 5.0, 6.0 ) }; // interleaved real and imaginary components + +c_zdscal( 3, 2.0, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] double` constant. +- **x**: `[inout] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` index increment for `x`. + +```c +void c_zdscal( const CBLAS_INT N, const double alpha, stdlib_complex128_t *X, const CBLAS_INT strideX ); +``` + +#### c_zdscal_ndarray( N, alpha, \*X, strideX, offsetX ) + +Scales a double-precision complex floating-point vector by a double-precision floating-point constant using alternative indexing semantics. + +```c +stdlib_complex128_t x[] = { stdlib_complex128( 1.0, 2.0 ), stdlib_complex128( 3.0, 4.0 ), stdlib_complex128( 5.0, 6.0 ) }; // interleaved real and imaginary components + +c_zdscal_ndarray( 3, 2.0, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] double` 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_zdscal_ndarray( const CBLAS_INT N, const double alpha, stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/base/zdscal.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include + +int main( void ) { + // Create strided arrays: + stdlib_complex128_t x[] = { stdlib_complex128( 1.0, 2.0 ), stdlib_complex128( 3.0, 4.0 ), stdlib_complex128( 5.0, 6.0 ), stdlib_complex128( 7.0, 8.0 ) }; + + // Specify the number of elements: + const int N = 4; + + // Specify stride lengths: + const int strideX = 1; + + c_zdscal( N, 2.0, (void *)x, strideX ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "x[ %i ] = %lf + %lfj\n", i, stdlib_complex128_real( x[ i ] ), stdlib_complex128_imag( x[ i ] ) ); + } + + c_zdscal_ndarray( N, 2.0, (void *)x, strideX, 0 ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "x[ %i ] = %lf + %lfj\n", i, stdlib_complex128_real( x[ i ] ), stdlib_complex128_imag( x[ i ] ) ); + } +} +``` + +
+ + + +
+ + +