1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
include("cordic.jl")
include("taylor.jl")
using Printf
# preprocessing
cordic.main()
function rel_error(x, y)
return abs((x - y) / y)
end
function test_real_sin(arg, trig_func)
@printf("Testing relative error for function %s and argument %f.\n", String(Symbol(trig_func)), arg)
res = trig_func(arg, 0)
real_res = sin(arg)
@printf("Result: %.50f\n", res[1])
@printf("LibRes: %.50F\n", real_res)
@printf("Relative error: %e\n", rel_error(res[1], real_res))
end
function test_complex_sin(arg_real, arg_imag, trig_func)
@printf("Testing relative error for function %s and argument %f + %f i.\n", String(Symbol(trig_func)), arg_real, arg_imag)
res = trig_func(arg_real, arg_imag)
real_res = sin(arg_real + arg_imag * im)
@printf("Result: %.50f + %.50f i\n", res[1], res[2])
@printf("LibRes: %.50f + %.50f i\n", real(real_res), imag(real_res))
@printf("Relative error: %e, %e\n", rel_error(res[1], real(real_res)), rel_error(res[2], imag(real_res)))
end
test_real_sin(0.5, taylor.csin)
test_real_sin(0.5, cordic.approx_sin)
test_real_sin(0.001, taylor.csin)
test_real_sin(0.001, cordic.approx_sin)
test_real_sin(0.1, taylor.csin)
test_real_sin(0.1, cordic.approx_sin)
# test_complex_sin(0.5 + 2pi, 0.5, taylor.csin)
# test_complex_sin(100, 0.5, taylor.csin)
|