Skip to content

Commit 1becaf2

Browse files
committed
Added trig.py to experiment with sin/cos calculation.
1 parent 4e07eab commit 1becaf2

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

Diff for: generate/trig.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/env python3
2+
import sys
3+
import math
4+
5+
def main() -> int:
6+
# See how long it takes to converge for a problematic value near 1.
7+
angle = -0.9535784309745123
8+
angleSquared = angle * angle
9+
sum = 0.0
10+
fact = 1
11+
pow = angle
12+
n = 1
13+
while n <= 99:
14+
# n = 1, 3, 5, ...
15+
term = pow / fact
16+
prev = sum
17+
sum += term
18+
print('n={:02d} term={:24.16e} sum={:20.16f} fact={:d}'.format(n, term, sum, fact))
19+
if prev == sum:
20+
break
21+
pow *= angleSquared
22+
fact *= -((n+1) * (n+2))
23+
n += 2
24+
correct = math.sin(angle)
25+
diff = sum - correct
26+
print('correct={:0.16f}, sum={:0.16f}, diff={:g}'.format(correct, sum, diff))
27+
return 0
28+
29+
if __name__ == '__main__':
30+
sys.exit(main())

0 commit comments

Comments
 (0)