From 0af1e37e993241f91de97f1ea823af36aee5a156 Mon Sep 17 00:00:00 2001 From: David Mak Date: Thu, 23 Nov 2023 13:32:08 +0800 Subject: [PATCH] core: Prefix all NumPy/SciPy functions with np_/sp_spec --- nac3core/src/toplevel/builtins.rs | 148 ++++++++--------- nac3standalone/demo/interpret_demo.py | 78 ++++----- nac3standalone/demo/src/math.py | 222 +++++++++++++------------- 3 files changed, 224 insertions(+), 224 deletions(-) diff --git a/nac3core/src/toplevel/builtins.rs b/nac3core/src/toplevel/builtins.rs index 3448b60..84b2cd5 100644 --- a/nac3core/src/toplevel/builtins.rs +++ b/nac3core/src/toplevel/builtins.rs @@ -1431,7 +1431,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_codegen( primitives, &var_map, - "isnan", + "np_isnan", boolean, &[(float, "x")], Box::new(|ctx, _, fun, args, generator| { @@ -1451,7 +1451,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_codegen( primitives, &var_map, - "isinf", + "np_isinf", boolean, &[(float, "x")], Box::new(|ctx, _, fun, args, generator| { @@ -1471,7 +1471,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "sin", + "np_sin", float, &[(float, "x")], "llvm.sin.f64", @@ -1479,7 +1479,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "cos", + "np_cos", float, &[(float, "x")], "llvm.cos.f64", @@ -1487,7 +1487,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "exp", + "np_exp", float, &[(float, "x")], "llvm.exp.f64", @@ -1495,7 +1495,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "exp2", + "np_exp2", float, &[(float, "x")], "llvm.exp2.f64", @@ -1503,7 +1503,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "log", + "np_log", float, &[(float, "x")], "llvm.log.f64", @@ -1511,7 +1511,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "log10", + "np_log10", float, &[(float, "x")], "llvm.log10.f64", @@ -1519,7 +1519,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "log2", + "np_log2", float, &[(float, "x")], "llvm.log2.f64", @@ -1527,7 +1527,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "fabs", + "np_fabs", float, &[(float, "x")], "llvm.fabs.f64", @@ -1535,7 +1535,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "sqrt", + "np_sqrt", float, &[(float, "x")], "llvm.sqrt.f64", @@ -1543,7 +1543,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "rint", + "np_rint", float, &[(float, "x")], "llvm.roundeven.f64", @@ -1551,7 +1551,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "tan", + "np_tan", float, &[(float, "x")], "tan", @@ -1560,7 +1560,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "arcsin", + "np_arcsin", float, &[(float, "x")], "asin", @@ -1569,7 +1569,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "arccos", + "np_arccos", float, &[(float, "x")], "acos", @@ -1578,7 +1578,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "arctan", + "np_arctan", float, &[(float, "x")], "atan", @@ -1587,7 +1587,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "sinh", + "np_sinh", float, &[(float, "x")], "sinh", @@ -1596,7 +1596,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "cosh", + "np_cosh", float, &[(float, "x")], "cosh", @@ -1605,7 +1605,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "tanh", + "np_tanh", float, &[(float, "x")], "tanh", @@ -1614,7 +1614,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "arcsinh", + "np_arcsinh", float, &[(float, "x")], "asinh", @@ -1623,7 +1623,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "arccosh", + "np_arccosh", float, &[(float, "x")], "acosh", @@ -1632,7 +1632,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "arctanh", + "np_arctanh", float, &[(float, "x")], "atanh", @@ -1641,7 +1641,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "expm1", + "np_expm1", float, &[(float, "x")], "expm1", @@ -1650,7 +1650,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "cbrt", + "np_cbrt", float, &[(float, "x")], "cbrt", @@ -1659,7 +1659,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "erf", + "sp_spec_erf", float, &[(float, "z")], "erf", @@ -1668,7 +1668,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "erfc", + "sp_spec_erfc", float, &[(float, "x")], "erfc", @@ -1677,7 +1677,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_codegen( primitives, &var_map, - "gamma", + "sp_spec_gamma", float, &[(float, "z")], Box::new(|ctx, _, fun, args, generator| { @@ -1695,7 +1695,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_codegen( primitives, &var_map, - "gammaln", + "sp_spec_gammaln", float, &[(float, "x")], Box::new(|ctx, _, fun, args, generator| { @@ -1713,7 +1713,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_codegen( primitives, &var_map, - "j0", + "sp_spec_j0", float, &[(float, "x")], Box::new(|ctx, _, fun, args, generator| { @@ -1731,7 +1731,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "j1", + "sp_spec_j1", float, &[(float, "x")], "j1", @@ -1741,7 +1741,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "arctan2", + "np_arctan2", float, &[(float, "x1"), (float, "x2")], "atan2", @@ -1750,7 +1750,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "copysign", + "np_copysign", float, &[(float, "x1"), (float, "x2")], "llvm.copysign.f64", @@ -1758,7 +1758,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "fmax", + "np_fmax", float, &[(float, "x1"), (float, "x2")], "llvm.maxnum.f64", @@ -1766,7 +1766,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_intrinsic( primitives, &var_map, - "fmin", + "np_fmin", float, &[(float, "x1"), (float, "x2")], "llvm.minnum.f64", @@ -1774,7 +1774,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "ldexp", + "np_ldexp", float, &[(float, "x1"), (int32, "x2")], "ldexp", @@ -1783,7 +1783,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "hypot", + "np_hypot", float, &[(float, "x1"), (float, "x2")], "hypot", @@ -1792,7 +1792,7 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { create_fn_by_extern( primitives, &var_map, - "nextafter", + "np_nextafter", float, &[(float, "x1"), (float, "x2")], "nextafter", @@ -1846,43 +1846,43 @@ pub fn get_builtins(primitives: &mut (PrimitiveStore, Unifier)) -> BuiltinInfo { "min", "max", "abs", - "isnan", - "isinf", - "sin", - "cos", - "exp", - "exp2", - "log", - "log10", - "log2", - "fabs", - "sqrt", - "rint", - "tan", - "arcsin", - "arccos", - "arctan", - "sinh", - "cosh", - "tanh", - "arcsinh", - "arccosh", - "arctanh", - "expm1", - "cbrt", - "erf", - "erfc", - "gamma", - "gammaln", - "j0", - "j1", - "arctan2", - "copysign", - "fmax", - "fmin", - "ldexp", - "hypot", - "nextafter", + "np_isnan", + "np_isinf", + "np_sin", + "np_cos", + "np_exp", + "np_exp2", + "np_log", + "np_log10", + "np_log2", + "np_fabs", + "np_sqrt", + "np_rint", + "np_tan", + "np_arcsin", + "np_arccos", + "np_arctan", + "np_sinh", + "np_cosh", + "np_tanh", + "np_arcsinh", + "np_arccosh", + "np_arctanh", + "np_expm1", + "np_cbrt", + "sp_spec_erf", + "sp_spec_erfc", + "sp_spec_gamma", + "sp_spec_gammaln", + "sp_spec_j0", + "sp_spec_j1", + "np_arctan2", + "np_copysign", + "np_fmax", + "np_fmin", + "np_ldexp", + "np_hypot", + "np_nextafter", "Some", ], ) diff --git a/nac3standalone/demo/interpret_demo.py b/nac3standalone/demo/interpret_demo.py index e6ccba1..e52544e 100755 --- a/nac3standalone/demo/interpret_demo.py +++ b/nac3standalone/demo/interpret_demo.py @@ -6,9 +6,9 @@ import importlib.machinery import math import numpy as np import pathlib -import scipy from numpy import int32, int64, uint32, uint64 +from scipy import special from typing import TypeVar, Generic T = TypeVar('T') @@ -114,46 +114,46 @@ def patch(module): module.ceil64 = math.ceil # NumPy Math functions - module.isnan = np.isnan - module.isinf = np.isinf - module.sin = np.sin - module.cos = np.cos - module.exp = np.exp - module.exp2 = np.exp2 - module.log = np.log - module.log10 = np.log10 - module.log2 = np.log2 - module.fabs = np.fabs - module.trunc = np.trunc - module.sqrt = np.sqrt - module.rint = np.rint - module.tan = np.tan - module.arcsin = np.arcsin - module.arccos = np.arccos - module.arctan = np.arctan - module.sinh = np.sinh - module.cosh = np.cosh - module.tanh = np.tanh - module.arcsinh = np.arcsinh - module.arccosh = np.arccosh - module.arctanh = np.arctanh - module.expm1 = np.expm1 - module.cbrt = np.cbrt - module.arctan2 = np.arctan2 - module.copysign = np.copysign - module.fmax = np.fmax - module.fmin = np.fmin - module.ldexp = np.ldexp - module.hypot = np.hypot - module.nextafter = np.nextafter + module.np_isnan = np.isnan + module.np_isinf = np.isinf + module.np_sin = np.sin + module.np_cos = np.cos + module.np_exp = np.exp + module.np_exp2 = np.exp2 + module.np_log = np.log + module.np_log10 = np.log10 + module.np_log2 = np.log2 + module.np_fabs = np.fabs + module.np_trunc = np.trunc + module.np_sqrt = np.sqrt + module.np_rint = np.rint + module.np_tan = np.tan + module.np_arcsin = np.arcsin + module.np_arccos = np.arccos + module.np_arctan = np.arctan + module.np_sinh = np.sinh + module.np_cosh = np.cosh + module.np_tanh = np.tanh + module.np_arcsinh = np.arcsinh + module.np_arccosh = np.arccosh + module.np_arctanh = np.arctanh + module.np_expm1 = np.expm1 + module.np_cbrt = np.cbrt + module.np_arctan2 = np.arctan2 + module.np_copysign = np.copysign + module.np_fmax = np.fmax + module.np_fmin = np.fmin + module.np_ldexp = np.ldexp + module.np_hypot = np.hypot + module.np_nextafter = np.nextafter # SciPy Math Functions - module.erf = scipy.special.erf - module.erfc = scipy.special.erfc - module.gamma = scipy.special.gamma - module.gammaln = scipy.special.gammaln - module.j0 = scipy.special.j0 - module.j1 = scipy.special.j1 + module.sp_spec_erf = special.erf + module.sp_spec_erfc = special.erfc + module.sp_spec_gamma = special.gamma + module.sp_spec_gammaln = special.gammaln + module.sp_spec_j0 = special.j0 + module.sp_spec_j1 = special.j1 def file_import(filename, prefix="file_import_"): diff --git a/nac3standalone/demo/src/math.py b/nac3standalone/demo/src/math.py index 52d6274..5efe1e8 100644 --- a/nac3standalone/demo/src/math.py +++ b/nac3standalone/demo/src/math.py @@ -36,48 +36,48 @@ def test_round64(): for x in [-1.5, -0.5, 0.5, 1.5]: output_int64(round64(x)) -def test_isnan(): +def test_np_isnan(): for x in [dbl_nan(), 0.0, dbl_inf()]: - output_bool(isnan(x)) + output_bool(np_isnan(x)) -def test_isinf(): +def test_np_isinf(): for x in [dbl_inf(), -dbl_inf(), 0.0, dbl_nan()]: - output_bool(isinf(x)) + output_bool(np_isinf(x)) -def test_sin(): +def test_np_sin(): pi = dbl_pi() for x in [-pi, -pi / 2.0, -pi / 4.0, 0.0, pi / 4.0, pi / 2.0, pi, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(sin(x)) + output_float64(np_sin(x)) -def test_cos(): +def test_np_cos(): pi = dbl_pi() for x in [-pi, -pi / 2.0, -pi / 4.0, 0.0, pi / 4.0, pi / 2.0, pi, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(cos(x)) + output_float64(np_cos(x)) -def test_exp(): +def test_np_exp(): for x in [0.0, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(exp(x)) + output_float64(np_exp(x)) -def test_exp2(): +def test_np_exp2(): for x in [0.0, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(exp2(x)) + output_float64(np_exp2(x)) -def test_log(): +def test_np_log(): e = dbl_e() for x in [1.0, e, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(log(x)) + output_float64(np_log(x)) -def test_log10(): +def test_np_log10(): for x in [1.0, 10.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(log10(x)) + output_float64(np_log10(x)) -def test_log2(): +def test_np_log2(): for x in [1.0, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(log2(x)) + output_float64(np_log2(x)) -def test_fabs(): +def test_np_fabs(): for x in [-1.0, 0.0, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(fabs(x)) + output_float64(np_fabs(x)) def test_floor(): for x in [-1.5, -0.5, 0.5, 1.5]: @@ -95,165 +95,165 @@ def test_ceil64(): for x in [-1.5, -0.5, 0.5, 1.5]: output_int64(ceil64(x)) -def test_sqrt(): +def test_np_sqrt(): for x in [1.0, 2.0, 4.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(sqrt(x)) + output_float64(np_sqrt(x)) -def test_rint(): +def test_np_rint(): for x in [-1.5, -0.5, 0.5, 1.5, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(rint(x)) + output_float64(np_rint(x)) -def test_tan(): +def test_np_tan(): pi = dbl_pi() for x in [-pi, -pi / 2.0, -pi / 4.0, 0.0, pi / 4.0, pi / 2.0, pi, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(tan(x)) + output_float64(np_tan(x)) -def test_arcsin(): +def test_np_arcsin(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(arcsin(x)) + output_float64(np_arcsin(x)) -def test_arccos(): +def test_np_arccos(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(arccos(x)) + output_float64(np_arccos(x)) -def test_arctan(): +def test_np_arctan(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(arctan(x)) + output_float64(np_arctan(x)) -def test_sinh(): +def test_np_sinh(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(sinh(x)) + output_float64(np_sinh(x)) -def test_cosh(): +def test_np_cosh(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(cosh(x)) + output_float64(np_cosh(x)) -def test_tanh(): +def test_np_tanh(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(tanh(x)) + output_float64(np_tanh(x)) -def test_arcsinh(): +def test_np_arcsinh(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(arcsinh(x)) + output_float64(np_arcsinh(x)) -def test_arccosh(): +def test_np_arccosh(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(arccosh(x)) + output_float64(np_arccosh(x)) -def test_arctanh(): +def test_np_arctanh(): for x in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(arctanh(x)) + output_float64(np_arctanh(x)) -def test_expm1(): +def test_np_expm1(): for x in [0.0, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(expm1(x)) + output_float64(np_expm1(x)) -def test_cbrt(): +def test_np_cbrt(): for x in [1.0, 8.0, 27.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(expm1(x)) + output_float64(np_expm1(x)) -def test_erf(): +def test_sp_spec_erf(): for x in [-3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(erf(x)) + output_float64(sp_spec_erf(x)) -def test_erfc(): +def test_sp_spec_erfc(): for x in [-3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(erfc(x)) + output_float64(sp_spec_erfc(x)) -def test_gamma(): +def test_sp_spec_gamma(): for x in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(gamma(x)) + output_float64(sp_spec_gamma(x)) -def test_gammaln(): +def test_sp_spec_gammaln(): for x in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(gammaln(x)) + output_float64(sp_spec_gammaln(x)) -def test_j0(): +def test_sp_spec_j0(): for x in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(j0(x)) + output_float64(sp_spec_j0(x)) -def test_j1(): +def test_sp_spec_j1(): for x in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0]: - output_float64(j1(x)) + output_float64(sp_spec_j1(x)) -def test_arctan2(): +def test_np_arctan2(): for x1 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: for x2 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(arctan2(x1, x2)) + output_float64(np_arctan2(x1, x2)) -def test_copysign(): +def test_np_copysign(): for x1 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: for x2 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(copysign(x1, x2)) + output_float64(np_copysign(x1, x2)) -def test_fmax(): +def test_np_fmax(): for x1 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: for x2 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(fmax(x1, x2)) + output_float64(np_fmax(x1, x2)) -def test_fmin(): +def test_np_fmin(): for x1 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: for x2 in [-1.0, -0.5, 0.0, 0.5, 1.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(fmin(x1, x2)) + output_float64(np_fmin(x1, x2)) -def test_ldexp(): +def test_np_ldexp(): for x1 in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: for x2 in [-2, -1, 0, 1, 2]: - output_float64(ldexp(x1, x2)) + output_float64(np_ldexp(x1, x2)) -def test_hypot(): +def test_np_hypot(): for x1 in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: for x2 in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(hypot(x1, x2)) + output_float64(np_hypot(x1, x2)) -def test_nextafter(): +def test_np_nextafter(): for x1 in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: for x2 in [-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, dbl_inf(), -dbl_inf(), dbl_nan()]: - output_float64(nextafter(x1, x2)) + output_float64(np_nextafter(x1, x2)) def run() -> int32: test_round() test_round64() - test_isnan() - test_isinf() - test_sin() - test_cos() - test_exp() - test_exp2() - test_log() - test_log10() - test_log2() - test_fabs() + test_np_isnan() + test_np_isinf() + test_np_sin() + test_np_cos() + test_np_exp() + test_np_exp2() + test_np_log() + test_np_log10() + test_np_log2() + test_np_fabs() test_floor() test_floor64() test_ceil() test_ceil64() - test_sqrt() - test_rint() - test_tan() - test_arcsin() - test_arccos() - test_arctan() - test_sinh() - test_cosh() - test_tanh() - test_arcsinh() - test_arccosh() - test_arctanh() - test_expm1() - test_cbrt() - test_erf() - test_erfc() - test_gamma() - test_gammaln() - test_j0() - test_j1() - test_arctan2() - test_copysign() - test_fmax() - test_fmin() - test_ldexp() - test_hypot() - test_nextafter() + test_np_sqrt() + test_np_rint() + test_np_tan() + test_np_arcsin() + test_np_arccos() + test_np_arctan() + test_np_sinh() + test_np_cosh() + test_np_tanh() + test_np_arcsinh() + test_np_arccosh() + test_np_arctanh() + test_np_expm1() + test_np_cbrt() + test_sp_spec_erf() + test_sp_spec_erfc() + test_sp_spec_gamma() + test_sp_spec_gammaln() + test_sp_spec_j0() + test_sp_spec_j1() + test_np_arctan2() + test_np_copysign() + test_np_fmax() + test_np_fmin() + test_np_ldexp() + test_np_hypot() + test_np_nextafter() return 0 \ No newline at end of file