File tree Expand file tree Collapse file tree 7 files changed +50
-30
lines changed
lib/node_modules/@stdlib/stats/base/dists/degenerate/entropy
include/stdlib/stats/base/dists/degenerate Expand file tree Collapse file tree 7 files changed +50
-30
lines changed Original file line number Diff line number Diff line change @@ -139,21 +139,12 @@ for ( i = 0; i < 10; i++ ) {
139139
140140#### stdlib_base_dists_degenerate_entropy( mu )
141141
142- Evaluates the differential entropy for a degenerate distribution with constant value of distribution ` mu ` .
142+ Returns the differential entropy for a degenerate distribution with constant value ` mu ` .
143143
144144
145145``` c
146146double y = stdlib_base_dists_degenerate_entropy( 0.1 );
147147// returns ~0.0
148-
149- y = stdlib_base_dists_degenerate_entropy( 0.5 );
150- // returns ~0.0
151-
152- y = stdlib_base_dists_degenerate_entropy( 10.0 );
153- // returns ~0.0
154-
155- y = stdlib_base_dists_degenerate_entropy( NaN );
156- // returns NaN
157148```
158149
159150The function accepts the following arguments:
@@ -187,13 +178,18 @@ double stdlib_base_dists_degenerate_entropy( const double mu );
187178#include <stdlib.h>
188179#include <stdio.h>
189180
181+ static double random_uniform( const double min, const double max ) {
182+ double v = (double)rand() / ( (double)RAND_MAX + 1.0 );
183+ return min + ( v*(max-min) );
184+ }
185+
190186int main( void ) {
191187 double mu;
192188 double y;
193189 int i;
194190
195191 for ( i = 0; i < 10; i++ ) {
196- mu = ( (double)rand() / (double)RAND_MAX );
192+ mu = random_uniform( 0.0, 1.0 );
197193 y = stdlib_base_dists_degenerate_entropy( mu );
198194 printf( "µ: %1f, H(X;µ): %lf\n", mu , y );
199195 }
Original file line number Diff line number Diff line change 2121// MODULES //
2222
2323var bench = require ( '@stdlib/bench' ) ;
24- var randu = require ( '@stdlib/random/base/randu' ) ;
24+ var uniform = require ( '@stdlib/random/base/uniform' ) ;
25+ var Float64Array = require ( '@stdlib/array/float64' ) ;
2526var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
2627var pkg = require ( './../package.json' ) . name ;
2728var entropy = require ( './../lib' ) ;
@@ -30,14 +31,20 @@ var entropy = require( './../lib' );
3031// MAIN //
3132
3233bench ( pkg , function benchmark ( b ) {
34+ var len ;
3335 var mu ;
3436 var y ;
3537 var i ;
3638
39+ len = 100 ;
40+ mu = new Float64Array ( len ) ;
41+ for ( i = 0 ; i < len ; i ++ ) {
42+ mu [ i ] = uniform ( - 50.0 , 50.0 ) ;
43+ }
44+
3745 b . tic ( ) ;
3846 for ( i = 0 ; i < b . iterations ; i ++ ) {
39- mu = ( randu ( ) * 100.0 ) - 50.0 ;
40- y = entropy ( mu ) ;
47+ y = entropy ( mu [ i % 100 ] ) ;
4148 if ( isnan ( y ) ) {
4249 b . fail ( 'should not return NaN' ) ;
4350 }
Original file line number Diff line number Diff line change 2222
2323var resolve = require ( 'path' ) . resolve ;
2424var bench = require ( '@stdlib/bench' ) ;
25- var randu = require ( '@stdlib/random/base/randu' ) ;
25+ var uniform = require ( '@stdlib/random/base/uniform' ) ;
26+ var Float64Array = require ( '@stdlib/array/float64' ) ;
2627var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
2728var tryRequire = require ( '@stdlib/utils/try-require' ) ;
2829var pkg = require ( './../package.json' ) . name ;
@@ -39,14 +40,20 @@ var opts = {
3940// MAIN //
4041
4142bench ( pkg + '::native' , opts , function benchmark ( b ) {
43+ var len ;
4244 var mu ;
4345 var y ;
4446 var i ;
4547
48+ len = 100 ;
49+ mu = new Float64Array ( len ) ;
50+ for ( i = 0 ; i < len ; i ++ ) {
51+ mu [ i ] = uniform ( - 50.0 , 50.0 ) ;
52+ }
53+
4654 b . tic ( ) ;
4755 for ( i = 0 ; i < b . iterations ; i ++ ) {
48- mu = ( randu ( ) * 100.0 ) - 50.0 ;
49- y = entropy ( mu ) ;
56+ y = entropy ( mu [ i % 100 ] ) ;
5057 if ( isnan ( y ) ) {
5158 b . fail ( 'should not return NaN' ) ;
5259 }
Original file line number Diff line number Diff line change @@ -75,13 +75,15 @@ static double tic( void ) {
7575}
7676
7777/**
78- * Generates a random number on the interval [0,1 ).
78+ * Generates a random number on the interval [min,max ).
7979*
80- * @return random number
80+ * @param min minimum value (inclusive)
81+ * @param max maximum value (exclusive)
82+ * @return random number
8183*/
82- static double rand_double ( void ) {
83- int r = rand ();
84- return ( double ) r / ( ( double ) RAND_MAX + 1.0 );
84+ static double random_uniform ( const double min , const double max ) {
85+ double v = ( double ) rand () / ( ( double ) RAND_MAX + 1.0 );
86+ return min + ( v * ( max - min ) );
8587}
8688
8789/**
@@ -91,15 +93,18 @@ static double rand_double( void ) {
9193*/
9294static double benchmark ( void ) {
9395 double elapsed ;
94- double mu ;
96+ double mu [ 100 ] ;
9597 double y ;
9698 double t ;
9799 int i ;
98100
101+ for ( i = 0 ; i < 100 ; i ++ ) {
102+ mu [ i ] = random_uniform ( -50.0 , -40.0 );
103+ }
104+
99105 t = tic ();
100106 for ( i = 0 ; i < ITERATIONS ; i ++ ) {
101- mu = ( ( (double )rand () / (double )RAND_MAX )* 10.0 ) - 50.0 ;
102- y = stdlib_base_dists_degenerate_entropy ( mu );
107+ y = stdlib_base_dists_degenerate_entropy ( mu [ i %100 ] );
103108 if ( y != y ) {
104109 printf ( "should not return NaN\n" );
105110 break ;
Original file line number Diff line number Diff line change 2020#include <stdlib.h>
2121#include <stdio.h>
2222
23+ static double random_uniform ( const double min , const double max ) {
24+ double v = (double )rand () / ( (double )RAND_MAX + 1.0 );
25+ return min + ( v * (max - min ) );
26+ }
27+
2328int main ( void ) {
2429 double mu ;
2530 double y ;
2631 int i ;
2732
2833 for ( i = 0 ; i < 10 ; i ++ ) {
29- mu = ( ( double ) rand () / ( double ) RAND_MAX );
34+ mu = random_uniform ( 0.0 , 1.0 );
3035 y = stdlib_base_dists_degenerate_entropy ( mu );
3136 printf ( "µ: %1f, H(X;µ): %lf\n" , mu , y );
3237 }
Original file line number Diff line number Diff line change @@ -27,7 +27,7 @@ extern "C" {
2727#endif
2828
2929/**
30- Evaluates the differential entropy for a degenerate distribution with constant value of distribution `mu`.
30+ Returns the differential entropy for a degenerate distribution with constant value `mu`.
3131*/
3232double stdlib_base_dists_degenerate_entropy ( const double mu );
3333
Original file line number Diff line number Diff line change 2020#include "stdlib/math/base/assert/is_nan.h"
2121
2222/**
23- * Evaluates the entropy for a degenerate distribution with constant value of distribution `mu`.
23+ * Returns the differential entropy for a degenerate distribution with constant value `mu`.
2424*
25- * @param mu constant value of distribution
26- * @returns Entropy
25+ * @param mu constant value of distribution
26+ * @returns Entropy
2727*
2828* @example
2929* double y = stdlib_base_dists_degenerate_entropy( 0.1 );
You can’t perform that action at this time.
0 commit comments