



Bits error versus a




Bits error versus b




Bits error versus c
| Original | 34.2 |
|---|---|
| Target | 21.5 |
| Herbie | 10.3 |
if b < -4.21731702933355e+148Initial program 58.9
Taylor expanded around -inf 2.3
if -4.21731702933355e+148 < b < 1.2612246360442721e-22Initial program 14.8
Taylor expanded around inf 14.8
Simplified14.8
if 1.2612246360442721e-22 < b Initial program 54.5
Taylor expanded around inf 6.4
Simplified6.4
Final simplification10.3
herbie shell --seed 2019007 +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: 17.4s)Debug log
1 calls. Slowest were:
| 73.0ms | (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) |
2 alts after pruning (2 fresh and 0 done)
Merged error: 34.1b
Found 4 expressions with local error:
| 24.1b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 1.5b | (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) |
| 1.2b | (- (* b b) (* (* 4 a) c)) |
| 0.1b | (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) |
4 calls. Slowest were:
| 44.0ms | (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) |
| 12.0ms | (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) |
| 6.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
4 calls. Slowest were:
| 99.0ms | (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) |
| 79.0ms | (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) |
| 73.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 44.0ms | (- (* b b) (* (* 4 a) c)) |
40 calls. Slowest were:
| 436.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 365.0ms | (- (* (- b) (- b)) (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c))))) |
| 167.0ms | (+ (pow (- b) 3) (pow (sqrt (- (* b b) (* (* 4 a) c))) 3)) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 6.1b
Found 4 expressions with local error:
| 24.1b | (sqrt (fma (* a -4) c (* b b))) |
| 1.5b | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 0.1b | (/ (+ (- b) (sqrt (fma (* a -4) c (* b b)))) (* 2 a)) |
| 0.0b | (fma (* a -4) c (* b b)) |
4 calls. Slowest were:
| 24.0ms | (/ (+ (- b) (sqrt (fma (* a -4) c (* b b)))) (* 2 a)) |
| 4.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 1.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 77.0ms | (/ (+ (- b) (sqrt (fma (* a -4) c (* b b)))) (* 2 a)) |
| 44.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 43.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 33.0ms | (fma (* a -4) c (* b b)) |
35 calls. Slowest were:
| 339.0ms | (- (* (- b) (- b)) (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b))))) |
| 142.0ms | (+ (pow (- b) 3) (pow (sqrt (fma (* a -4) c (* b b))) 3)) |
| 109.0ms | (/ (* (* (+ (- b) (sqrt (fma (* a -4) c (* b b)))) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) (* (* (* 2 a) (* 2 a)) (* 2 a))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 6.1b
Found 4 expressions with local error:
| 24.1b | (sqrt (fma (* a -4) c (* b b))) |
| 1.5b | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 0.1b | (/ 1 (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b)))))) |
| 0.1b | (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) |
4 calls. Slowest were:
| 11.0ms | (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 11.0ms | (/ 1 (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b)))))) |
| 8.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
4 calls. Slowest were:
| 185.0ms | (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 120.0ms | (/ 1 (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b)))))) |
| 55.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 42.0ms | (sqrt (fma (* a -4) c (* b b))) |
48 calls. Slowest were:
| 500.0ms | (+ (* (- b) (- b)) (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* (- b) (sqrt (fma (* a -4) c (* b b)))))) |
| 487.0ms | (+ (* (- b) (- b)) (- (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))) (* (- b) (sqrt (fma (* a -4) c (* b b)))))) |
| 140.0ms | (/ (* (* (* 2 a) (* 2 a)) (* 2 a)) (* (* (+ (- b) (sqrt (fma (* a -4) c (* b b)))) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) (+ (- b) (sqrt (fma (* a -4) c (* b b)))))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 6.1b
Found 4 expressions with local error:
| 24.1b | (sqrt (fma -4 (* c a) (* b b))) |
| 1.5b | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 1.2b | (fma -4 (* c a) (* b b)) |
| 0.1b | (/ 1 (* 2 (/ a (- (sqrt (fma -4 (* c a) (* b b))) b)))) |
4 calls. Slowest were:
| 10.0ms | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 2.0ms | (/ 1 (* 2 (/ a (- (sqrt (fma -4 (* c a) (* b b))) b)))) |
| 2.0ms | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 99.0ms | (/ 1 (* 2 (/ a (- (sqrt (fma -4 (* c a) (* b b))) b)))) |
| 60.0ms | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 52.0ms | (fma -4 (* c a) (* b b)) |
| 50.0ms | (sqrt (fma -4 (* c a) (* b b))) |
24 calls. Slowest were:
| 48.0ms | (- (pow b 2) (* 4 (* a c))) |
| 47.0ms | (- (pow b 2) (* 4 (* a c))) |
| 23.0ms | (- (pow b 2) (* 4 (* a c))) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 6.1b
83.3% (4.8b remaining)
Error of 10.3b against oracle of 5.5b and baseline of 34.2b