diff --git a/tests/test_math.py b/tests/test_math.py index f18bd0a..c8457ca 100644 --- a/tests/test_math.py +++ b/tests/test_math.py @@ -75,8 +75,8 @@ def test_fine(): print('+', val, ref, type(val), test.dtype) #for t in (int, float, bool): # assert isinstance(val, t) == isinstance(ref, t), f"Result type does not match for {val} and {ref}" - assert val == pytest.approx(ref, 1e-5), f"Result for {name} does not match: {val} and reference: {ref}" # pyright: ignore[reportUnknownMemberType] - assert val2 == pytest.approx(ref, 1e-5), f"Local result for {name} does not match: {val2} and reference: {ref}" # pyright: ignore[reportUnknownMemberType] + assert val == pytest.approx(ref, 1e-4), f"Result for {name} does not match: {val} and reference: {ref}" # pyright: ignore[reportUnknownMemberType] + assert val2 == pytest.approx(ref, 1e-4), f"Local result for {name} does not match: {val2} and reference: {ref}" # pyright: ignore[reportUnknownMemberType] def test_trig_precision(): @@ -101,14 +101,14 @@ def test_trig_precision(): def test_arcus_trig_precision(): - test_vals = [0.0, 0.0001, 0.1, 0.5, -0.7, 0.9, 0.95, 1.0, - -0.0001, -0.1, -0.5, -0.7, -0.9, -0.95, -1.0] + test_vals = [0.0, 0.01, 0.1, 0.5, 0.7, 0.9, 0.95, + -0.01, -0.1, -0.5, -0.7, -0.9, 0.95] ret_test = [r for v in test_vals for r in (cp.asin(variable(v)), cp.acos(variable(v)), cp.atan(variable(v)), cp.atan2(variable(v), variable(0.7)), - cp.atan2(variable(ma.cos(v)), variable(-0.2)))] + cp.atan2(variable(v), variable(-0.2)))] ret_refe = [r for v in test_vals for r in (ma.asin(v), ma.acos(v), ma.atan(v), @@ -118,21 +118,16 @@ def test_arcus_trig_precision(): tg = Target() tg.compile(ret_test) tg.run() - #flag = False for i, (test, ref) in enumerate(zip(ret_test, ret_refe)): func_name = ['asin', 'acos', 'atan', 'atan2[1]', 'atan2[2]'][i % 5] assert isinstance(test, cp.variable) val = tg.read_value(test) + print(f"+ Result of {func_name}: {val}; reference: {ref}") #assert val == pytest.approx(ref, abs=1e-5), f"Result of {func_name} for input {test_vals[i // 5]} does not match: {val} and reference: {ref}" # pyright: ignore[reportUnknownMemberType] - if not val == pytest.approx(ref, abs=1e-2): # pyright: ignore[reportUnknownMemberType] + if not val == pytest.approx(ref, abs=1e-5): # pyright: ignore[reportUnknownMemberType] warnings.warn(f"Result of {func_name} for input {test_vals[i // 5]} does not match: {val} and reference: {ref}", UserWarning) - #print(f"F Result of {func_name} is {val} (ref: {ref}) for x={test_vals[i // 5]}") - #flag = True - #else: - # print(f"+ Result of {func_name} is {val} (ref: {ref}) for x={test_vals[i // 5]}") - #assert not flag, "Error" def test_sqrt_precision(): @@ -158,8 +153,10 @@ def test_log_exp_precision(): test_vals = [0.1, 0.5, 0.9, 0.999, 1.0, 8.8, 12.0 -0.1, -0.5, -0.9, -0.999, -1.0, 8.8, 12.0] - ret_test = [r for v in test_vals for r in (cp.log(variable(ma.exp(v))), cp.exp(variable(v)))] - ret_refe = [r for v in test_vals for r in (v, ma.exp(v))] + ret_test = [r for v in test_vals for r in (cp.log(variable(abs(v))), + cp.exp(variable(v)))] + ret_refe = [r for v in test_vals for r in (ma.log(abs(v)), + ma.exp(v))] tg = Target() tg.compile(ret_test) diff --git a/tests/test_readme_example.py b/tests/test_readme_example.py index 2c69605..201d4fa 100644 --- a/tests/test_readme_example.py +++ b/tests/test_readme_example.py @@ -23,7 +23,7 @@ def test_readme_example(): # Assertions to verify correctness assert tg.read_value(c) == pytest.approx(0.25 + 0.87 * 2.0, 0.001) # pyright: ignore[reportUnknownMemberType] - assert tg.read_value(d) == pytest.approx((0.25 + 0.87 * 2.0) ** 2 + cp.sin(0.25), 0.001) # pyright: ignore[reportUnknownMemberType] + assert tg.read_value(d) == pytest.approx((0.25 + 0.87 * 2.0) ** 2 + cp.sin(0.25), 0.005) # pyright: ignore[reportUnknownMemberType] assert tg.read_value(e) == pytest.approx(cp.sqrt(0.87), 0.001) # pyright: ignore[reportUnknownMemberType] if __name__ == "__main__":