testMath3 method

void testMath3()

Implementation

void testMath3(){
  startTest( "[testing function, part 3]" );

  double e      = 2.71828182845904523536;
  double ln2    = 0.69314718055994530942;
  double rthalf = 0.70710678118654752440;

  debugPrint( "facosh" );
  test( "", ClipMath.approx( MathComplex.facosh( 1.0 ), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.facosh( (e + 1.0 / e) / 2.0 ), 1.0 ) );

  debugPrint( "fasinh" );
  test( "", ClipMath.approx( MathComplex.fasinh( -(e - 1.0 / e) / 2.0 ), -1.0 ) );
  test( "", ClipMath.approx( MathComplex.fasinh( 0.0 ), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.fasinh( (e - 1.0 / e) / 2.0 ), 1.0 ) );

  debugPrint( "fatanh" );
  test( "", ClipMath.approx( MathComplex.fatanh( -(e * e - 1.0) / (e * e + 1.0) ), -1.0 ) );
  test( "", ClipMath.approx( MathComplex.fatanh( 0.0 ), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.fatanh( (e * e - 1.0) / (e * e + 1.0) ), 1.0 ) );

  debugPrint( "fcosh" );
  test( "", ClipMath.approx( MathComplex.fcosh( -1.0 ), (e + 1.0 / e) / 2.0 ) );
  test( "", ClipMath.approx( MathComplex.fcosh( 0.0 ), 1.0 ) );
  test( "", ClipMath.approx( MathComplex.fcosh( 1.0 ), (e + 1.0 / e) / 2.0 ) );

  debugPrint( "exp" );
  test( "", ClipMath.approx( MathComplex.floatToComplex( -1.0 ).exp().toFloat(), 1.0 / e ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 0.0 ).exp().toFloat(), 1.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( ln2 ).exp().toFloat(), 2.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 1.0 ).exp().toFloat(), e ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 3.0 ).exp().toFloat(), e * e * e ) );

  debugPrint( "exp10" );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 0.0 ).exp10().toFloat(), 1.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 1.0 - MathComplex.floatToComplex( 2.0 ).log10().toFloat() ).exp10().toFloat(), 5.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 5.0 ).exp10().toFloat(), 1e5 ) );
debugPrint( "${MathComplex.floatToComplex( 5.0 ).exp10().toFloat()} ${1e5}" );

  debugPrint( "log" );
  test( "", MathComplex.floatToComplex( 1.0 ).log().toFloat() == 0.0 );
  test( "", ClipMath.approx( MathComplex.floatToComplex( e ).log().toFloat(), 1.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( (e * e * e) ).log().toFloat(), 3.0 ) );

  debugPrint( "log10" );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 1.0 ).log10().toFloat(), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 5.0 ).log10().toFloat(), 1.0 - MathComplex.floatToComplex( 2.0 ).log10().toFloat() ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 1e5 ).log10().toFloat(), 5.0 ) );

  debugPrint( "pow" );
  test( "", ClipMath.approx( MathComplex.floatToComplex( -2.5 ).pow( 2.0 ).toFloat(), 6.25 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( -2.0 ).pow( -3.0 ).toFloat(), -0.125 ) );
  test( "", MathComplex.floatToComplex( 0.0 ).pow( 6.0 ).toFloat() == 0.0 );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 2.0 ).pow( -0.5 ).toFloat(), rthalf ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 3.0 ).pow( 4.0 ).toFloat(), 81.0 ) );

  debugPrint( "fsinh" );
  test( "", ClipMath.approx( MathComplex.fsinh( -1.0 ), -(e - 1.0 / e) / 2.0 ) );
  test( "", ClipMath.approx( MathComplex.fsinh( 0.0 ), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.fsinh( 1.0 ), (e - 1.0 / e) / 2.0 ) );

  debugPrint( "sqr" );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 0.0 ).sqr().toFloat(), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( rthalf ).sqr().toFloat(), 0.5 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 1.0 ).sqr().toFloat(), 1.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 1.0 / rthalf ).sqr().toFloat(), 2.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 12.0 ).sqr().toFloat(), 144.0 ) );

  debugPrint( "sqrt" );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 0.0 ).sqrt().toFloat(), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 0.5 ).sqrt().toFloat(), rthalf ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 1.0 ).sqrt().toFloat(), 1.0 ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 2.0 ).sqrt().toFloat(), 1.0 / rthalf ) );
  test( "", ClipMath.approx( MathComplex.floatToComplex( 144.0 ).sqrt().toFloat(), 12.0 ) );

  debugPrint( "ftanh" );
  test( "", ClipMath.approx( MathComplex.ftanh( -1.0 ), -(e * e - 1.0) / (e * e + 1.0) ) );
  test( "", ClipMath.approx( MathComplex.ftanh( 0.0 ), 0.0 ) );
  test( "", ClipMath.approx( MathComplex.ftanh( 1.0 ), (e * e - 1.0) / (e * e + 1.0) ) );

  endTest();
}