


Bits error versus a



Bits error versus b



Bits error versus c
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 "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))
Time bar (total: 25.1s)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:
| 28.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:
| 88.0ms | (/ (- (sqrt (fma (* a -4) c (* b b))) b) (* 2 a)) |
| 62.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 45.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 35.0ms | (fma (* a -4) c (* b b)) |
34 calls. Slowest were:
| 671.0ms | (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* b b)) |
| 120.0ms | (- (pow (sqrt (fma (* a -4) c (* b b))) 3) (pow b 3)) |
| 88.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:
| 7.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:
| 548.0ms | (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 115.0ms | (/ 1 (/ (* 2 a) (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 71.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 49.0ms | (sqrt (fma (* a -4) c (* b b))) |
45 calls. Slowest were:
| 644.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))) |
| 86.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) |
| 3.0ms | (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b)) |
4 calls. Slowest were:
| 117.0ms | (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 91.0ms | (/ (/ 1 (* 2 a)) (/ 1 (- (sqrt (fma (* a -4) c (* b b))) b))) |
| 65.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 63.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
89 calls. Slowest were:
| 659.0ms | (/ (sqrt (/ 1 (* 2 a))) (/ 1 (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* b b)))) |
| 631.0ms | (/ 1 (/ 1 (- (pow (sqrt (fma (* a -4) c (* b b))) 3) (pow b 3)))) |
| 602.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)))) |
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:
| 24.0ms | (* (/ (/ 1 (* 2 a)) 1) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 10.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 2.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 117.0ms | (* (/ (/ 1 (* 2 a)) 1) (- (sqrt (fma (* a -4) c (* b b))) b)) |
| 67.0ms | (- (sqrt (fma (* a -4) c (* b b))) b) |
| 48.0ms | (fma (* a -4) c (* b b)) |
| 43.0ms | (sqrt (fma (* a -4) c (* b b))) |
41 calls. Slowest were:
| 1.3s | (* (* (* (/ (/ 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))) |
| 494.0ms | (* (/ (/ 1 (* 2 a)) 1) (- b)) |
| 472.0ms | (* 1 (+ (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (+ (* b b) (* (sqrt (fma (* a -4) c (* b b))) 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