def test_sincos_ps(self): asm = Tdasm() mc = asm.assemble(SINCOS_CODE_PS) runtime = Runtime() load_math_func("fast_sincos_ps", runtime) ds = runtime.load("sincos_ps", mc) for x in range(1000): num1 = random.random() * 2000 num2 = random.random() * 2000 num3 = random.random() * 2000 num4 = random.random() * 2000 ds["v1"] = (num1, num2, num3, num4) runtime.run("sincos_ps") rez_asm_sin = ds["v1"] rez_asm_cos = ds["v2"] rez_py1_sin = math.sin(num1) rez_py2_sin = math.sin(num2) rez_py3_sin = math.sin(num3) rez_py4_sin = math.sin(num4) rez_py1_cos = math.cos(num1) rez_py2_cos = math.cos(num2) rez_py3_cos = math.cos(num3) rez_py4_cos = math.cos(num4) self.assertAlmostEqual(rez_asm_sin[0], rez_py1_sin, 3) self.assertAlmostEqual(rez_asm_sin[1], rez_py2_sin, 3) self.assertAlmostEqual(rez_asm_sin[2], rez_py3_sin, 3) self.assertAlmostEqual(rez_asm_sin[3], rez_py4_sin, 3) self.assertAlmostEqual(rez_asm_cos[0], rez_py1_cos, 3) self.assertAlmostEqual(rez_asm_cos[1], rez_py2_cos, 3) self.assertAlmostEqual(rez_asm_cos[2], rez_py3_cos, 3) self.assertAlmostEqual(rez_asm_cos[3], rez_py4_cos, 3)
def test_pow_ps(self): asm = Tdasm() mc = asm.assemble(POW_CODE_PS) runtime = Runtime() load_math_func("fast_pow_ps", runtime) ds = runtime.load("pow_ps", mc) for x in range(1000): num1 = random.random() * 3 num2 = random.random() * 3 num3 = random.random() * 3 num4 = random.random() * 3 num5 = random.random() * 3 num6 = random.random() * 3 num7 = random.random() * 3 num8 = random.random() * 3 ds["v1"] = (num1, num2, num3, num4) ds["v2"] = (num5, num6, num7, num8) runtime.run("pow_ps") rez_asm = ds["v1"] rez_py1 = math.pow(num1, num5) rez_py2 = math.pow(num2, num6) rez_py3 = math.pow(num3, num7) rez_py4 = math.pow(num4, num8) self.assertAlmostEqual(rez_asm[0], rez_py1, 1) self.assertAlmostEqual(rez_asm[1], rez_py2, 1) self.assertAlmostEqual(rez_asm[2], rez_py3, 1) self.assertAlmostEqual(rez_asm[3], rez_py4, 1)
def test_log(self): asm = Tdasm() mc = asm.assemble(LOG_CODE) runtime = Runtime() load_math_func("fast_log_ss", runtime) ds = runtime.load("log", mc) for x in range(1000): num = random.random() ds["x"] = num runtime.run("log") rez_asm = ds["x"] rez_py = math.log(num) self.assertAlmostEqual(rez_asm, rez_py, 3)
def test_atan(self): asm = Tdasm() mc = asm.assemble(ATAN_CODE) runtime = Runtime() load_math_func("fast_atan_ss", runtime) ds = runtime.load("atan", mc) for x in range(1000): num = random.random() * 2000 ds["x"] = num runtime.run("atan") rez_asm = ds["x"] rez_py = math.atan(num) self.assertAlmostEqual(rez_asm, rez_py, 3)
def test_exp(self): asm = Tdasm() mc = asm.assemble(EXP_CODE) runtime = Runtime() load_math_func("fast_exp_ss", runtime) ds = runtime.load("exp", mc) for x in range(1000): num = random.random() * 4 ds["x"] = num runtime.run("exp") rez_asm = ds["x"] rez_py = math.exp(num) self.assertAlmostEqual(rez_asm, rez_py, 2)
def test_pow(self): asm = Tdasm() mc = asm.assemble(POW_CODE) runtime = Runtime() load_math_func("fast_pow_ss", runtime) ds = runtime.load("pow", mc) for x in range(1000): num = random.random() * 3 num1 = random.random() * 3 ds["x"] = num ds["y"] = num1 runtime.run("pow") rez_asm = ds["x"] rez_py = math.pow(num, num1) self.assertAlmostEqual(rez_asm, rez_py, 1)
def test_sincos(self): asm = Tdasm() mc = asm.assemble(SINCOS_CODE) runtime = Runtime() load_math_func("fast_sincos_ss", runtime) ds = runtime.load("sincos", mc) for x in range(1000): num = random.random() * 2000 ds["x"] = num runtime.run("sincos") rez_asm1 = ds["x"] rez_asm2 = ds["y"] rez_py1, rez_py2 = math.sin(num), math.cos(num) self.assertAlmostEqual(rez_asm1, rez_py1, 3) self.assertAlmostEqual(rez_asm2, rez_py2, 3)
def test_log_ps(self): asm = Tdasm() mc = asm.assemble(LOG_CODE_PS) runtime = Runtime() load_math_func("fast_log_ps", runtime) ds = runtime.load("log_ps", mc) for x in range(1000): num1 = random.random() num2 = random.random() num3 = random.random() num4 = random.random() ds["v1"] = (num1, num2, num3, num4) runtime.run("log_ps") rez_asm = ds["v1"] rez_py1 = math.log(num1) rez_py2 = math.log(num2) rez_py3 = math.log(num3) rez_py4 = math.log(num4) self.assertAlmostEqual(rez_asm[0], rez_py1, 3) self.assertAlmostEqual(rez_asm[1], rez_py2, 3) self.assertAlmostEqual(rez_asm[2], rez_py3, 3) self.assertAlmostEqual(rez_asm[3], rez_py4, 3)