|
166 | 166 |
|
167 | 167 | ; Fractions |
168 | 168 | (define-rules arithmetic |
169 | | - [sum-to-mult (+ a b) (* (+ 1 (/ b a)) a) #:unsound] ; unsound @ a = 0, b = 1 |
| 169 | + #;[sum-to-mult (+ a b) (* (+ 1 (/ b a)) a) #:unsound] ; unsound @ a = 0, b = 1 |
170 | 170 | [sum-to-mult-rev (* (+ 1 (/ b a)) a) (+ a b)] |
171 | | - [sub-to-mult (- a b) (* (- 1 (/ b a)) a) #:unsound] ; unsound @ a = 0, b = 1 |
| 171 | + #;[sub-to-mult (- a b) (* (- 1 (/ b a)) a) #:unsound] ; unsound @ a = 0, b = 1 |
172 | 172 | [sub-to-mult-rev (* (- 1 (/ b a)) a) (- a b)] |
173 | 173 | [add-to-fraction (+ c (/ b a)) (/ (+ (* c a) b) a)] |
174 | 174 | [add-to-fraction-rev (/ (+ (* c a) b) a) (+ c (/ b a))] |
|
177 | 177 | [common-denominator (+ (/ a b) (/ c d)) (/ (+ (* a d) (* c b)) (* b d))]) |
178 | 178 |
|
179 | 179 | (define-rules polynomials |
180 | | - [sqr-pow (pow a b) (* (pow a (/ b 2)) (pow a (/ b 2))) #:unsound] ; unsound @ a = -1, b = 1 |
| 180 | + [sqr-pow (pow a b) (copysign (* (pow (fabs a) (/ b 2)) (pow (fabs a) (/ b 2))) a)] |
181 | 181 | [flip-+ (+ a b) (sound-/ (- (* a a) (* b b)) (- a b) (+ a b))] |
182 | 182 | [flip-- (- a b) (sound-/ (- (* a a) (* b b)) (+ a b) (- a b))]) |
183 | 183 |
|
|
254 | 254 | (define-rules arithmetic |
255 | 255 | [sqrt-prod (sqrt (* x y)) (* (sqrt (fabs x)) (sqrt (fabs y)))] |
256 | 256 | [sqrt-div (sqrt (/ x y)) (/ (sqrt (fabs x)) (sqrt (fabs y)))] |
257 | | - [add-sqr-sqrt x (* (sqrt x) (sqrt x)) #:unsound]) ; unsound @ x = -1 |
| 257 | + [add-sqr-sqrt x (copysign (* (sqrt (fabs x)) (sqrt (fabs x))) x)]) |
258 | 258 |
|
259 | 259 | ; Cubing |
260 | 260 | (define-rules arithmetic |
|
296 | 296 | ; Exponentials |
297 | 297 | (define-rules exponents |
298 | 298 | [add-log-exp x (log (exp x))] |
299 | | - [add-exp-log x (exp (log x)) #:unsound] ; unsound @ x = 0 |
| 299 | + #;[add-exp-log x (exp (log x)) #:unsound] ; unsound @ x = -1 |
300 | 300 | [rem-exp-log (exp (log x)) x] |
301 | 301 | [rem-log-exp (log (exp x)) x]) |
302 | 302 |
|
|
355 | 355 | [pow-div (/ (pow a b) (pow a c)) (pow a (- b c))]) |
356 | 356 |
|
357 | 357 | (define-rules exponents |
358 | | - [pow-plus-rev (pow a (+ b 1)) (* (pow a b) a) #:unsound] ; unsound @ a = 0, b = -1/2 |
359 | | - [pow-neg (pow a (neg b)) (/ 1 (pow a b)) #:unsound]) ; unsound @ a = 0, b = -1 |
| 358 | + [pow-plus-rev (pow a (+ b 1)) (* (sound-pow a b 1) a)] |
| 359 | + [pow-neg (pow a (neg b)) (sound-/ 1 (sound-pow a b 0) 0)]) |
360 | 360 |
|
361 | 361 | (define-rules exponents |
362 | | - [pow-to-exp (pow a b) (exp (* (log a) b)) #:unsound] ; unsound @ a = -1, b = 1 |
363 | | - [pow-add (pow a (+ b c)) (* (pow a b) (pow a c)) #:unsound] ; unsound @ a = -1, b = c = 1/2 |
364 | | - [pow-sub (pow a (- b c)) (/ (pow a b) (pow a c)) #:unsound] ; unsound @ a = -1, b = c = 1/2 |
| 362 | + #;[pow-to-exp (pow a b) (exp (* (log a) b)) #:unsound] ; unsound @ a = -1, b = 1 |
| 363 | + #;[pow-add (pow a (+ b c)) (* (pow a b) (pow a c)) #:unsound] ; unsound @ a = -1, b = c = 1/2 |
| 364 | + #;[pow-sub (pow a (- b c)) (/ (pow a b) (pow a c)) #:unsound] ; unsound @ a = -1, b = c = 1/2 |
| 365 | + #; |
365 | 366 | [unpow-prod-down (pow (* b c) a) (* (pow b a) (pow c a)) #:unsound]) ; unsound @ a = 1/2, b = c = -1 |
366 | 367 |
|
367 | 368 | ; Logarithms |
|
373 | 374 | (define-rules exponents |
374 | 375 | [log-prod (log (* a b)) (+ (log (fabs a)) (log (fabs b)))] |
375 | 376 | [log-div (log (/ a b)) (- (log (fabs a)) (log (fabs b)))] |
376 | | - [log-pow (log (pow a b)) (* b (log (fabs a))) #:unsound]) ; unsound @ a == b == 0 |
| 377 | + [log-pow (log (pow a b)) (* b (sound-log (fabs a) 0))]) |
377 | 378 |
|
378 | 379 | (define-rules exponents |
379 | 380 | [sum-log (+ (log a) (log b)) (log (* a b))] |
|
0 commit comments