Professional Documents
Culture Documents
sin 6 = 30 6 5 51/8
cos 6 = 15 3 102 5/ 8
tan 6 = 102 5 3 15 / 2
cot 7.5 = 6 3 22
sin 9 = 10 22 5 5/ 8
cos 9 = 10 22 5 5/ 8
tan 9 = 1 5 52 5
cot 9 = 1 5 52 5
sin 11.25 = 2 2 2/ 2
cos 11.25 = 2 2 2/ 2
tan 11.25 = 42 2 21
sin 12 = 2 32 15 102 5 5010 5/16
cos 12 = 31 9 54 306 55 62 5/8
sin 15 = 6 2/ 4
cos 15 = 6 2/ 4
tan 15 = 2 3
cot 15 = 2 3
sin 18 = 5 1/ 4
cos 18 = 10 2 5/ 4
tan 18 = 12 / 5
cot 18 = 52 5
sin 21 = 31 5 5/ 8 6 2 51 /16
cos 21 = 31 5 5/8 6 2 51 /16
sin 22.5 = 2 2 /2
cos 22.5 = 2 2 / 2
tan 22.5 = 21
cot 22.5 = 2 1
sin 24 = 15 3 10 2 5/8
cos 24 = 51 30 6 5/8
sin 27 = 2 5 5 10 2/8
cos 27 = 2 5 5 10 2/ 8
sin 33 = 31 5 5/ 8 6 2 5 1 /16
cos 33 = 31 5 5/ 8 6 2 51 /16
sin 36 = 10 2 5 / 4
cos 36 = 51/ 4
tan 36 = 5 2 5
cot 36 = 12/ 5
sin 37.5 = 2 2 3/ 2
cos 37.5 = 2 2 3/ 2
tan 37.5 = 6 3 22
cot 37.5 = 6 3 22
sin 39 = 6 2 51/ 16 31 5 5 /8
cos 39 = 6 2 5 1/16 31 5 5 /8
s2, s3, s5, s6, s10, s15 = map(sqrt, (2, 3, 5, 6, 10, 15))
def eq(a, b):
if abs(a - b) > eps:
raise ValueError()
# 3 deg
eq(s(3*D), ((s6+s2)*(s5-1)/16 - (s3-1)*sqrt(5 + s5)/8))
eq(c(3*D), ((s6-s2)*(s5-1)/16 + (s3+1)*sqrt(5 + s5)/8))
# 6 deg
eq(s(6*D), (sqrt(30 - 6*s5) - s5 - 1)/8)
eq(c(6*D), (s15 + s3 + sqrt(10 -2*s5))/8)
eq(t(6*D), (sqrt(10 - 2*s5) + s3 - s15)/2)
eq(1/t(6*D), (3*s3 + s15 + 2*sqrt(10 - 2*s5) + sqrt(50 - 10*s5))/2)
# 7.5 deg
eq(s(mpf("7.5")*D), (sqrt(8 - 2*s2 - 2*s6)/4))
eq(c(mpf("7.5")*D), (sqrt(8 + 2*s2 + 2*s6)/4))
eq(t(mpf("7.5")*D), (s6 - s3 + s2 - 2))
eq(1/t(mpf("7.5")*D), (s6 + s3 + s2 + 2))
# 9 deg
eq(s(9*D), (s10 + s2 - 2*sqrt(5 - s5))/8)
eq(c(9*D), (s10 + s2 + 2*sqrt(5 - s5))/8)
eq(t(9*D), (1 + s5 - sqrt(5 + 2*s5)))
eq(1/t(9*D), (1 + s5 + sqrt(5 + 2*s5)))
# 11.25 deg
eq(s(mpf("11.25")*D), (sqrt(2 - sqrt(2 + s2)))/2)
eq(c(mpf("11.25")*D), (sqrt(2 + sqrt(2 + s2)))/2)
eq(t(mpf("11.25")*D), sqrt(4 + 2*s2) - s2 - 1)
# 12 deg
eq(s(12*D), (2*s3 - 2*s15 + sqrt(10 - 2*s5) + sqrt(50 - 10*s5))/16)
eq(c(12*D), (sqrt(31 + 9*s5 + 4*sqrt(30 - 6*s5) - 5*sqrt(6 - 2*s5)))/8)
# 15 deg
eq(s(15*D), (s6 - s2)/4)
eq(c(15*D), (s6 + s2)/4)
eq(t(15*D), (2 - s3))
eq(1/t(15*D), (2 + s3))
# 18 deg
eq(s(18*D), (s5 - 1)/4)
eq(c(18*D), (sqrt(10 + 2*s5))/4)
eq(t(18*D), sqrt(1 - 2/s5))
eq(1/t(18*D), sqrt(5 + 2*s5))
# 21 deg
eq(s(21*D), (s3+1)*(sqrt(5-s5))/8 - (s6-s2)*(s5+1)/16)
eq(c(21*D), (s3-1)*(sqrt(5-s5))/8 + (s6+s2)*(s5+1)/16)
# 22.5 deg
eq(s(mpf("22.5")*D), sqrt(2 - s2)/2)
eq(c(mpf("22.5")*D), sqrt(2 + s2)/2)
eq(t(mpf("22.5")*D), s2 - 1)
eq(1/t(mpf("22.5")*D), s2 + 1)
# 24 deg
eq(s(24*D), (s15 + s3 - sqrt(10 - 2*s5))/8)
eq(c(24*D), (s5 + 1 + sqrt(30 - 6*s5))/8)
# 27 deg
eq(s(27*D), (2*sqrt(5 + s5) - s10 + s2)/8)
eq(c(27*D), (2*sqrt(5 + s5) + s10 - s2)/8)
# 33 deg
eq(s(33*D), (s3-1)*(sqrt(5+s5))/8 + (s6+s2)*(s5-1)/16)
eq(c(33*D), (s3+1)*(sqrt(5+s5))/8 - (s6-s2)*(s5-1)/16)
# 36 deg
eq(s(36*D), sqrt(10 - 2*s5)/4)
eq(c(36*D), (s5 + 1)/4)
eq(t(36*D), sqrt(5 - 2*s5))
eq(1/t(36*D), sqrt(1 + 2/s5))
# 37.5 deg
eq(s(mpf("37.5")*D), sqrt(2 - sqrt(2 - s3))/2)
eq(c(mpf("37.5")*D), sqrt(2 + sqrt(2 - s3))/2)
eq(t(mpf("37.5")*D), s6 + s3 - s2 - 2)
eq(1/t(mpf("37.5")*D), s6 - s3 - s2 + 2)
# 39 deg
eq(s(39*D), (s6+s2)*(s5+1)/16 - (s3-1)*sqrt(5 - s5)/8)
eq(c(39*D), (s6-s2)*(s5+1)/16 + (s3+1)*sqrt(5 - s5)/8)
print "Tests passed"