We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
log2_int
1 parent 055d6a4 commit bf98136Copy full SHA for bf98136
amaranth/utils.py
@@ -3,7 +3,7 @@
3
from ._utils import deprecated
4
5
6
-__all__ = ["ceil_log2", "exact_log2", "log2_int", "bits_for"]
+__all__ = ["ceil_log2", "exact_log2", "bits_for"]
7
8
9
def ceil_log2(n):
@@ -30,17 +30,6 @@ def exact_log2(n):
30
return (n - 1).bit_length()
31
32
33
-@deprecated("instead of `log2_int(n, True)`, use `exact_log2(n)`; instead of `log2_int(n, False)` use `ceil_log2(n)`")
34
-def log2_int(n, need_pow2=True):
35
- n = operator.index(n)
36
- if n == 0:
37
- return 0
38
- r = (n - 1).bit_length()
39
- if need_pow2 and (1 << r) != n:
40
- raise ValueError(f"{n} is not a power of 2")
41
- return r
42
-
43
44
def bits_for(n, require_sign_bit=False):
45
n = operator.index(n)
46
if n > 0:
docs/changes.rst
@@ -36,6 +36,7 @@ Language changes
* Removed: (deprecated in 0.5.0) :meth:`Value.implies`.
* Removed: (deprecated in 0.5.0) :meth:`Const.width`, :meth:`Const.signed`, :meth:`Signal.width`, :meth:`Signal.signed`.
* Removed: (deprecated in 0.5.0) upwards propagation of clock domains. (`RFC 59`_)
+* Removed: (deprecated in 0.5.0) :func:`amaranth.utils.log2_int`. (`RFC 17`_)
Standard library changes
tests/test_utils.py
@@ -30,26 +30,6 @@ def test_exact_log2(self):
with self.assertRaises(TypeError):
exact_log2(1.5)
- @_ignore_deprecated
- def test_log2_int(self):
- self.assertEqual(log2_int(1), 0)
- self.assertEqual(log2_int(2), 1)
- self.assertEqual(log2_int(4), 2)
- self.assertEqual(log2_int(8), 3)
- for val in [-1, 3, 5, 6, 7, 9]:
- with self.assertRaises(ValueError):
- log2_int(val)
- with self.assertRaises(TypeError):
- log2_int(1.5)
- self.assertEqual(log2_int(0, False), 0)
- self.assertEqual(log2_int(1, False), 0)
- self.assertEqual(log2_int(2, False), 1)
47
- self.assertEqual(log2_int(3, False), 2)
48
- self.assertEqual(log2_int(4, False), 2)
49
- self.assertEqual(log2_int(5, False), 3)
50
- self.assertEqual(log2_int(8, False), 3)
51
- self.assertEqual(log2_int(9, False), 4)
52
53
def test_bits_for(self):
54
self.assertEqual(bits_for(-4), 3)
55
self.assertEqual(bits_for(-3), 3)
0 commit comments