aureooms-js-algo
Version:
playground for algorithmic code bricks in JavaScript
63 lines (41 loc) • 2.84 kB
JavaScript
test ( "epsilon", function ( ) {
var absepsilon, relepsilon, epsilon;
epsilon = Math.pow( 2, -10 );
morethanepsilon = epsilon + epsilon / 128;
absepsilon = algo.__absepsilon__( epsilon );
relepsilon = algo.__relepsilon__( epsilon );
ok( absepsilon( 0, 0 ) === 0, " absolute 0 === 0 " );
ok( relepsilon( 0, 0 ) === 0, " relative 0 === 0 " );
ok( absepsilon( epsilon, 0 ) === 0, " absolute e === 0 " );
ok( absepsilon( -epsilon, 0 ) === 0, " absolute -e === 0 " );
ok( absepsilon( 0, epsilon ) === 0, " absolute 0 === e " );
ok( absepsilon( 0, -epsilon ) === 0, " absolute 0 === -e " );
ok( relepsilon( epsilon, 0 ) > 0, " relative e > 0 " );
ok( relepsilon( -epsilon, 0 ) < 0, " relative -e < 0 " );
ok( relepsilon( 0, epsilon ) < 0, " relative 0 < e " );
ok( relepsilon( 0, -epsilon ) > 0, " relative 0 > -e " );
ok( absepsilon( morethanepsilon, 0 ) > 0, " absolute e' > 0 " );
ok( absepsilon( -morethanepsilon, 0 ) < 0, " absolute -e' < 0 " );
ok( absepsilon( 0, morethanepsilon ) < 0, " absolute 0 < e' " );
ok( absepsilon( 0, -morethanepsilon ) > 0, " absolute 0 < -e' " );
ok( relepsilon( morethanepsilon, 0 ) > 0, " relative e' > 0 " );
ok( relepsilon( -morethanepsilon, 0 ) < 0, " relative -e' < 0 " );
ok( relepsilon( 0, morethanepsilon ) < 0, " relative 0 < e' " );
ok( relepsilon( 0, -morethanepsilon ) > 0, " relative 0 > -e' " );
ok( absepsilon( 1 + epsilon, 1 ) === 0, " absolute 1 + e === 1 " );
ok( absepsilon( 1 - epsilon, 1 ) === 0, " absolute 1 - e === 1 " );
ok( absepsilon( 1, 1 + epsilon ) === 0, " absolute 1 === 1 + e " );
ok( absepsilon( 1, 1 - epsilon ) === 0, " absolute 1 === 1 - e " );
ok( relepsilon( 1 * ( 1 + epsilon ), 1 ) === 0, " relative 1 * ( 1 + e ) === 1 " );
ok( relepsilon( 1 / ( 1 + epsilon ), 1 ) === 0, " relative 1 / ( 1 + e ) === 1 " );
ok( relepsilon( 1, 1 * ( 1 + epsilon ) ) === 0, " relative 1 === 1 * ( 1 + e ) " );
ok( relepsilon( 1, 1 / ( 1 + epsilon ) ) === 0, " relative 1 === 1 / ( 1 + e ) " );
ok( absepsilon( 1 + morethanepsilon, 1 ) > 0, " absolute 1 + e' > 1 " );
ok( absepsilon( 1 - morethanepsilon, 1 ) < 0, " absolute 1 - e' < 1 " );
ok( absepsilon( 1, 1 + morethanepsilon ) < 0, " absolute 1 < 1 + e' " );
ok( absepsilon( 1, 1 - morethanepsilon ) > 0, " absolute 1 > 1 - e' " );
ok( relepsilon( 1 * ( 1 + morethanepsilon ), 1 ) > 0, " relative 1 * ( 1 + e' ) > 1 " );
ok( relepsilon( 1 / ( 1 + morethanepsilon ), 1 ) < 0, " relative 1 / ( 1 + e' ) < 1 " );
ok( relepsilon( 1, 1 * ( 1 + morethanepsilon ) ) < 0, " relative 1 < 1 * ( 1 + e' ) " );
ok( relepsilon( 1, 1 / ( 1 + morethanepsilon ) ) > 0, " relative 1 > 1 / ( 1 + e' ) " );
} );