Skip to content

Commit 2f41a15

Browse files
committed
Refactor to wrap specific implementation
1 parent 3725cc7 commit 2f41a15

File tree

4 files changed

+9
-62
lines changed

4 files changed

+9
-62
lines changed

lib/node_modules/@stdlib/stats/base/sdsmean/lib/ndarray.js

+2-18
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
// MODULES //
2222

23-
var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
23+
var sdsmeanors = require( '@stdlib/stats/base/sdsmeanors' ).ndarray;
2424

2525

2626
// MAIN //
@@ -45,23 +45,7 @@ var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
4545
* // returns 1.25
4646
*/
4747
function sdsmean( N, x, stride, offset ) {
48-
var sum;
49-
var ix;
50-
var i;
51-
52-
if ( N <= 0 ) {
53-
return NaN;
54-
}
55-
if ( N === 1 || stride === 0 ) {
56-
return x[ offset ];
57-
}
58-
ix = offset;
59-
sum = 0.0;
60-
for ( i = 0; i < N; i++ ) {
61-
sum += x[ ix ];
62-
ix += stride;
63-
}
64-
return float64ToFloat32( sum / N );
48+
return sdsmeanors( N, x, stride, offset );
6549
}
6650

6751

lib/node_modules/@stdlib/stats/base/sdsmean/lib/sdsmean.js

+2-22
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
// MODULES //
2222

23-
var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
23+
var sdsmeanors = require( '@stdlib/stats/base/sdsmeanors' );
2424

2525

2626
// MAIN //
@@ -43,27 +43,7 @@ var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
4343
* // returns ~0.3333
4444
*/
4545
function sdsmean( N, x, stride ) {
46-
var sum;
47-
var ix;
48-
var i;
49-
50-
if ( N <= 0 ) {
51-
return NaN;
52-
}
53-
if ( N === 1 || stride === 0 ) {
54-
return x[ 0 ];
55-
}
56-
if ( stride < 0 ) {
57-
ix = (1-N) * stride;
58-
} else {
59-
ix = 0;
60-
}
61-
sum = 0.0;
62-
for ( i = 0; i < N; i++ ) {
63-
sum += x[ ix ];
64-
ix += stride;
65-
}
66-
return float64ToFloat32( sum / N );
46+
return sdsmeanors( N, x, stride );
6747
}
6848

6949

lib/node_modules/@stdlib/stats/base/sdsmean/manifest.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@
3434
"-lm"
3535
],
3636
"libpath": [],
37-
"dependencies": []
37+
"dependencies": [
38+
"@stdlib/stats/base/sdsmeanors"
39+
]
3840
}
3941
]
4042
}

lib/node_modules/@stdlib/stats/base/sdsmean/src/sdsmean.c

+2-21
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818

1919
#include "stdlib/stats/base/sdsmean.h"
20+
#include "stdlib/stats/base/sdsmeanors.h"
2021
#include <stdint.h>
2122

2223
/**
@@ -28,25 +29,5 @@
2829
* @return output value
2930
*/
3031
float stdlib_strided_sdsmean( const int64_t N, const float *X, const int64_t stride ) {
31-
double sum;
32-
int64_t ix;
33-
int64_t i;
34-
35-
if ( N <= 0 ) {
36-
return 0.0 / 0.0; // NaN
37-
}
38-
if ( N == 1 || stride == 0 ) {
39-
return X[ 0 ];
40-
}
41-
if ( stride < 0 ) {
42-
ix = (1-N) * stride;
43-
} else {
44-
ix = 0;
45-
}
46-
sum = 0.0;
47-
for ( i = 0; i < N; i++ ) {
48-
sum += (double)X[ ix ];
49-
ix += stride;
50-
}
51-
return sum / N;
32+
return stdlib_strided_sdsmeanors( N, X, stride );
5233
}

0 commit comments

Comments
 (0)