@@ -974,6 +974,41 @@ def __index__(self):
974974 with self .assertRaises (TypeError ):
975975 math .isqrt (value )
976976
977+ def test_lcm (self ):
978+ lcm = math .lcm
979+ self .assertEqual (lcm (0 , 0 ), 0 )
980+ self .assertEqual (lcm (1 , 0 ), 0 )
981+ self .assertEqual (lcm (- 1 , 0 ), 0 )
982+ self .assertEqual (lcm (0 , 1 ), 0 )
983+ self .assertEqual (lcm (0 , - 1 ), 0 )
984+ self .assertEqual (lcm (7 , 1 ), 7 )
985+ self .assertEqual (lcm (7 , - 1 ), 7 )
986+ self .assertEqual (lcm (- 23 , 15 ), 345 )
987+ self .assertEqual (lcm (120 , 84 ), 840 )
988+ self .assertEqual (lcm (84 , - 120 ), 840 )
989+ self .assertEqual (lcm (1216342683557601535506311712 ,
990+ 436522681849110124616458784 ),
991+ 16592536571065866494401400422922201534178938447014944 )
992+ x = 43461045657039990237
993+ y = 10645022458251153277
994+
995+ for c in (652560 ,
996+ 57655923087165495981 ):
997+ a = x * c
998+ b = y * c
999+ d = x * y * c
1000+ self .assertEqual (lcm (a , b ), d )
1001+ self .assertEqual (lcm (b , a ), d )
1002+ self .assertEqual (lcm (- a , b ), d )
1003+ self .assertEqual (lcm (b , - a ), d )
1004+ self .assertEqual (lcm (a , - b ), d )
1005+ self .assertEqual (lcm (- b , a ), d )
1006+ self .assertEqual (lcm (- a , - b ), d )
1007+ self .assertEqual (lcm (- b , - a ), d )
1008+ self .assertEqual (lcm (MyIndexable (120 ), MyIndexable (84 )), 840 )
1009+ self .assertRaises (TypeError , lcm , 120.0 , 84 )
1010+ self .assertRaises (TypeError , lcm , 120 , 84.0 )
1011+
9771012 def testLdexp (self ):
9781013 self .assertRaises (TypeError , math .ldexp )
9791014 self .ftest ('ldexp(0,1)' , math .ldexp (0 ,1 ), 0 )
0 commit comments