


Bits error versus a



Bits error versus b



Bits error versus c
if b < 5.110543529157628e+99Initial program 14.5
Simplified14.5
rmApplied add-sqr-sqrt14.5
Applied sqrt-prod14.6
if 5.110543529157628e+99 < b Initial program 44.6
Simplified44.5
Taylor expanded around 0 3.9
Final simplification12.9
herbie shell --seed 2019004 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))
Time bar (total: 17.0s)Debug log
1 calls. Slowest were:
| 102.0ms | (if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 18.2b
Found 4 expressions with local error:
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 0.9b | (- (- b) (sqrt (fma c (* a -4) (* b b)))) |
| 0.2b | (fma c (* a -4) (* b b)) |
4 calls. Slowest were:
| 5.0ms | (- (- b) (sqrt (fma c (* a -4) (* b b)))) |
| 1.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 1.0ms | (sqrt (fma c (* a -4) (* b b))) |
4 calls. Slowest were:
| 58.0ms | (- (- b) (sqrt (fma c (* a -4) (* b b)))) |
| 56.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 50.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 50.0ms | (fma c (* a -4) (* b b)) |
76 calls. Slowest were:
| 78.0ms | (fma 1 (- b) (- (* (sqrt (fma c (* a -4) (* b b))) 1))) |
| 78.0ms | (- (* 2 (/ (* a c) b)) (* 2 b)) |
| 71.0ms | (fma 1 (- b) (- (* (sqrt (cbrt (fma c (* a -4) (* b b)))) (sqrt (* (cbrt (fma c (* a -4) (* b b))) (cbrt (fma c (* a -4) (* b b)))))))) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 12.8b
Found 4 expressions with local error:
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 13.6b | (- (- b) (* (sqrt (sqrt (fma c (* a -4) (* b b)))) (sqrt (sqrt (fma c (* a -4) (* b b)))))) |
4 calls. Slowest were:
| 8.0ms | (- (- b) (* (sqrt (sqrt (fma c (* a -4) (* b b)))) (sqrt (sqrt (fma c (* a -4) (* b b)))))) |
| 2.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 2.0ms | (sqrt (fma c (* a -4) (* b b))) |
4 calls. Slowest were:
| 62.0ms | (- (- b) (* (sqrt (sqrt (fma c (* a -4) (* b b)))) (sqrt (sqrt (fma c (* a -4) (* b b)))))) |
| 61.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 60.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 49.0ms | (sqrt (fma c (* a -4) (* b b))) |
37 calls. Slowest were:
| 91.0ms | (- (* 2 (/ (* a c) b)) (* 2 b)) |
| 68.0ms | (fma (sqrt (- b)) (sqrt (- b)) (- (* (sqrt (sqrt (fma c (* a -4) (* b b)))) (sqrt (sqrt (fma c (* a -4) (* b b))))))) |
| 59.0ms | (* -2 (/ (* a c) b)) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 12.8b
Found 4 expressions with local error:
| 24.1b | (fma (fabs (cbrt (fma (* a -4) c (* b b)))) (sqrt (cbrt (fma (* a -4) c (* b b)))) b) |
| 22.7b | (cbrt (fma (* a -4) c (* b b))) |
| 22.7b | (cbrt (fma (* a -4) c (* b b))) |
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
4 calls. Slowest were:
| 1.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 1.0ms | (cbrt (fma (* a -4) c (* b b))) |
| 1.0ms | (cbrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 321.0ms | (fma (fabs (cbrt (fma (* a -4) c (* b b)))) (sqrt (cbrt (fma (* a -4) c (* b b)))) b) |
| 248.0ms | (cbrt (fma (* a -4) c (* b b))) |
| 181.0ms | (cbrt (fma (* a -4) c (* b b))) |
| 45.0ms | (sqrt (fma c (* a -4) (* b b))) |
22 calls. Slowest were:
| 204.0ms | (- (pow b 2/3) (* 4/3 (* (* a c) (pow (/ 1 (pow b 4)) 1/3)))) |
| 198.0ms | (- (+ b (* (fabs (pow (fma (* -4 a) c (pow b 2)) 1/3)) (pow b 1/3))) (* 2/3 (* (* a (* (fabs (pow (fma (* -4 a) c (pow b 2)) 1/3)) c)) (pow (/ 1 (pow b 5)) 1/3)))) |
| 198.0ms | (- (pow b 2/3) (* 4/3 (* (* a c) (pow (/ 1 (pow b 4)) 1/3)))) |
6 alts after pruning (4 fresh and 2 done)
Merged error: 12.8b
Found 4 expressions with local error:
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
| 22.0b | (sqrt (fma c (* a -4) (* b b))) |
4 calls. Slowest were:
| 1.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 1.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 1.0ms | (sqrt (fma c (* a -4) (* b b))) |
4 calls. Slowest were:
| 68.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 62.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 52.0ms | (sqrt (fma c (* a -4) (* b b))) |
| 45.0ms | (sqrt (fma c (* a -4) (* b b))) |
28 calls. Slowest were:
| 20.0ms | (sqrt (* (cbrt (fma c (* a -4) (* b b))) (cbrt (fma c (* a -4) (* b b))))) |
| 14.0ms | (sqrt (sqrt (fma c (* a -4) (* b b)))) |
| 12.0ms | (sqrt (* (cbrt (fma c (* a -4) (* b b))) (cbrt (fma c (* a -4) (* b b))))) |
6 alts after pruning (3 fresh and 3 done)
Merged error: 12.8b
91.6% (0.6b remaining)
Error of 12.9b against oracle of 12.3b and baseline of 19.3b