@@ -572,7 +572,76 @@ class MyNumber():
572572 def __float__ (self ):
573573 return - 2. ;
574574 self .ftest ('MyFloat()**-3.' , math .pow (MyNumber (), - 3.0 ), - 0.125 )
575-
575+
576+ def testAtan2 (self ):
577+ self .assertRaises (TypeError , math .atan2 )
578+ self .ftest ('atan2(-1, 0)' , math .atan2 (- 1 , 0 ), - math .pi / 2 )
579+ self .ftest ('atan2(-1, 1)' , math .atan2 (- 1 , 1 ), - math .pi / 4 )
580+ self .ftest ('atan2(0, 1)' , math .atan2 (0 , 1 ), 0 )
581+ self .ftest ('atan2(1, 1)' , math .atan2 (1 , 1 ), math .pi / 4 )
582+ self .ftest ('atan2(1, 0)' , math .atan2 (1 , 0 ), math .pi / 2 )
583+
584+ # math.atan2(0, x)
585+ self .ftest ('atan2(0., -inf)' , math .atan2 (0. , NINF ), math .pi )
586+ self .ftest ('atan2(0., -2.3)' , math .atan2 (0. , - 2.3 ), math .pi )
587+ self .ftest ('atan2(0., -0.)' , math .atan2 (0. , - 0. ), math .pi )
588+ self .assertEqual (math .atan2 (0. , 0. ), 0. )
589+ self .assertEqual (math .atan2 (0. , 2.3 ), 0. )
590+ self .assertEqual (math .atan2 (0. , INF ), 0. )
591+ self .assertTrue (math .isnan (math .atan2 (0. , NAN )))
592+ # math.atan2(-0, x)
593+ self .ftest ('atan2(-0., -inf)' , math .atan2 (- 0. , NINF ), - math .pi )
594+ self .ftest ('atan2(-0., -2.3)' , math .atan2 (- 0. , - 2.3 ), - math .pi )
595+ self .ftest ('atan2(-0., -0.)' , math .atan2 (- 0. , - 0. ), - math .pi )
596+ self .assertEqual (math .atan2 (- 0. , 0. ), - 0. )
597+ self .assertEqual (math .atan2 (- 0. , 2.3 ), - 0. )
598+ self .assertEqual (math .atan2 (- 0. , INF ), - 0. )
599+ self .assertTrue (math .isnan (math .atan2 (- 0. , NAN )))
600+ # math.atan2(INF, x)
601+ self .ftest ('atan2(inf, -inf)' , math .atan2 (INF , NINF ), math .pi * 3 / 4 )
602+ self .ftest ('atan2(inf, -2.3)' , math .atan2 (INF , - 2.3 ), math .pi / 2 )
603+ self .ftest ('atan2(inf, -0.)' , math .atan2 (INF , - 0.0 ), math .pi / 2 )
604+ self .ftest ('atan2(inf, 0.)' , math .atan2 (INF , 0.0 ), math .pi / 2 )
605+ self .ftest ('atan2(inf, 2.3)' , math .atan2 (INF , 2.3 ), math .pi / 2 )
606+ self .ftest ('atan2(inf, inf)' , math .atan2 (INF , INF ), math .pi / 4 )
607+ self .assertTrue (math .isnan (math .atan2 (INF , NAN )))
608+ # math.atan2(NINF, x)
609+ self .ftest ('atan2(-inf, -inf)' , math .atan2 (NINF , NINF ), - math .pi * 3 / 4 )
610+ self .ftest ('atan2(-inf, -2.3)' , math .atan2 (NINF , - 2.3 ), - math .pi / 2 )
611+ self .ftest ('atan2(-inf, -0.)' , math .atan2 (NINF , - 0.0 ), - math .pi / 2 )
612+ self .ftest ('atan2(-inf, 0.)' , math .atan2 (NINF , 0.0 ), - math .pi / 2 )
613+ self .ftest ('atan2(-inf, 2.3)' , math .atan2 (NINF , 2.3 ), - math .pi / 2 )
614+ self .ftest ('atan2(-inf, inf)' , math .atan2 (NINF , INF ), - math .pi / 4 )
615+ self .assertTrue (math .isnan (math .atan2 (NINF , NAN )))
616+ # math.atan2(+finite, x)
617+ self .ftest ('atan2(2.3, -inf)' , math .atan2 (2.3 , NINF ), math .pi )
618+ self .ftest ('atan2(2.3, -0.)' , math .atan2 (2.3 , - 0. ), math .pi / 2 )
619+ self .ftest ('atan2(2.3, 0.)' , math .atan2 (2.3 , 0. ), math .pi / 2 )
620+ self .assertEqual (math .atan2 (2.3 , INF ), 0. )
621+ self .assertTrue (math .isnan (math .atan2 (2.3 , NAN )))
622+ # math.atan2(-finite, x)
623+ self .ftest ('atan2(-2.3, -inf)' , math .atan2 (- 2.3 , NINF ), - math .pi )
624+ self .ftest ('atan2(-2.3, -0.)' , math .atan2 (- 2.3 , - 0. ), - math .pi / 2 )
625+ self .ftest ('atan2(-2.3, 0.)' , math .atan2 (- 2.3 , 0. ), - math .pi / 2 )
626+ self .assertEqual (math .atan2 (- 2.3 , INF ), - 0. )
627+ self .assertTrue (math .isnan (math .atan2 (- 2.3 , NAN )))
628+ # math.atan2(NAN, x)
629+ self .assertTrue (math .isnan (math .atan2 (NAN , NINF )))
630+ self .assertTrue (math .isnan (math .atan2 (NAN , - 2.3 )))
631+ self .assertTrue (math .isnan (math .atan2 (NAN , - 0. )))
632+ self .assertTrue (math .isnan (math .atan2 (NAN , 0. )))
633+ self .assertTrue (math .isnan (math .atan2 (NAN , 2.3 )))
634+ self .assertTrue (math .isnan (math .atan2 (NAN , INF )))
635+ self .assertTrue (math .isnan (math .atan2 (NAN , NAN )))
636+
637+ # Testing specializations
638+ self .ftest ('atan2(0.5,1)' , math .atan2 (0.5 ,1 ), 0.4636476090008061 )
639+ self .ftest ('atan2(1,0.5)' , math .atan2 (1 ,0.5 ), 1.1071487177940904 )
640+ self .ftest ('atan2(BIG_INT,BIG_INT)' , math .atan2 (BIG_INT ,BIG_INT ), 0.7853981633974483 )
641+ self .ftest ('atan2(BIG_INT,1)' , math .atan2 (BIG_INT ,1 ), 1.5707963267948966 )
642+ self .ftest ('atan2(BIG_INT,0.1)' , math .atan2 (BIG_INT ,0.1 ), 1.5707963267948966 )
643+ self .ftest ('atan2(MyFloat(),MyFloat())' , math .atan2 (MyFloat (),MyFloat ()), 0.7853981633974483 )
644+ self .ftest ('atan2(BIG_INT,MyFloat())' , math .atan2 (BIG_INT ,MyFloat ()), 1.5707963267948966 )
576645
577646 def test_fabs (self ):
578647 self .assertEqual (math .fabs (- 1 ), 1 )
0 commit comments