@@ -572,7 +572,76 @@ class MyNumber():
572
572
def __float__ (self ):
573
573
return - 2. ;
574
574
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 )
576
645
577
646
def test_fabs (self ):
578
647
self .assertEqual (math .fabs (- 1 ), 1 )
0 commit comments