


Bits error versus a



Bits error versus b



Bits error versus c
if b < 1.0425090330492645e+112Initial program 16.5
Initial simplification16.5
rmApplied add-sqr-sqrt16.5
Applied sqrt-prod16.6
if 1.0425090330492645e+112 < b Initial program 31.4
Initial simplification31.4
Taylor expanded around 0 1.8
Final simplification13.2
herbie shell --seed 2018360 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))
Time bar (total: 14.4s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 18.7b
Found 4 expressions with local error:
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 0.9b | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 0.8b | (- (- b) (sqrt (fma -4 (* c a) (* b b)))) |
4 calls. Slowest were:
| 9.0ms | (- (- b) (sqrt (fma -4 (* c a) (* b b)))) |
| 6.0ms | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 3.0ms | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 72.0ms | (- (- b) (sqrt (fma -4 (* c a) (* b b)))) |
| 62.0ms | (- (sqrt (fma -4 (* c a) (* b b))) b) |
| 60.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 56.0ms | (sqrt (fma -4 (* c a) (* b b))) |
81 calls. Slowest were:
| 96.0ms | (- (* 2 (/ (* a c) b)) (* 2 b)) |
| 62.0ms | (* -2 (/ (* a c) b)) |
| 59.0ms | (fma 1 (- b) (- (* (sqrt (fma -4 (* c a) (* b b))) (sqrt 1)))) |
10 alts after pruning (10 fresh and 0 done)
Merged error: 12.1b
Found 4 expressions with local error:
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 8.6b | (- (- b) (* (sqrt (sqrt (fma -4 (* c a) (* b b)))) (sqrt (sqrt (fma -4 (* c a) (* b b)))))) |
4 calls. Slowest were:
| 4.0ms | (- (- b) (* (sqrt (sqrt (fma -4 (* c a) (* b b)))) (sqrt (sqrt (fma -4 (* c a) (* b b)))))) |
| 1.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 1.0ms | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 74.0ms | (- (- b) (* (sqrt (sqrt (fma -4 (* c a) (* b b)))) (sqrt (sqrt (fma -4 (* c a) (* b b)))))) |
| 69.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 60.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 46.0ms | (sqrt (fma -4 (* c a) (* b b))) |
37 calls. Slowest were:
| 101.0ms | (- (* 2 (/ (* a c) b)) (* 2 b)) |
| 60.0ms | (/ (exp (- b)) (exp (* (sqrt (sqrt (fma -4 (* c a) (* b b)))) (sqrt (sqrt (fma -4 (* c a) (* b b))))))) |
| 53.0ms | (fma (sqrt (- b)) (sqrt (- b)) (- (* (sqrt (sqrt (fma -4 (* c a) (* b b)))) (sqrt (sqrt (fma -4 (* c a) (* b b))))))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 12.1b
Found 4 expressions with local error:
| 23.6b | (fma (sqrt (sqrt (fma -4 (* c a) (* b b)))) (sqrt (sqrt (fma -4 (* c a) (* b b)))) (- b)) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 2.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 2.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 2.0ms | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 315.0ms | (fma (sqrt (sqrt (fma -4 (* c a) (* b b)))) (sqrt (sqrt (fma -4 (* c a) (* b b)))) (- b)) |
| 67.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 67.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 54.0ms | (sqrt (fma -4 (* c a) (* b b))) |
24 calls. Slowest were:
| 206.0ms | (- (pow (exp (* 1/4 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) 2) b) |
| 155.0ms | (- (pow (exp (* 1/4 (- (log -4) (+ (log (/ -1 c)) (log (/ -1 a)))))) 2) b) |
| 21.0ms | (sqrt (* (cbrt (fma -4 (* c a) (* b b))) (cbrt (fma -4 (* c a) (* b b))))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 12.1b
Found 4 expressions with local error:
| 23.6b | (fma (sqrt (* (* (cbrt (sqrt (fma -4 (* c a) (* b b)))) (cbrt (sqrt (fma -4 (* c a) (* b b))))) (cbrt (sqrt (fma -4 (* c a) (* b b)))))) (sqrt (sqrt (fma -4 (* c a) (* b b)))) (- b)) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
| 22.5b | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 2.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 2.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 2.0ms | (sqrt (fma -4 (* c a) (* b b))) |
4 calls. Slowest were:
| 328.0ms | (fma (sqrt (* (* (cbrt (sqrt (fma -4 (* c a) (* b b)))) (cbrt (sqrt (fma -4 (* c a) (* b b))))) (cbrt (sqrt (fma -4 (* c a) (* b b)))))) (sqrt (sqrt (fma -4 (* c a) (* b b)))) (- b)) |
| 67.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 60.0ms | (sqrt (fma -4 (* c a) (* b b))) |
| 53.0ms | (sqrt (fma -4 (* c a) (* b b))) |
24 calls. Slowest were:
| 273.0ms | (- (pow (exp (* 1/4 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) 2) b) |
| 144.0ms | (- (pow (exp (* 1/4 (- (log -4) (+ (log (/ -1 c)) (log (/ -1 a)))))) 2) b) |
| 21.0ms | (sqrt (* (cbrt (fma -4 (* c a) (* b b))) (cbrt (fma -4 (* c a) (* b b))))) |
11 alts after pruning (8 fresh and 3 done)
Merged error: 12.1b
92.8% (0.5b remaining)
Error of 13.2b against oracle of 12.7b and baseline of 19.9b