Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
71a080a
feat: add-erlang-mgf
Neerajpathak07 Dec 27, 2024
c9a8a64
fix: CI errors
Neerajpathak07 Dec 27, 2024
40c9582
chore: clean up
Neerajpathak07 Jan 17, 2025
8034e8d
fix: lint errors
Neerajpathak07 Jan 17, 2025
d063893
chore: update copyright years
stdlib-bot Jan 17, 2025
3d4ef6a
chore: update bench
Neerajpathak07 Jan 17, 2025
af4b72c
Merge branch 'add-erlang-mgf' of https://github.com/Neerajpathak07/st…
Neerajpathak07 Jan 17, 2025
3762f89
chore: minor updates
Neerajpathak07 Jan 31, 2025
74328fe
Merge branch 'develop' into add-erlang-mgf
Neerajpathak07 Jan 31, 2025
025599f
chore: changes from code review
Neerajpathak07 Feb 5, 2025
77fde89
chore: update C doxygen
Neerajpathak07 Feb 5, 2025
3e5f04b
chore: stuff from code review
Neerajpathak07 Feb 6, 2025
6e82f82
chore: minor clean up
Neerajpathak07 Feb 7, 2025
ef4f313
chore: update markdown description
Neerajpathak07 Feb 7, 2025
0ca86bd
feat: add `stats/strided/svariancepn`
aayush0325 Mar 30, 2025
b693ff6
remove: remove `stats/base/svariancepn` from namespace
aayush0325 Mar 30, 2025
fbce42c
refactor: update paths
aayush0325 Mar 30, 2025
af92297
remove: remove `stats/base/svariancepn`
aayush0325 Mar 30, 2025
5d86005
feat: add `stats/strided/svariancetk`
aayush0325 Mar 30, 2025
8d3dbb6
remove: remove `stats/base/svariancetk` from namespace
aayush0325 Mar 30, 2025
d29459f
refactor: update paths
aayush0325 Mar 30, 2025
7b3052a
remove: remove `stats/base/svariancetk`
aayush0325 Mar 30, 2025
85ac23f
feat: add `stats/strided/svarianceyc`
aayush0325 Mar 30, 2025
17d38ef
remove: remove `stats/base/svarianceyc` from namespace
aayush0325 Mar 30, 2025
3ec0e00
refactor: update paths
aayush0325 Mar 30, 2025
9b938de
remove: remove `stats/base/svarianceyc`
aayush0325 Mar 30, 2025
046574d
chore: clean up
Neerajpathak07 Apr 3, 2025
c47d941
Merge branch 'develop' of https://github.com/Neerajpathak07/stdlib in…
Neerajpathak07 Apr 3, 2025
ab6b953
fix: native tests
Neerajpathak07 Apr 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@
});

ns.push({
'alias': 'base.strided.dasum',

Check warning on line 133 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dasum"
'path': '@stdlib/blas/base/dasum',
'value': require( '@stdlib/blas/base/dasum' ),
'type': 'Function',
Expand All @@ -144,7 +144,7 @@
});

ns.push({
'alias': 'base.strided.dasumpw',

Check warning on line 147 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dasumpw"
'path': '@stdlib/blas/ext/base/dasumpw',
'value': require( '@stdlib/blas/ext/base/dasumpw' ),
'type': 'Function',
Expand Down Expand Up @@ -172,7 +172,7 @@
});

ns.push({
'alias': 'base.strided.dcbrt',

Check warning on line 175 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dcbrt"
'path': '@stdlib/math/strided/special/dcbrt',
'value': require( '@stdlib/math/strided/special/dcbrt' ),
'type': 'Function',
Expand All @@ -184,7 +184,7 @@
});

ns.push({
'alias': 'base.strided.dceil',

Check warning on line 187 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dceil"
'path': '@stdlib/math/strided/special/dceil',
'value': require( '@stdlib/math/strided/special/dceil' ),
'type': 'Function',
Expand Down Expand Up @@ -243,7 +243,7 @@
});

ns.push({
'alias': 'base.strided.dcumin',

Check warning on line 246 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dcumin"
'path': '@stdlib/stats/base/dcumin',
'value': require( '@stdlib/stats/base/dcumin' ),
'type': 'Function',
Expand All @@ -257,7 +257,7 @@
});

ns.push({
'alias': 'base.strided.dcuminabs',

Check warning on line 260 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dcuminabs"
'path': '@stdlib/stats/strided/dcuminabs',
'value': require( '@stdlib/stats/strided/dcuminabs' ),
'type': 'Function',
Expand All @@ -271,7 +271,7 @@
});

ns.push({
'alias': 'base.strided.dcusum',

Check warning on line 274 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dcusum"
'path': '@stdlib/blas/ext/base/dcusum',
'value': require( '@stdlib/blas/ext/base/dcusum' ),
'type': 'Function',
Expand All @@ -284,7 +284,7 @@
});

ns.push({
'alias': 'base.strided.dcusumkbn',

Check warning on line 287 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dcusumkbn"
'path': '@stdlib/blas/ext/base/dcusumkbn',
'value': require( '@stdlib/blas/ext/base/dcusumkbn' ),
'type': 'Function',
Expand All @@ -297,7 +297,7 @@
});

ns.push({
'alias': 'base.strided.dcusumkbn2',

Check warning on line 300 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dcusumkbn"
'path': '@stdlib/blas/ext/base/dcusumkbn2',
'value': require( '@stdlib/blas/ext/base/dcusumkbn2' ),
'type': 'Function',
Expand All @@ -310,7 +310,7 @@
});

ns.push({
'alias': 'base.strided.dcusumors',

Check warning on line 313 in lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/d.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unknown word: "dcusumors"
'path': '@stdlib/blas/ext/base/dcusumors',
'value': require( '@stdlib/blas/ext/base/dcusumors' ),
'type': 'Function',
Expand Down Expand Up @@ -2168,7 +2168,7 @@
'@stdlib/stats/strided/dsvariance',
'@stdlib/stats/base/variancepn',
'@stdlib/stats/base/sdsvariance',
'@stdlib/stats/base/svariancepn'
'@stdlib/stats/strided/svariancepn'
]
});

Expand Down Expand Up @@ -2280,7 +2280,7 @@
'@stdlib/stats/strided/dnanvariancepn',
'@stdlib/stats/strided/dstdevpn',
'@stdlib/stats/strided/dvariance',
'@stdlib/stats/base/svariancepn',
'@stdlib/stats/strided/svariancepn',
'@stdlib/stats/base/variancepn'
]
});
Expand All @@ -2294,7 +2294,7 @@
'@stdlib/stats/strided/dnanvariancetk',
'@stdlib/stats/strided/dstdevtk',
'@stdlib/stats/strided/dvariance',
'@stdlib/stats/base/svariancetk',
'@stdlib/stats/strided/svariancetk',
'@stdlib/stats/base/variancetk'
]
});
Expand Down Expand Up @@ -2322,7 +2322,7 @@
'@stdlib/stats/strided/dnanvarianceyc',
'@stdlib/stats/strided/dstdevyc',
'@stdlib/stats/strided/dvariance',
'@stdlib/stats/base/svarianceyc',
'@stdlib/stats/strided/svarianceyc',
'@stdlib/stats/base/varianceyc'
]
});
Expand Down
24 changes: 12 additions & 12 deletions lib/node_modules/@stdlib/namespace/lib/namespace/base/strided/s.js
Original file line number Diff line number Diff line change
Expand Up @@ -1406,7 +1406,7 @@ ns.push({
'@stdlib/stats/base/nanvariancepn',
'@stdlib/stats/base/snanstdevpn',
'@stdlib/stats/base/snanvariance',
'@stdlib/stats/base/svariancepn'
'@stdlib/stats/strided/svariancepn'
]
});

Expand All @@ -1420,7 +1420,7 @@ ns.push({
'@stdlib/stats/base/nanvariancetk',
'@stdlib/stats/base/snanstdevtk',
'@stdlib/stats/base/snanvariance',
'@stdlib/stats/base/svariancetk'
'@stdlib/stats/strided/svariancetk'
]
});

Expand Down Expand Up @@ -1448,7 +1448,7 @@ ns.push({
'@stdlib/stats/base/nanvarianceyc',
'@stdlib/stats/base/snanstdevyc',
'@stdlib/stats/base/snanvariance',
'@stdlib/stats/base/svarianceyc'
'@stdlib/stats/strided/svarianceyc'
]
});

Expand Down Expand Up @@ -1652,7 +1652,7 @@ ns.push({
'@stdlib/stats/base/sstdev',
'@stdlib/stats/base/sstdevmpn',
'@stdlib/stats/base/stdevpn',
'@stdlib/stats/base/svariancepn'
'@stdlib/stats/strided/svariancepn'
]
});

Expand All @@ -1666,7 +1666,7 @@ ns.push({
'@stdlib/stats/base/snanstdevtk',
'@stdlib/stats/base/sstdev',
'@stdlib/stats/base/stdevtk',
'@stdlib/stats/base/svariancetk'
'@stdlib/stats/strided/svariancetk'
]
});

Expand Down Expand Up @@ -1694,7 +1694,7 @@ ns.push({
'@stdlib/stats/base/snanstdevyc',
'@stdlib/stats/base/sstdev',
'@stdlib/stats/base/stdevyc',
'@stdlib/stats/base/svarianceyc'
'@stdlib/stats/strided/svarianceyc'
]
});

Expand Down Expand Up @@ -1920,8 +1920,8 @@ ns.push({

ns.push({
'alias': 'base.strided.svariancepn',
'path': '@stdlib/stats/base/svariancepn',
'value': require( '@stdlib/stats/base/svariancepn' ),
'path': '@stdlib/stats/strided/svariancepn',
'value': require( '@stdlib/stats/strided/svariancepn' ),
'type': 'Function',
'related': [
'@stdlib/stats/strided/dvariancepn',
Expand All @@ -1935,8 +1935,8 @@ ns.push({

ns.push({
'alias': 'base.strided.svariancetk',
'path': '@stdlib/stats/base/svariancetk',
'value': require( '@stdlib/stats/base/svariancetk' ),
'path': '@stdlib/stats/strided/svariancetk',
'value': require( '@stdlib/stats/strided/svariancetk' ),
'type': 'Function',
'related': [
'@stdlib/stats/strided/dvariancetk',
Expand All @@ -1963,8 +1963,8 @@ ns.push({

ns.push({
'alias': 'base.strided.svarianceyc',
'path': '@stdlib/stats/base/svarianceyc',
'value': require( '@stdlib/stats/base/svarianceyc' ),
'path': '@stdlib/stats/strided/svarianceyc',
'value': require( '@stdlib/stats/strided/svarianceyc' ),
'type': 'Function',
'related': [
'@stdlib/stats/strided/dvarianceyc',
Expand Down
12 changes: 6 additions & 6 deletions lib/node_modules/@stdlib/stats/base/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,10 @@ The namespace contains the following statistical functions:
- <span class="signature">[`stdevyc( N, correction, x, stride )`][@stdlib/stats/base/stdevyc]</span><span class="delimiter">: </span><span class="description">calculate the standard deviation of a strided array using a one-pass algorithm proposed by Youngs and Cramer.</span>
- <span class="signature">[`svariance( N, correction, x, stride )`][@stdlib/stats/base/svariance]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array.</span>
- <span class="signature">[`svariancech( N, correction, x, strideX )`][@stdlib/stats/strided/svariancech]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using a one-pass trial mean algorithm.</span>
- <span class="signature">[`svariancepn( N, correction, x, strideX )`][@stdlib/stats/base/svariancepn]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using a two-pass algorithm.</span>
- <span class="signature">[`svariancetk( N, correction, x, strideX )`][@stdlib/stats/base/svariancetk]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using a one-pass textbook algorithm.</span>
- <span class="signature">[`svariancepn( N, correction, x, strideX )`][@stdlib/stats/strided/svariancepn]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using a two-pass algorithm.</span>
- <span class="signature">[`svariancetk( N, correction, x, strideX )`][@stdlib/stats/strided/svariancetk]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using a one-pass textbook algorithm.</span>
- <span class="signature">[`svariancewd( N, correction, x, stride )`][@stdlib/stats/base/svariancewd]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using Welford's algorithm.</span>
- <span class="signature">[`svarianceyc( N, correction, x, strideX )`][@stdlib/stats/base/svarianceyc]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using a one-pass algorithm proposed by Youngs and Cramer.</span>
- <span class="signature">[`svarianceyc( N, correction, x, strideX )`][@stdlib/stats/strided/svarianceyc]</span><span class="delimiter">: </span><span class="description">calculate the variance of a single-precision floating-point strided array using a one-pass algorithm proposed by Youngs and Cramer.</span>
- <span class="signature">[`variance( N, correction, x, stride )`][@stdlib/stats/base/variance]</span><span class="delimiter">: </span><span class="description">calculate the variance of a strided array.</span>
- <span class="signature">[`variancech( N, correction, x, stride )`][@stdlib/stats/base/variancech]</span><span class="delimiter">: </span><span class="description">calculate the variance of a strided array using a one-pass trial mean algorithm.</span>
- <span class="signature">[`variancepn( N, correction, x, stride )`][@stdlib/stats/base/variancepn]</span><span class="delimiter">: </span><span class="description">calculate the variance of a strided array using a two-pass algorithm.</span>
Expand Down Expand Up @@ -663,13 +663,13 @@ console.log( objectKeys( ns ) );

[@stdlib/stats/strided/svariancech]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/strided/svariancech

[@stdlib/stats/base/svariancepn]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/base/svariancepn
[@stdlib/stats/strided/svariancepn]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/strided/svariancepn

[@stdlib/stats/base/svariancetk]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/base/svariancetk
[@stdlib/stats/strided/svariancetk]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/strided/svariancetk

[@stdlib/stats/base/svariancewd]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/base/svariancewd

[@stdlib/stats/base/svarianceyc]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/base/svarianceyc
[@stdlib/stats/strided/svarianceyc]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/strided/svarianceyc

[@stdlib/stats/base/variance]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/base/variance

Expand Down
98 changes: 98 additions & 0 deletions lib/node_modules/@stdlib/stats/base/dists/erlang/mgf/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,104 @@ for ( i = 0; i < 10; i++ ) {

<!-- /.examples -->

<!-- C interface documentation. -->

<section class="c">

## C APIs

<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->

<section class="intro">

</section>

<!-- /.intro -->

<!-- C usage documentation. -->

<section class="usage">

### Usage

```c
#include "stdlib/stats/base/dists/erlang/mgf.h"
```

#### stdlib_base_dists_erlang_mgf( t, k, lambda )

Evaluates the [moment-generating function][mgf] (mgf) for an [Erlang][erlang-distribution] distribution with parameters `k` (shape parameter) and `lambda` (rate parameter).

```c
double y = stdlib_base_dists_erlang_mgf( 0.3, 1, 1.0 );
// returns ~1.429
```

The function accepts the following arguments:

- **t**: `[in] double` input value.
- **k**: `[in] int32_t` shape parameter.
- **lambda**: `[in] double` rate parameter.

```c
double stdlib_base_dists_erlang_mgf( const double t, const int32_t k, const double lambda );
```

</section>

<!-- /.usage -->

<!-- C API usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->

<section class="notes">

</section>

<!-- /.notes -->

<!-- C API usage examples. -->

<section class="examples">

### Examples

```c
#include "stdlib/stats/base/dists/erlang/mgf.h"
#include "stdlib/math/base/special/round.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>

static double random_uniform( const double min, const double max ) {
double v = (double)rand() / ( (double)RAND_MAX + 1.0 );
return min + ( v*(max-min) );
}

int main( void ) {
double lambda;
int32_t k;
double t;
double y;
int i;

for ( i = 0; i < 10; i++ ) {
k = stdlib_base_round( random_uniform( 0.0, 10.0 ) );
lambda = random_uniform( 0.0, 10.0 ) ;
t = random_uniform( 0.0, lambda );
y = stdlib_base_dists_erlang_mgf( t, k, lambda );
printf( "t: %lf, k: %d, λ: %lf, M_X(t;k,λ): %lf\n", t, k, lambda, y );
}
}
```

</section>

<!-- /.examples -->

</section>

<!-- /.c -->

<!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->

<section class="references">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@
// MODULES //

var bench = require( '@stdlib/bench' );
var Float64Array = require( '@stdlib/array/float64' );
var uniform = require( '@stdlib/random/base/uniform' );
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var uniform = require( '@stdlib/random/base/uniform' );
var Float64Array = require( '@stdlib/array/float64' );
var Int32Array = require( '@stdlib/array/int32' );
var isnan = require( '@stdlib/math/base/assert/is-nan' );
var EPS = require( '@stdlib/constants/float64/eps' );
var pkg = require( './../package.json' ).name;
Expand All @@ -41,11 +42,11 @@ bench( pkg, function benchmark( b ) {
var i;

len = 100;
k = new Float64Array( len );
k = new Int32Array( len );
lambda = new Float64Array( len );
t = new Float64Array( len );
for ( i = 0; i < len; i++ ) {
k[ i ] = discreteUniform( 0, 100 );
k[ i ] = discreteUniform( 1.0, 100.0 );
lambda[ i ] = uniform( EPS, 20.0 );
t[ i ] = uniform( 0.0, lambda[ i ] );
}
Expand Down Expand Up @@ -77,6 +78,7 @@ bench( pkg+':factory', function benchmark( b ) {
k = 2;
lambda = 1.5;
mymgf = mgf.factory( k, lambda );

len = 100;
t = new Float64Array( len );
for ( i = 0; i < len; i++ ) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/**
* @license Apache-2.0
*
* 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.
* 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.
*/

'use strict';

// MODULES //

var resolve = require( 'path' ).resolve;
var bench = require( '@stdlib/bench' );
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var uniform = require( '@stdlib/random/base/uniform' );
var Float64Array = require( '@stdlib/array/float64' );
var Int32Array = require( '@stdlib/array/int32' );
var isnan = require( '@stdlib/math/base/assert/is-nan' );
var tryRequire = require( '@stdlib/utils/try-require' );
var EPS = require( '@stdlib/constants/float64/eps' );
var pkg = require( './../package.json' ).name;


// VARIABLES //

var mgf = tryRequire( resolve( __dirname, './../lib/native.js' ) );
var opts = {
'skip': ( mgf instanceof Error )
};


// MAIN //

bench( pkg+'::native', opts, function benchmark( b ) {
var lambda;
var len;
var k;
var t;
var y;
var i;

len = 100;
k = new Int32Array( len );
lambda = new Float64Array( len );
t = new Float64Array( len );
for ( i = 0; i < len; i++ ) {
k[ i ] = discreteUniform( 1.0, 100.0 );
lambda[ i ] = uniform( EPS, 20.0 );
t[ i ] = uniform( 0.0, lambda[ i ] );
}

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
y = mgf( t[ i % len ], k[ i % len ], lambda[ i % len ] );
if ( isnan( y ) ) {
b.fail( 'should not return NaN' );
}
}
b.toc();
if ( isnan( y ) ) {
b.fail( 'should not return NaN' );
}
b.pass( 'benchmark finished' );
b.end();
});
Loading
Loading