



Bits error versus a




Bits error versus b




Bits error versus c
| Original | 33.2 |
|---|---|
| Target | 20.2 |
| Herbie | 15.4 |
if b < 2.2808806815259953e-214Initial program 20.7
Initial simplification20.6
rmApplied clear-num20.8
rmApplied div-inv20.8
Applied associate-/r*20.8
rmApplied associate-/r/20.8
if 2.2808806815259953e-214 < b < 6.544733698813264e+98Initial program 34.4
Initial simplification34.4
rmApplied clear-num34.4
rmApplied div-inv34.4
Applied associate-/r*34.4
rmApplied associate-/r/34.4
rmApplied flip--34.5
Applied frac-times34.5
Simplified15.6
Simplified15.5
if 6.544733698813264e+98 < b Initial program 59.1
Initial simplification59.1
rmApplied clear-num59.2
Taylor expanded around 0 3.6
Simplified3.6
Final simplification15.4
herbie shell --seed 2018362 +o rules:numerics
(FPCore (a b c)
:name "The quadratic formula (r1)"
:herbie-target
(if (< b 0) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))
Time bar (total: 26.0s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 30.9b
Found 4 expressions with local error:
| 21.8b | (sqrt (fma (* a -4) c (* b b))) |
| 1.8b | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 0.4b | (/ (- (sqrt (fma (* a -4) c (* b b))) b) (* 2 a)) |
| 0.0b | (fma (* a -4) c (* b b)) |
4 calls. Slowest were:
| 20.0ms | (/ (- (sqrt (fma (* a -4) c (* b b))) b) (* 2 a)) |
| 10.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 2.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 84.0ms | (/ (- (sqrt (fma (* a -4) c (* b b))) b) (* 2 a)) |
| 61.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 48.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 37.0ms | (fma (* a -4) c (* b b)) |
34 calls. Slowest were:
| 753.0ms | (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* b b)) |
| 127.0ms | (- (pow (sqrt (fma (* a -4) c (* b b))) 3) (pow b 3)) |
| 101.0ms | (/ (* (* (- (sqrt (fma (* a -4) c (* b b))) b) (- (sqrt (fma (* a -4) c (* b b))) b)) (- (sqrt (fma (* a -4) c (* b b))) b)) (* (* (* 2 a) (* 2 a)) (* 2 a))) |
8 alts after pruning (8 fresh and 0 done)
Merged error: 20.8b
Found 4 expressions with local error:
| 21.8b | (sqrt (fma (* a -4) c (* b b))) |
| 1.8b | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 0.3b | (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 0.2b | (/ 1 (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b))) |
4 calls. Slowest were:
| 13.0ms | (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 10.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 7.0ms | (/ 1 (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b))) |
4 calls. Slowest were:
| 154.0ms | (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 85.0ms | (/ 1 (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 58.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 46.0ms | (sqrt (fma (* a -4) c (* b b))) |
45 calls. Slowest were:
| 621.0ms | (/ (* (* (* 2 a) (* 2 a)) (* 2 a)) (* (* (- (sqrt (fma (* a -4) c (* b b))) b) (- (sqrt (fma (* a -4) c (* b b))) b)) (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 121.0ms | (+ (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (+ (* b b) (* (sqrt (fma (* a -4) c (* b b))) b))) |
| 87.0ms | (+ (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (+ (* b b) (* (sqrt (fma (* a -4) c (* b b))) b))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 13.2b
Found 4 expressions with local error:
| 21.8b | (sqrt (fma (* a -4) c (* b b))) |
| 1.8b | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 0.3b | (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 0.3b | (/ (/ 1 (* 2 a)) (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b))) |
4 calls. Slowest were:
| 10.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 10.0ms | (/ (/ 1 (* 2 a)) (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 7.0ms | (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b)) |
4 calls. Slowest were:
| 112.0ms | (/ (/ 1 (* 2 a)) (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 107.0ms | (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 75.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 72.0ms | (sqrt (fma (* a -4) c (* b b))) |
89 calls. Slowest were:
| 949.0ms | (/ (/ 1 (* 2 a)) (+ (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (+ (* b b) (* (sqrt (fma (* a -4) c (* b b))) b)))) |
| 770.0ms | (/ (sqrt (/ 1 (* 2 a))) (/ 1 (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* b b)))) |
| 726.0ms | (/ 1 (/ 1 (- (pow (sqrt (fma (* a -4) c (* b b))) 3) (pow b 3)))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 13.0b
Found 4 expressions with local error:
| 21.8b | (sqrt (fma (* a -4) c (* b b))) |
| 1.8b | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 0.5b | (* (/ (/ 1 (* 2 a)) 1) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 0.0b | (fma (* a -4) c (* b b)) |
4 calls. Slowest were:
| 12.0ms | (* (/ (/ 1 (* 2 a)) 1) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 5.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 1.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 88.0ms | (* (/ (/ 1 (* 2 a)) 1) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 58.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 54.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 33.0ms | (fma (* a -4) c (* b b)) |
41 calls. Slowest were:
| 1.4s | (* (* (* (/ (/ 1 (* 2 a)) 1) (/ (/ 1 (* 2 a)) 1)) (/ (/ 1 (* 2 a)) 1)) (* (* (- (sqrt (fma (* a -4) c (* b b))) b) (- (sqrt (fma (* a -4) c (* b b))) b)) (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 617.0ms | (* (/ (/ 1 (* 2 a)) 1) (- b)) |
| 531.0ms | (* (/ (/ 1 (* 2 a)) 1) (- b)) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 13.0b
83.9% (3.1b remaining)
Error of 15.4b against oracle of 12.4b and baseline of 31.3b