@@ -227,6 +227,28 @@ def test_abs(self):
227
227
self .assertEqual (abs (RealAlgebraicNumber (1 )), 1 )
228
228
self .assertEqual (abs (RealAlgebraicNumber (- 2 )), 2 )
229
229
230
+ def test_floor_ceil_log2 (self ):
231
+ with self .assertRaises (ValueError ):
232
+ RealAlgebraicNumber (0 ).floor_log2 ()
233
+ with self .assertRaises (ValueError ):
234
+ RealAlgebraicNumber (0 ).ceil_log2 ()
235
+ with self .assertRaises (ValueError ):
236
+ RealAlgebraicNumber (- 1 ).floor_log2 ()
237
+ with self .assertRaises (ValueError ):
238
+ RealAlgebraicNumber (- 1 ).ceil_log2 ()
239
+ self .assertEqual (RealAlgebraicNumber (1 ).floor_log2 (), 0 )
240
+ self .assertEqual (RealAlgebraicNumber (1 ).ceil_log2 (), 0 )
241
+ self .assertEqual (RealAlgebraicNumber (2 ).floor_log2 (), 1 )
242
+ self .assertEqual (RealAlgebraicNumber (2 ).ceil_log2 (), 1 )
243
+ self .assertEqual (RealAlgebraicNumber (3 ).floor_log2 (), 1 )
244
+ self .assertEqual (RealAlgebraicNumber (3 ).ceil_log2 (), 2 )
245
+ self .assertEqual (RealAlgebraicNumber (4 ).floor_log2 (), 2 )
246
+ self .assertEqual (RealAlgebraicNumber (4 ).ceil_log2 (), 2 )
247
+ self .assertEqual ((RealAlgebraicNumber (1 ) / 4 ).floor_log2 (), - 2 )
248
+ self .assertEqual ((RealAlgebraicNumber (1 ) / 4 ).ceil_log2 (), - 2 )
249
+ self .assertEqual ((RealAlgebraicNumber (1 ) / 3 ).floor_log2 (), - 2 )
250
+ self .assertEqual ((RealAlgebraicNumber (1 ) / 3 ).ceil_log2 (), - 1 )
251
+
230
252
231
253
if __name__ == '__main__' :
232
254
unittest .main ()
0 commit comments