Skip to content

Commit 9c888b1

Browse files
authored
Make compatible with numpy 1.x (#502)
The vmath dialect is using some of the API that only available to 2.x numpy. This PR fix that to make it compatible with 1.x
1 parent 09a2758 commit 9c888b1

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ requires-python = ">= 3.10"
1313

1414
[project.optional-dependencies]
1515
vmath = [
16-
"numpy>=2.2.6",
16+
"numpy>1.26.0",
1717
"scipy>=1.15.3",
1818
]
1919
[build-system]

src/kirin/dialects/vmath/interp.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,37 @@ class MathMethodTable(MethodTable):
1515
@impl(stmts.acos)
1616
def acos(self, interp, frame: Frame, stmt: stmts.acos):
1717
values = frame.get_values(stmt.args)
18-
return (ilist.IList(np.acos(np.asarray(values[0])).tolist(), elem=types.Float),)
18+
return (
19+
ilist.IList(np.arccos(np.asarray(values[0])).tolist(), elem=types.Float),
20+
)
1921

2022
@impl(stmts.asin)
2123
def asin(self, interp, frame: Frame, stmt: stmts.asin):
2224
values = frame.get_values(stmt.args)
23-
return (ilist.IList(np.asin(np.asarray(values[0])).tolist(), elem=types.Float),)
25+
return (
26+
ilist.IList(np.arcsin(np.asarray(values[0])).tolist(), elem=types.Float),
27+
)
2428

2529
@impl(stmts.asinh)
2630
def asinh(self, interp, frame: Frame, stmt: stmts.asinh):
2731
values = frame.get_values(stmt.args)
2832
return (
29-
ilist.IList(np.asinh(np.asarray(values[0])).tolist(), elem=types.Float),
33+
ilist.IList(np.arcsinh(np.asarray(values[0])).tolist(), elem=types.Float),
3034
)
3135

3236
@impl(stmts.atan)
3337
def atan(self, interp, frame: Frame, stmt: stmts.atan):
3438
values = frame.get_values(stmt.args)
35-
return (ilist.IList(np.atan(np.asarray(values[0])).tolist(), elem=types.Float),)
39+
return (
40+
ilist.IList(np.arctan(np.asarray(values[0])).tolist(), elem=types.Float),
41+
)
3642

3743
@impl(stmts.atan2)
3844
def atan2(self, interp, frame: Frame, stmt: stmts.atan2):
3945
values = frame.get_values(stmt.args)
4046
return (
4147
ilist.IList(
42-
np.atan2(np.asarray(values[0]), np.asarray(values[1])).tolist(),
48+
np.arctan2(np.asarray(values[0]), np.asarray(values[1])).tolist(),
4349
elem=types.Float,
4450
),
4551
)
@@ -48,7 +54,7 @@ def atan2(self, interp, frame: Frame, stmt: stmts.atan2):
4854
def atanh(self, interp, frame: Frame, stmt: stmts.atanh):
4955
values = frame.get_values(stmt.args)
5056
return (
51-
ilist.IList(np.atanh(np.asarray(values[0])).tolist(), elem=types.Float),
57+
ilist.IList(np.arctanh(np.asarray(values[0])).tolist(), elem=types.Float),
5258
)
5359

5460
@impl(stmts.ceil)

test/dialects/vmath/test_basic.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def acos_func(x):
1212

1313

1414
def test_acos():
15-
truth = np.acos(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
15+
truth = np.arccos(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
1616
out = acos_func(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
1717
assert isinstance(out, ilist.IList)
1818
assert out.elem == types.Float
@@ -25,7 +25,7 @@ def asin_func(x):
2525

2626

2727
def test_asin():
28-
truth = np.asin(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
28+
truth = np.arcsin(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
2929
out = asin_func(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
3030
assert isinstance(out, ilist.IList)
3131
assert out.elem == types.Float
@@ -38,7 +38,7 @@ def asinh_func(x):
3838

3939

4040
def test_asinh():
41-
truth = np.asinh(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
41+
truth = np.arcsinh(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
4242
out = asinh_func(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
4343
assert isinstance(out, ilist.IList)
4444
assert out.elem == types.Float
@@ -51,7 +51,7 @@ def atan_func(x):
5151

5252

5353
def test_atan():
54-
truth = np.atan(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
54+
truth = np.arctan(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
5555
out = atan_func(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
5656
assert isinstance(out, ilist.IList)
5757
assert out.elem == types.Float
@@ -64,7 +64,7 @@ def atan2_func(y, x):
6464

6565

6666
def test_atan2():
67-
truth = np.atan2(
67+
truth = np.arctan2(
6868
ilist.IList([0.42, 0.87, 0.32], elem=types.Float),
6969
ilist.IList([0.42, 0.87, 0.32], elem=types.Float),
7070
)
@@ -83,7 +83,7 @@ def atanh_func(x):
8383

8484

8585
def test_atanh():
86-
truth = np.atanh(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
86+
truth = np.arctanh(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
8787
out = atanh_func(ilist.IList([0.42, 0.87, 0.32], elem=types.Float))
8888
assert isinstance(out, ilist.IList)
8989
assert out.elem == types.Float
@@ -368,7 +368,7 @@ def pow_func(x, y):
368368

369369

370370
def test_pow():
371-
truth = np.pow(
371+
truth = np.power(
372372
ilist.IList([0.42, 0.87, 0.32], elem=types.Float),
373373
3.33,
374374
)

0 commit comments

Comments
 (0)