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