$SPAD/src/input elemfun.input

Timothy Daly December 3, 2016

Abstract

Contents

2

1 License

— license —

--Copyright The Numerical Algorithms Group Limited 1991.

———-

— * —

)set break resume
)spool elemfun.output
)set message test on
)set message auto off
)clear all

———-

Some values of trig functions will simplify on application — * —

--S 1 of 28
cos 0
--R
--R
--R   (1)  1
--R                                                    Type: Expression(Integer)
--E 1
--S 2 of 28
sin 0
--R
--R
--R   (2)  0
--R                                                    Type: Expression(Integer)
--E 2
--S 3 of 28
exp 0
--R
--R
--R   (3)  1
--R                                                    Type: Expression(Integer)
--E 3
--S 4 of 28
log 1
--R
--R
--R   (4)  0

--R                                                    Type: Expression(Integer)
--E 4
--S 5 of 28
sin(%pi/2)
--R
--R
--R   (5)  1
--R                                                    Type: Expression(Integer)
--E 5
--S 6 of 28
simplify %
--R
--R
--R   (6)  1
--R                                                    Type: Expression(Integer)
--E 6

———-

The same goes with the usual relations — * —

--S 7 of 28
sin(3)**2 + cos(3)**2
--R
--R
--R              2         2
--R   (7)  sin(3)  + cos(3)
--R                                                    Type: Expression(Integer)
--E 7
--S 8 of 28
simplify %
--R
--R
--R   (8)  1
--R                                                    Type: Expression(Integer)
--E 8
--S 9  of 28
a := atan 1
--R
--R
--R        %pi
--R   (9)  ---
--R         4
--R                                                    Type: Expression(Integer)
--E 9

--S 10 of 28
t := cos(a)*sin(a)*tan(a)*sec(a)*csc(a)*cot(a)
--R
--R
--R   (10)  1
--R                                                    Type: Expression(Integer)
--E 10
--S 11 of 28
simplify t
--R
--R
--R   (11)  1
--R                                                    Type: Expression(Integer)
--E 11

———-

We can remove selected operations — * —

--S 12 of 28
cot2tan t
--R
--R
--R   (12)  1
--R                                                    Type: Expression(Integer)
--E 12
--S 13 of 28
cot2trig t
--R
--R
--R   (13)  1
--R                                                    Type: Expression(Integer)
--E 13
--S 14 of 28
tan2cot t
--R
--R
--R   (14)  1
--R                                                    Type: Expression(Integer)
--E 14
--S 15 of 28
tan2trig t
--R
--R

--R   (15)  1
--R                                                    Type: Expression(Integer)
--E 15
--S 16 of 28
cos2sec t
--R
--R
--R   (16)  1
--R                                                    Type: Expression(Integer)
--E 16

———-

Given such a trig expression not involving any variables, we can get a numeric approximation — * —

--S 17 of 28
t := sin(7)**2 - sec(7)/(1 - cot(7) + csc(7)**3)
--R
--R
--R                3                    2
--R         (csc(7)  - cot(7) + 1)sin(7)  - sec(7)
--R   (17)  --------------------------------------
--R                        3
--R                  csc(7)  - cot(7) + 1
--R                                                    Type: Expression(Integer)
--E 17
--S 18 of 28
simplify t
--R
--R
--R   (18)
--R                5          3         2                             6          4
--R       (- cos(7)  + 2cos(7)  - cos(7)  - cos(7) + 1)sin(7) + cos(7)  - 2cos(7)
--R     +
--R             3         2
--R       cos(7)  + cos(7)  - cos(7)
--R  /
--R            3                         4         2
--R     (cos(7)  - cos(7))sin(7) - cos(7)  + cos(7)  - cos(7)
--R                                                    Type: Expression(Integer)
--E 18
--S 19 of 28
numeric %
--R
--R
--R   (19)  0.0390653254 8092347922 2

--R                                                                  Type: Float
--E 19

———-

We really didn’t need to have simplified — * —

--S 20 of 28
numeric t
--R
--R
--R   (20)  0.0390653254 8092347921 5
--R                                                                  Type: Float
--E 20

———-

We can get more digits by giving a precision — * —

--S 21 of 28
numeric(t, 100)
--R
--R
--R   (21)
--R  0.0390653254 8092347921 8900669391 6314051319 2684833219 8927261332 141491473
--R  3 4130898335 0601081135 3732125345 8
--R                                                                  Type: Float
--E 21

———-

If we do have an expression involving variables, we can use eval to give them values — * —

--S 22 of 28
u := exp(sin(x-1)**2 - cos(x-1)/sec(x-1))
--R
--R
--R                               2
--R           sec(x - 1)sin(x - 1)  - cos(x - 1)
--R           ----------------------------------
--R                       sec(x - 1)
--R   (22)  %e
--R                                                    Type: Expression(Integer)
--E 22
--S 23 of 28
eval(u,x=1)
--R

--R
--R          1
--R   (23)  --
--R         %e
--R                                                    Type: Expression(Integer)
--E 23

———-

Here is another technique using rewrite rules — * —

--S 24 of 28
v(x) == exp(sin(x-1)**2 - cos(x-1)/sec(x-1))
--R
--R                                                                   Type: Void
--E 24
--S 25 of 28
v x
--R
--R   Compiling function v with type Variable(x) -> Expression(Integer)
--R
--R                               2
--R           sec(x - 1)sin(x - 1)  - cos(x - 1)
--R           ----------------------------------
--R                       sec(x - 1)
--R   (25)  %e
--R                                                    Type: Expression(Integer)
--E 25
--S 26 of 28
v 1
--R
--R   Compiling function v with type PositiveInteger -> Expression(Integer
--R      )
--R
--R          1
--R   (26)  --
--R         %e
--R                                                    Type: Expression(Integer)
--E 26
--S 27 of 28
v(%pi/3)
--R
--R   Compiling function v with type Pi -> Expression(Integer)
--R
--R               %pi - 3     %pi - 3 2       %pi - 3
--R           sec(-------)sin(-------)  - cos(-------)

--R                  3           3               3
--R           ----------------------------------------
--R                             %pi - 3
--R                         sec(-------)
--R                                3
--R   (27)  %e
--R                                                    Type: Expression(Integer)
--E 27
--S 28 of 28
numeric %
--R
--R
--R   (28)  0.3695208585 287457761
--R                                                                  Type: Float
--E 28
)spool
)lisp (bye)

———-

References^{[1] nothing}

10