



Bits error versus x




Bits error versus eps
Results
| Original | 37.1 |
|---|---|
| Target | 15.1 |
| Herbie | 0.4 |
if eps < -9.009528554123312e-09 or 7.127013155980482e-09 < eps Initial program 29.9
rmApplied sin-sum0.5
if -9.009528554123312e-09 < eps < 7.127013155980482e-09Initial program 44.6
rmApplied diff-sin44.6
Simplified0.3
rmApplied expm1-log1p-u0.3
Final simplification0.4
herbie shell --seed 2019007 +o rules:numerics
(FPCore (x eps)
:name "2sin (example 3.3)"
:herbie-target
(* 2 (* (cos (+ x (/ eps 2))) (sin (/ eps 2))))
(- (sin (+ x eps)) (sin x)))
Time bar (total: 17.0s)Debug log
1 calls. Slowest were:
| 8.0ms | (- (sin (+ x eps)) (sin x)) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 36.1b
Found 2 expressions with local error:
| 4.5b | (sin (+ x eps)) |
| 1.2b | (- (sin (+ x eps)) (sin x)) |
2 calls. Slowest were:
| 7.0ms | (- (sin (+ x eps)) (sin x)) |
| 2.0ms | (sin (+ x eps)) |
2 calls. Slowest were:
| 45.0ms | (- (sin (+ x eps)) (sin x)) |
| 27.0ms | (sin (+ x eps)) |
33 calls. Slowest were:
| 419.0ms | (- eps (+ (* 1/2 (* x (pow eps 2))) (* 1/2 (* (pow x 2) eps)))) |
| 50.0ms | (- (+ x eps) (* 1/6 (pow x 3))) |
| 37.0ms | (* (sin (/ (- (+ x eps) x) 2)) (cos (/ (+ (+ x eps) x) 2))) |
4 alts after pruning (4 fresh and 0 done)
Merged error: 0.3b
Found 3 expressions with local error:
| 4.4b | (cos (/ (+ (+ x x) eps) 2)) |
| 0.3b | (* (cos (/ (+ (+ x x) eps) 2)) (sin (/ eps 2))) |
| 0.2b | (/ (+ (+ x x) eps) 2) |
3 calls. Slowest were:
| 12.0ms | (* (cos (/ (+ (+ x x) eps) 2)) (sin (/ eps 2))) |
| 11.0ms | (/ (+ (+ x x) eps) 2) |
| 9.0ms | (cos (/ (+ (+ x x) eps) 2)) |
3 calls. Slowest were:
| 77.0ms | (* (cos (/ (+ (+ x x) eps) 2)) (sin (/ eps 2))) |
| 20.0ms | (/ (+ (+ x x) eps) 2) |
| 18.0ms | (cos (/ (+ (+ x x) eps) 2)) |
21 calls. Slowest were:
| 347.0ms | (- 1 (+ (* 1/2 (* x eps)) (* 1/2 (pow x 2)))) |
| 265.0ms | (- (* (+ x x) (+ x x)) (* eps eps)) |
| 136.0ms | (- (* 1/2 eps) (+ (* 1/4 (* x (pow eps 2))) (* 1/4 (* (pow x 2) eps)))) |
10 alts after pruning (10 fresh and 0 done)
Merged error: 0.2b
Found 4 expressions with local error:
| 4.4b | (cos (/ (+ (+ x x) eps) 2)) |
| 0.5b | (log1p (cos (/ (+ (+ x x) eps) 2))) |
| 0.3b | (* (expm1 (log1p (cos (/ (+ (+ x x) eps) 2)))) (sin (/ eps 2))) |
| 0.2b | (expm1 (log1p (cos (/ (+ (+ x x) eps) 2)))) |
4 calls. Slowest were:
| 5.0ms | (* (expm1 (log1p (cos (/ (+ (+ x x) eps) 2)))) (sin (/ eps 2))) |
| 5.0ms | (cos (/ (+ (+ x x) eps) 2)) |
| 0.0ms | (log1p (cos (/ (+ (+ x x) eps) 2))) |
4 calls. Slowest were:
| 92.0ms | (* (expm1 (log1p (cos (/ (+ (+ x x) eps) 2)))) (sin (/ eps 2))) |
| 54.0ms | (log1p (cos (/ (+ (+ x x) eps) 2))) |
| 53.0ms | (expm1 (log1p (cos (/ (+ (+ x x) eps) 2)))) |
| 18.0ms | (cos (/ (+ (+ x x) eps) 2)) |
22 calls. Slowest were:
| 388.0ms | (- (log 2) (+ (* 1/4 (* x eps)) (* 1/4 (pow x 2)))) |
| 365.0ms | (- 1 (+ (* 1/2 (* x eps)) (* 1/2 (pow x 2)))) |
| 307.0ms | (- 1 (+ (* 1/2 (* x eps)) (* 1/2 (pow x 2)))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 0.2b
Found 4 expressions with local error:
| 4.4b | (cos (/ (+ (+ x x) eps) 2)) |
| 0.5b | (expm1 (cos (/ (+ (+ x x) eps) 2))) |
| 0.3b | (* (log1p (expm1 (cos (/ (+ (+ x x) eps) 2)))) (sin (/ eps 2))) |
| 0.2b | (log1p (expm1 (cos (/ (+ (+ x x) eps) 2)))) |
4 calls. Slowest were:
| 7.0ms | (cos (/ (+ (+ x x) eps) 2)) |
| 5.0ms | (* (log1p (expm1 (cos (/ (+ (+ x x) eps) 2)))) (sin (/ eps 2))) |
| 0.0ms | (expm1 (cos (/ (+ (+ x x) eps) 2))) |
4 calls. Slowest were:
| 121.0ms | (* (log1p (expm1 (cos (/ (+ (+ x x) eps) 2)))) (sin (/ eps 2))) |
| 77.0ms | (log1p (expm1 (cos (/ (+ (+ x x) eps) 2)))) |
| 58.0ms | (expm1 (cos (/ (+ (+ x x) eps) 2))) |
| 17.0ms | (cos (/ (+ (+ x x) eps) 2)) |
22 calls. Slowest were:
| 278.0ms | (- 1 (+ (* 1/2 (* x eps)) (* 1/2 (pow x 2)))) |
| 254.0ms | (- 1 (+ (* 1/2 (* x eps)) (* 1/2 (pow x 2)))) |
| 126.0ms | (- E (+ (* 1/2 (* x (* E eps))) (+ (* 1/2 (* (pow x 2) E)) 1))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 0.2b
99.3% (0.1b remaining)
Error of 0.4b against oracle of 0.3b and baseline of 15.1b