@@ -473,6 +473,12 @@ def test_float_conversion(self):
473473 self .check_float_conversion (value )
474474 self .check_float_conversion (- value )
475475
476+ @support .requires_IEEE_754
477+ @support .bigmemtest (2 ** 32 , memuse = 0.2 )
478+ def test_float_conversion_huge_integer (self , size ):
479+ v = 1 << size
480+ self .assertRaises (OverflowError , float , v )
481+
476482 def test_float_overflow (self ):
477483 for x in - 2.0 , - 1.0 , 0.0 , 1.0 , 2.0 :
478484 self .assertEqual (float (int (x )), x )
@@ -614,6 +620,56 @@ def __lt__(self, other):
614620 eq (x > y , Rcmp > 0 )
615621 eq (x >= y , Rcmp >= 0 )
616622
623+ @support .requires_IEEE_754
624+ @support .bigmemtest (2 ** 32 , memuse = 0.2 )
625+ def test_mixed_compares_huge_integer (self , size ):
626+ v = 1 << size
627+ f = sys .float_info .max
628+ self .assertIs (f == v , False )
629+ self .assertIs (f != v , True )
630+ self .assertIs (f < v , True )
631+ self .assertIs (f <= v , True )
632+ self .assertIs (f > v , False )
633+ self .assertIs (f >= v , False )
634+ f = float ('inf' )
635+ self .assertIs (f == v , False )
636+ self .assertIs (f != v , True )
637+ self .assertIs (f < v , False )
638+ self .assertIs (f <= v , False )
639+ self .assertIs (f > v , True )
640+ self .assertIs (f >= v , True )
641+ f = float ('nan' )
642+ self .assertIs (f == v , False )
643+ self .assertIs (f != v , True )
644+ self .assertIs (f < v , False )
645+ self .assertIs (f <= v , False )
646+ self .assertIs (f > v , False )
647+ self .assertIs (f >= v , False )
648+
649+ del v
650+ v = (- 1 ) << size
651+ f = - sys .float_info .max
652+ self .assertIs (f == v , False )
653+ self .assertIs (f != v , True )
654+ self .assertIs (f < v , False )
655+ self .assertIs (f <= v , False )
656+ self .assertIs (f > v , True )
657+ self .assertIs (f >= v , True )
658+ f = float ('-inf' )
659+ self .assertIs (f == v , False )
660+ self .assertIs (f != v , True )
661+ self .assertIs (f < v , True )
662+ self .assertIs (f <= v , True )
663+ self .assertIs (f > v , False )
664+ self .assertIs (f >= v , False )
665+ f = float ('nan' )
666+ self .assertIs (f == v , False )
667+ self .assertIs (f != v , True )
668+ self .assertIs (f < v , False )
669+ self .assertIs (f <= v , False )
670+ self .assertIs (f > v , False )
671+ self .assertIs (f >= v , False )
672+
617673 def test__format__ (self ):
618674 self .assertEqual (format (123456789 , 'd' ), '123456789' )
619675 self .assertEqual (format (123456789 , 'd' ), '123456789' )
@@ -933,9 +989,12 @@ def test_huge_lshift_of_zero(self):
933989 self .assertEqual (0 << (sys .maxsize + 1 ), 0 )
934990
935991 @support .cpython_only
936- @support .bigmemtest (sys . maxsize + 1000 , memuse = 2 / 15 * 2 , dry_run = False )
992+ @support .bigmemtest (2 ** 32 , memuse = 0.2 )
937993 def test_huge_lshift (self , size ):
938- self .assertEqual (1 << (sys .maxsize + 1000 ), 1 << 1000 << sys .maxsize )
994+ v = 5 << size
995+ self .assertEqual (v .bit_length (), size + 3 )
996+ self .assertEqual (v .bit_count (), 2 )
997+ self .assertEqual (v >> size , 5 )
939998
940999 def test_huge_rshift (self ):
9411000 huge_shift = 1 << 1000
@@ -947,11 +1006,13 @@ def test_huge_rshift(self):
9471006 self .assertEqual (- 2 ** 128 >> huge_shift , - 1 )
9481007
9491008 @support .cpython_only
950- @support .bigmemtest (sys . maxsize + 500 , memuse = 2 / 15 , dry_run = False )
1009+ @support .bigmemtest (2 ** 32 , memuse = 0.2 )
9511010 def test_huge_rshift_of_huge (self , size ):
952- huge = ((1 << 500 ) + 11 ) << sys .maxsize
953- self .assertEqual (huge >> (sys .maxsize + 1 ), (1 << 499 ) + 5 )
954- self .assertEqual (huge >> (sys .maxsize + 1000 ), 0 )
1011+ huge = ((1 << 500 ) + 11 ) << size
1012+ self .assertEqual (huge .bit_length (), size + 501 )
1013+ self .assertEqual (huge .bit_count (), 4 )
1014+ self .assertEqual (huge >> (size + 1 ), (1 << 499 ) + 5 )
1015+ self .assertEqual (huge >> (size + 1000 ), 0 )
9551016
9561017 def test_small_rshift (self ):
9571018 self .assertEqual (42 >> 1 , 21 )
0 commit comments