70 lines
1.0 KiB
Python
70 lines
1.0 KiB
Python
from numba import vectorize
|
|
|
|
|
|
def add(a, b):
|
|
"""An addition"""
|
|
return a + b
|
|
|
|
|
|
def equals(a, b):
|
|
return a == b
|
|
|
|
|
|
def mul(a, b):
|
|
"""A multiplication"""
|
|
return a * b
|
|
|
|
|
|
def guadd(a, b, c):
|
|
"""A generalized addition"""
|
|
x, y = c.shape
|
|
for i in range(x):
|
|
for j in range(y):
|
|
c[i, j] = a[i, j] + b[i, j]
|
|
|
|
|
|
@vectorize(nopython=True)
|
|
def inner(a, b):
|
|
return a + b
|
|
|
|
|
|
@vectorize(["int64(int64, int64)"], nopython=True)
|
|
def inner_explicit(a, b):
|
|
return a + b
|
|
|
|
|
|
def outer(a, b):
|
|
return inner(a, b)
|
|
|
|
|
|
def outer_explicit(a, b):
|
|
return inner_explicit(a, b)
|
|
|
|
|
|
class Dummy:
|
|
pass
|
|
|
|
|
|
def guadd_obj(a, b, c):
|
|
Dummy() # to force object mode
|
|
x, y = c.shape
|
|
for i in range(x):
|
|
for j in range(y):
|
|
c[i, j] = a[i, j] + b[i, j]
|
|
|
|
|
|
def guadd_scalar_obj(a, b, c):
|
|
Dummy() # to force object mode
|
|
x, y = c.shape
|
|
for i in range(x):
|
|
for j in range(y):
|
|
c[i, j] = a[i, j] + b
|
|
|
|
|
|
class MyException(Exception):
|
|
pass
|
|
|
|
|
|
def guerror(a, b, c):
|
|
raise MyException
|