


Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.21731702933355e+148Initial program 58.9
Taylor expanded around inf 58.9
Simplified58.8
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 54.5
Simplified54.5
Taylor expanded around inf 6.4
Simplified6.4
Final simplification10.3
herbie shell --seed 2019007 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))
Time bar (total: 17.1s)Debug log
1 calls. Slowest were:
| 101.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:
| 23.0ms | (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) |
| 6.0ms | (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) |
| 3.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
4 calls. Slowest were:
| 74.0ms | (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) |
| 67.0ms | (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) |
| 65.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 43.0ms | (- (* b b) (* (* 4 a) c)) |
40 calls. Slowest were:
| 385.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 327.0ms | (- (* (- b) (- b)) (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c))))) |
| 211.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
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:
| 19.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:
| 68.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 66.0ms | (/ (+ (- b) (sqrt (fma (* a -4) c (* b b)))) (* 2 a)) |
| 56.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 31.0ms | (fma (* a -4) c (* b b)) |
35 calls. Slowest were:
| 291.0ms | (- (* (- b) (- b)) (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b))))) |
| 165.0ms | (+ (pow (- b) 3) (pow (sqrt (fma (* a -4) c (* b b))) 3)) |
| 161.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:
| 15.0ms | (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 4.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 4.0ms | (/ 1 (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b)))))) |
4 calls. Slowest were:
| 127.0ms | (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 104.0ms | (/ 1 (/ (* 2 a) (+ (- b) (sqrt (fma (* a -4) c (* b b)))))) |
| 50.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 44.0ms | (sqrt (fma (* a -4) c (* b b))) |
48 calls. Slowest were:
| 506.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)))))) |
| 505.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)))))) |
| 129.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:
| 5.0ms | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 1.0ms | (/ 1 (* 2 (/ a (- (sqrt (fma -4 (* c a) (* b b))) b)))) |
| 1.0ms | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 83.0ms | (/ 1 (* 2 (/ a (- (sqrt (fma -4 (* c a) (* b b))) b)))) |
| 70.0ms | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 60.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 29.0ms | (fma -4 (* c a) (* b b)) |
24 calls. Slowest were:
| 42.0ms | (- (pow b 2) (* 4 (* a c))) |
| 41.0ms | (- (pow b 2) (* 4 (* a c))) |
| 24.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