@@ -580,14 +580,16 @@ public void FastSin()
580580 }
581581
582582 [ Fact ]
583- public void Acos ( )
584- {
583+ public void Acos ( ) {
585584 var maxDelta = 0.00000001m ;
586585 var deltas = new List < decimal > ( ) ;
587586
587+ Assert . Equal ( Fix64 . Zero , Fix64 . Acos ( Fix64 . One ) ) ;
588+ Assert . Equal ( Fix64 . PiOver2 , Fix64 . Acos ( Fix64 . Zero ) ) ;
589+ Assert . Equal ( Fix64 . Pi , Fix64 . Acos ( - Fix64 . One ) ) ;
590+
588591 // Precision
589- for ( var x = - 1.0 ; x < 1.0 ; x += 0.001 )
590- {
592+ for ( var x = - 1.0 ; x < 1.0 ; x += 0.001 ) {
591593 var xf = ( Fix64 ) x ;
592594 var actual = ( decimal ) Fix64 . Acos ( xf ) ;
593595 var expected = ( decimal ) Math . Acos ( ( double ) xf ) ;
@@ -596,20 +598,19 @@ public void Acos()
596598 Assert . True ( delta <= maxDelta , string . Format ( "Precision: Acos({0}): expected {1} but got {2}" , xf , expected , actual ) ) ;
597599 }
598600
599- for ( int i = 0 ; i < m_testCases . Length ; ++ i )
600- {
601+ for ( int i = 0 ; i < m_testCases . Length ; ++ i ) {
601602 var b = Fix64 . FromRaw ( m_testCases [ i ] ) ;
602603
603- if ( b < - Fix64 . One )
604- continue ;
605- if ( b > Fix64 . One )
606- continue ;
607-
608- var expected = ( decimal ) Math . Acos ( ( double ) b ) ;
609- var actual = ( decimal ) Fix64 . Acos ( b ) ;
610- var delta = Math . Abs ( expected - actual ) ;
611- deltas . Add ( delta ) ;
612- Assert . True ( delta <= maxDelta , string . Format ( "Acos({0}) = expected {1} but got {2}" , b , expected , actual ) ) ;
604+ if ( b < - Fix64 . One || b > Fix64 . One ) {
605+ Assert . Throws < ArgumentOutOfRangeException > ( ( ) => Fix64 . Acos ( b ) ) ;
606+ }
607+ else {
608+ var expected = ( decimal ) Math . Acos ( ( double ) b ) ;
609+ var actual = ( decimal ) Fix64 . Acos ( b ) ;
610+ var delta = Math . Abs ( expected - actual ) ;
611+ deltas . Add ( delta ) ;
612+ Assert . True ( delta <= maxDelta , string . Format ( "Acos({0}) = expected {1} but got {2}" , b , expected , actual ) ) ;
613+ }
613614 }
614615 Console . WriteLine ( "Max error: {0} ({1} times precision)" , deltas . Max ( ) , deltas . Max ( ) / Fix64 . Precision ) ;
615616 Console . WriteLine ( "Average precision: {0} ({1} times precision)" , deltas . Average ( ) , deltas . Average ( ) / Fix64 . Precision ) ;
@@ -703,14 +704,14 @@ public void Tan()
703704 }
704705
705706 [ Fact ]
706- public void Atan ( )
707- {
707+ public void Atan ( ) {
708708 var maxDelta = 0.00000001m ;
709709 var deltas = new List < decimal > ( ) ;
710710
711+ Assert . Equal ( Fix64 . Zero , Fix64 . Atan ( Fix64 . Zero ) ) ;
712+
711713 // Precision
712- for ( var x = - 1.0 ; x < 1.0 ; x += 0.0001 )
713- {
714+ for ( var x = - 1.0 ; x < 1.0 ; x += 0.0001 ) {
714715 var xf = ( Fix64 ) x ;
715716 var actual = ( decimal ) Fix64 . Atan ( xf ) ;
716717 var expected = ( decimal ) Math . Atan ( ( double ) xf ) ;
@@ -720,8 +721,7 @@ public void Atan()
720721 }
721722
722723 // Scalability and edge cases
723- foreach ( var x in m_testCases )
724- {
724+ foreach ( var x in m_testCases ) {
725725 var xf = ( Fix64 ) x ;
726726 var actual = ( decimal ) Fix64 . Atan ( xf ) ;
727727 var expected = ( decimal ) Math . Atan ( ( double ) xf ) ;
@@ -732,7 +732,6 @@ public void Atan()
732732 Console . WriteLine ( "Max error: {0} ({1} times precision)" , deltas . Max ( ) , deltas . Max ( ) / Fix64 . Precision ) ;
733733 Console . WriteLine ( "Average precision: {0} ({1} times precision)" , deltas . Average ( ) , deltas . Average ( ) / Fix64 . Precision ) ;
734734 }
735-
736735 //[Fact]
737736 public void AtanBenchmark ( )
738737 {
0 commit comments