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..f923b6d41ed6 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,13 @@ 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 ); + return dnrm2( N, diff, 1 ); }