-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathsimplify-trig.sls
38 lines (27 loc) · 1.11 KB
/
simplify-trig.sls
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
#!r6rs
(library (mpl simplify-trig)
(export simplify-trig)
(import (mpl rnrs-sans)
(mpl arithmetic)
(mpl numerator)
(mpl denominator)
(mpl rationalize-expression)
(mpl expand-trig)
(mpl contract-trig)
(mpl trig-substitute)
(mpl algebraic-expand))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Original version from book
;; (define (simplify-trig u)
;; (let ((w (rationalize-expression (trig-substitute u))))
;; (/ (contract-trig (expand-trig (numerator w)))
;; (contract-trig (expand-trig (denominator w))))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 2009/10/01
;; This version calls 'algebraic-expand' between 'contract-trig' and
;; 'expand-trig'. This enables 'simplify-trig' to work on EA Example 7.16.
(define (simplify-trig u)
(let ((w (rationalize-expression (trig-substitute u))))
(/ (contract-trig (algebraic-expand (expand-trig (numerator w))))
(contract-trig (algebraic-expand (expand-trig (denominator w)))))))
)