Major fixes and new features
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
168
venv/lib/python3.12/site-packages/mypyc/primitives/float_ops.py
Normal file
168
venv/lib/python3.12/site-packages/mypyc/primitives/float_ops.py
Normal file
@@ -0,0 +1,168 @@
|
||||
"""Primitive float ops."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from mypyc.ir.ops import ERR_MAGIC, ERR_MAGIC_OVERLAPPING, ERR_NEVER
|
||||
from mypyc.ir.rtypes import (
|
||||
bool_rprimitive,
|
||||
float_rprimitive,
|
||||
int_rprimitive,
|
||||
object_rprimitive,
|
||||
str_rprimitive,
|
||||
)
|
||||
from mypyc.primitives.registry import binary_op, function_op, load_address_op
|
||||
|
||||
# Get the 'builtins.float' type object.
|
||||
load_address_op(name="builtins.float", type=object_rprimitive, src="PyFloat_Type")
|
||||
|
||||
binary_op(
|
||||
name="//",
|
||||
arg_types=[float_rprimitive, float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_FloorDivide",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# float(int)
|
||||
int_to_float_op = function_op(
|
||||
name="builtins.float",
|
||||
arg_types=[int_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_FromTagged",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# float(str)
|
||||
function_op(
|
||||
name="builtins.float",
|
||||
arg_types=[str_rprimitive],
|
||||
return_type=object_rprimitive,
|
||||
c_function_name="PyFloat_FromString",
|
||||
error_kind=ERR_MAGIC,
|
||||
)
|
||||
|
||||
# abs(float)
|
||||
function_op(
|
||||
name="builtins.abs",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="fabs",
|
||||
error_kind=ERR_NEVER,
|
||||
)
|
||||
|
||||
# math.sin(float)
|
||||
function_op(
|
||||
name="math.sin",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_Sin",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# math.cos(float)
|
||||
function_op(
|
||||
name="math.cos",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_Cos",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# math.tan(float)
|
||||
function_op(
|
||||
name="math.tan",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_Tan",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# math.sqrt(float)
|
||||
function_op(
|
||||
name="math.sqrt",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_Sqrt",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# math.exp(float)
|
||||
function_op(
|
||||
name="math.exp",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_Exp",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# math.log(float)
|
||||
function_op(
|
||||
name="math.log",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_Log",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# math.floor(float)
|
||||
function_op(
|
||||
name="math.floor",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=int_rprimitive,
|
||||
c_function_name="CPyFloat_Floor",
|
||||
error_kind=ERR_MAGIC,
|
||||
)
|
||||
|
||||
# math.ceil(float)
|
||||
function_op(
|
||||
name="math.ceil",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=int_rprimitive,
|
||||
c_function_name="CPyFloat_Ceil",
|
||||
error_kind=ERR_MAGIC,
|
||||
)
|
||||
|
||||
# math.fabs(float)
|
||||
function_op(
|
||||
name="math.fabs",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="fabs",
|
||||
error_kind=ERR_NEVER,
|
||||
)
|
||||
|
||||
# math.pow(float, float)
|
||||
pow_op = function_op(
|
||||
name="math.pow",
|
||||
arg_types=[float_rprimitive, float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="CPyFloat_Pow",
|
||||
error_kind=ERR_MAGIC_OVERLAPPING,
|
||||
)
|
||||
|
||||
# math.copysign(float, float)
|
||||
copysign_op = function_op(
|
||||
name="math.copysign",
|
||||
arg_types=[float_rprimitive, float_rprimitive],
|
||||
return_type=float_rprimitive,
|
||||
c_function_name="copysign",
|
||||
error_kind=ERR_NEVER,
|
||||
)
|
||||
|
||||
# math.isinf(float)
|
||||
function_op(
|
||||
name="math.isinf",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=bool_rprimitive,
|
||||
c_function_name="CPyFloat_IsInf",
|
||||
error_kind=ERR_NEVER,
|
||||
)
|
||||
|
||||
# math.isnan(float)
|
||||
function_op(
|
||||
name="math.isnan",
|
||||
arg_types=[float_rprimitive],
|
||||
return_type=bool_rprimitive,
|
||||
c_function_name="CPyFloat_IsNaN",
|
||||
error_kind=ERR_NEVER,
|
||||
)
|
||||
Reference in New Issue
Block a user