Skip to content
Permalink
 
 
Cannot retrieve contributors at this time
141 lines (117 sloc) 4.05 KB
import math
from numba.core import types, utils
from numba.core.typing.templates import (AttributeTemplate, ConcreteTemplate,
signature, Registry)
registry = Registry()
infer_global = registry.register_global
@infer_global(math.exp)
@infer_global(math.expm1)
@infer_global(math.fabs)
@infer_global(math.sqrt)
@infer_global(math.log)
@infer_global(math.log1p)
@infer_global(math.log10)
@infer_global(math.sin)
@infer_global(math.cos)
@infer_global(math.tan)
@infer_global(math.sinh)
@infer_global(math.cosh)
@infer_global(math.tanh)
@infer_global(math.asin)
@infer_global(math.acos)
@infer_global(math.atan)
@infer_global(math.asinh)
@infer_global(math.acosh)
@infer_global(math.atanh)
@infer_global(math.degrees)
@infer_global(math.radians)
@infer_global(math.erf)
@infer_global(math.erfc)
@infer_global(math.gamma)
@infer_global(math.lgamma)
class Math_unary(ConcreteTemplate):
cases = [
signature(types.float64, types.int64),
signature(types.float64, types.uint64),
signature(types.float32, types.float32),
signature(types.float64, types.float64),
]
@infer_global(math.atan2)
class Math_atan2(ConcreteTemplate):
cases = [
signature(types.float64, types.int64, types.int64),
signature(types.float64, types.uint64, types.uint64),
signature(types.float32, types.float32, types.float32),
signature(types.float64, types.float64, types.float64),
]
@infer_global(math.trunc)
class Math_converter(ConcreteTemplate):
cases = [
signature(types.intp, types.intp),
signature(types.int64, types.int64),
signature(types.uint64, types.uint64),
signature(types.int64, types.float32),
signature(types.int64, types.float64),
]
@infer_global(math.floor)
@infer_global(math.ceil)
class Math_floor_ceil(Math_converter):
pass
@infer_global(math.copysign)
class Math_copysign(ConcreteTemplate):
cases = [
signature(types.float32, types.float32, types.float32),
signature(types.float64, types.float64, types.float64),
]
@infer_global(math.hypot)
class Math_hypot(ConcreteTemplate):
cases = [
signature(types.float64, types.int64, types.int64),
signature(types.float64, types.uint64, types.uint64),
signature(types.float32, types.float32, types.float32),
signature(types.float64, types.float64, types.float64),
]
@infer_global(math.isinf)
@infer_global(math.isnan)
class Math_predicate(ConcreteTemplate):
cases = [
signature(types.boolean, types.int64),
signature(types.boolean, types.uint64),
signature(types.boolean, types.float32),
signature(types.boolean, types.float64),
]
@infer_global(math.isfinite)
class Math_isfinite(Math_predicate):
pass
@infer_global(math.pow)
class Math_pow(ConcreteTemplate):
cases = [
signature(types.float64, types.float64, types.int64),
signature(types.float64, types.float64, types.uint64),
signature(types.float32, types.float32, types.float32),
signature(types.float64, types.float64, types.float64),
]
@infer_global(math.gcd)
class Math_gcd(ConcreteTemplate):
cases = [
signature(types.int64, types.int64, types.int64),
signature(types.int32, types.int32, types.int32),
signature(types.int16, types.int16, types.int16),
signature(types.int8, types.int8, types.int8),
signature(types.uint64, types.uint64, types.uint64),
signature(types.uint32, types.uint32, types.uint32),
signature(types.uint16, types.uint16, types.uint16),
signature(types.uint8, types.uint8, types.uint8),
]
@infer_global(math.frexp)
class Math_frexp(ConcreteTemplate):
cases = [
signature(types.Tuple((types.float64, types.intc)), types.float64),
signature(types.Tuple((types.float32, types.intc)), types.float32),
]
@infer_global(math.ldexp)
class Math_ldexp(ConcreteTemplate):
cases = [
signature(types.float64, types.float64, types.intc),
signature(types.float32, types.float32, types.intc),
]
You can’t perform that action at this time.