From 9680d6b6a524c925449b0ce39892c15816ca05b5 Mon Sep 17 00:00:00 2001 From: Nakul Krishnakumar Date: Fri, 14 Nov 2025 11:53:54 +0530 Subject: [PATCH 1/2] chore: use existing BLAS implementation for `ml/incr/kmeans/lib/euclidean` --- 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: passed - 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/ml/incr/kmeans/lib/euclidean.js | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js b/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js index 7e13dd2dd381..9679794ce810 100644 --- a/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js +++ b/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2018 The Stdlib Authors. +* Copyright (c) 2025 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. @@ -20,7 +20,16 @@ // MODULES // -var sqrt = require( '@stdlib/math/base/special/sqrt' ); +var dnrm2 = require( '@stdlib/blas/base/dnrm2' ); +var dcopy = require( '@stdlib/blas/base/dcopy' ); +var daxpy = require( '@stdlib/blas/base/daxpy' ); +var Float64Array = require( '@stdlib/array/float64' ); + + +// VARIABLES // + +// to compute X + (-1)*Y +var ALPHA = -1; // MAIN // @@ -38,23 +47,15 @@ var sqrt = require( '@stdlib/math/base/special/sqrt' ); * @param {NonNegativeInteger} offsetY - index offset * @returns {number} Euclidean distance */ -function euclidean( N, X, strideX, offsetX, Y, strideY, offsetY ) { // TODO: remove and use BLAS implementation - var xi; - var yi; - var d; - var s; - var i; - - xi = offsetX; - yi = offsetY; - s = 0.0; - for ( i = 0; i < N; i++ ) { - d = X[ xi ] - Y[ yi ]; - s += d * d; - xi += strideX; - yi += strideY; - } - return sqrt( s ); +function euclidean( N, X, strideX, offsetX, Y, strideY, offsetY ) { + var diff; + + diff = new Float64Array( N ); + dcopy.ndarray( N, X, strideX, offsetX, diff, 1, 0 ); // Magic number `0` for offset since `diff` is contiguous + + daxpy.ndarray( N, ALPHA, Y, strideY, offsetY, diff, 1, 0 ); // Magic number `-1` for alpha to compute `X - Y` + + return dnrm2( N, diff, 1 ); } From 06cbbe10cb81c0c05825aa17e069934c5a54401a Mon Sep 17 00:00:00 2001 From: Nakul Krishnakumar Date: Fri, 14 Nov 2025 11:58:29 +0530 Subject: [PATCH 2/2] style: remove empty lines --- 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: passed - 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 --- --- lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js b/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js index 9679794ce810..f923b6d41ed6 100644 --- a/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js +++ b/lib/node_modules/@stdlib/ml/incr/kmeans/lib/euclidean.js @@ -52,9 +52,7 @@ function euclidean( N, X, strideX, offsetX, Y, strideY, offsetY ) { diff = new Float64Array( N ); dcopy.ndarray( N, X, strideX, offsetX, diff, 1, 0 ); // Magic number `0` for offset since `diff` is contiguous - - daxpy.ndarray( N, ALPHA, Y, strideY, offsetY, diff, 1, 0 ); // Magic number `-1` for alpha to compute `X - Y` - + daxpy.ndarray( N, ALPHA, Y, strideY, offsetY, diff, 1, 0 ); return dnrm2( N, diff, 1 ); }