Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,5 @@ double stdlib_base_dists_kumaraswamy_median( const double a, const double b ) {
) {
return 0.0/0.0; // NaN
}
return 1.0 - stdlib_base_pow( 0.5, 1.0 / b );
return stdlib_base_pow( 1.0 - stdlib_base_pow( 2.0, -1.0 / b ), 1.0 / a );
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,30 +55,63 @@ tape( 'if provided `NaN` for any parameter, the function returns `NaN`', opts, f
var v = median( NaN, 0.5 );
t.equal( isnan( v ), true, 'returns NaN' );

v = median( 10, NaN );
v = median( 10.0, NaN );
t.equal( isnan( v ), true, 'returns NaN' );

v = median( NaN, NaN );
t.equal( isnan( v ), true, 'returns NaN' );
t.end();
});

tape( 'if provided a nonpositive `a`, the function returns `NaN`', opts, function test( t ) {
var y;

y = median( 0.0, 2.0 );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( -1.0, 2.0 );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( -1.0, 2.0 );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( NINF, 1.0 );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( NINF, PINF );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( NINF, NINF );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( NINF, NaN );
t.equal( isnan( y ), true, 'returns NaN' );

t.end();
});

tape( 'if provided a nonpositive `gamma`, the function always returns `NaN`', opts, function test( t ) {
tape( 'if provided a nonpositive `b`, the function returns `NaN`', opts, function test( t ) {
var y;

y = median( 0.0, 0.0 );
y = median( 2.0, 0.0 );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( 0.0, -1.0 );
y = median( 2.0, -1.0 );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( 0.0, NINF );
y = median( 2.0, -1/0 );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( 1.0, NINF );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( PINF, NINF );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( NINF, NINF );
t.equal( isnan( y ), true, 'returns NaN' );

y = median( NaN, NINF );
t.equal( isnan( y ), true, 'returns NaN' );

t.end();
});

Expand Down
Loading