



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 *-un-lft-identity20.6
Applied associate-/l*20.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 *-un-lft-identity34.4
Applied associate-/l*34.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 *-un-lft-identity59.1
Applied associate-/l*59.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: 20.2s)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:
| 10.0ms | (/ (- (sqrt (fma (* a -4) c (* b b))) b) (* 2 a)) |
| 5.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 1.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 74.0ms | (/ (- (sqrt (fma (* a -4) c (* b b))) b) (* 2 a)) |
| 54.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 45.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 38.0ms | (fma (* a -4) c (* b b)) |
34 calls. Slowest were:
| 670.0ms | (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* b b)) |
| 112.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))) |
| 108.0ms | (- (pow (sqrt (fma (* a -4) c (* b b))) 3) (pow b 3)) |
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:
| 6.0ms | (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 5.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 3.0ms | (/ 1 (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b))) |
4 calls. Slowest were:
| 142.0ms | (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 89.0ms | (/ 1 (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 59.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 47.0ms | (sqrt (fma (* a -4) c (* b b))) |
45 calls. Slowest were:
| 633.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))) |
| 89.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))) |
| 71.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:
| 5.0ms | (/ (/ 1 (* 2 a)) (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 5.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 4.0ms | (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b)) |
4 calls. Slowest were:
| 106.0ms | (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 74.0ms | (/ (/ 1 (* 2 a)) (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 60.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 41.0ms | (sqrt (fma (* a -4) c (* b b))) |
89 calls. Slowest were:
| 637.0ms | (/ 1 (/ 1 (- (pow (sqrt (fma (* a -4) c (* b b))) 3) (pow b 3)))) |
| 545.0ms | (/ (sqrt (/ 1 (* 2 a))) (/ 1 (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* b b)))) |
| 502.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:
| 67.0ms | (* (/ (/ 1 (* 2 a)) 1) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 45.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 39.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 29.0ms | (fma (* a -4) c (* b b)) |
41 calls. Slowest were:
| 973.0ms | (* (* (* (/ (/ 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))) |
| 524.0ms | (* (/ 1 (* 2 a)) (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* b b))) |
| 366.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