File: ntrig.mac

package info (click to toggle)
maxima 5.10.0-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 44,268 kB
  • ctags: 17,987
  • sloc: lisp: 152,894; fortran: 14,667; perl: 14,204; tcl: 10,103; sh: 3,376; makefile: 2,202; ansic: 471; awk: 7
file content (24 lines) | stat: -rw-r--r-- 1,096 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
eval_when([translate,batch,demo,load,loadfile],
matchdeclare(n,integerp))$

tellsimpafter(sin(n*%pi/10),usin(n))$
tellsimpafter(cos(n*%pi/10),ucos(n))$
tellsimpafter(tan(n*%pi/10),usin(n)/ucos(n))$
tellsimpafter(cot(n*%pi/10),ucos(n)/usin(n))$
tellsimpafter(sec(n*%pi/10),1/ucos(n))$
tellsimpafter(csc(n*%pi/10),1/usin(n))$

usin(n):= block([yuk:remainder(remainder(n,10)+10,10),
                 sgn:if remainder(remainder(n,20)+20,20)>=10 then -1 else 1],
if yuk=1 or yuk=9 then sgn*(sqrt(5)-1)/4 else
if yuk=2 or yuk=8 then sgn*(sqrt(5)-1)*sqrt(sqrt(5)+5)/(4*sqrt(2)) else
if yuk=3 or yuk=7 then sgn*(sqrt(5)+1)/4 else
if yuk=4 or yuk=6 then sgn*sqrt(sqrt(5)+5)/(2*sqrt(2)))$

ucos(n):= block([yuk:remainder(remainder(n,10)+10,10),
                 sgn:if remainder(remainder(n,20)+20,20)>5 and
                        remainder(remainder(n,20)+20,20)<15 then -1 else 1],
if yuk=1 or yuk=9 then sgn*sqrt(sqrt(5)+5)/(2*sqrt(2)) else
if yuk=2 or yuk=8 then sgn*(sqrt(5)+1)/4 else
if yuk=3 or yuk=7 then sgn*(sqrt(5)-1)*sqrt(sqrt(5)+5)/(4*sqrt(2)) else
if yuk=4 or yuk=6 then sgn*(sqrt(5)-1)/4)$