


Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3410782657088844e+154Initial program 61.0
Taylor expanded around inf 61.0
Simplified60.9
Taylor expanded around -inf 11.6
Simplified11.6
if -1.3410782657088844e+154 < b < 2.0689576101980954e+101Initial program 8.7
Taylor expanded around inf 8.7
Simplified8.7
rmApplied add-sqr-sqrt8.8
if 2.0689576101980954e+101 < b Initial program 29.3
Taylor expanded around inf 29.3
Simplified29.3
Taylor expanded around inf 7.1
Simplified2.8
Final simplification7.7
herbie shell --seed 2019008 +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: 19.6s)Debug log
1 calls. Slowest were:
| 94.0ms | (if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 19.7b
Found 4 expressions with local error:
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 1.0b | (- (* b b) (* (* 4 a) c)) |
| 1.0b | (- (* b b) (* (* 4 a) c)) |
4 calls. Slowest were:
| 9.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 6.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 5.0ms | (- (* b b) (* (* 4 a) c)) |
4 calls. Slowest were:
| 72.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 64.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 39.0ms | (- (* b b) (* (* 4 a) c)) |
| 33.0ms | (- (* b b) (* (* 4 a) c)) |
30 calls. Slowest were:
| 440.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 398.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 172.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 7.9b
Found 4 expressions with local error:
| 23.3b | (sqrt (fma (* a -4) c (* b b))) |
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 1.0b | (- (* b b) (* (* 4 a) c)) |
| 0.9b | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
4 calls. Slowest were:
| 8.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 6.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 5.0ms | (- (* b b) (* (* 4 a) c)) |
4 calls. Slowest were:
| 73.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 69.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 42.0ms | (+ (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 41.0ms | (- (* b b) (* (* 4 a) c)) |
29 calls. Slowest were:
| 341.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 165.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
| 137.0ms | (- b (* 2 (/ (* a c) b))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 7.9b
Found 4 expressions with local error:
| 23.3b | (sqrt (fma (* a -4) c (* b b))) |
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 7.8b | (- (- b) (* (sqrt (sqrt (- (* b b) (* (* 4 a) c)))) (sqrt (sqrt (- (* b b) (* (* 4 a) c)))))) |
4 calls. Slowest were:
| 4.0ms | (- (- b) (* (sqrt (sqrt (- (* b b) (* (* 4 a) c)))) (sqrt (sqrt (- (* b b) (* (* 4 a) c)))))) |
| 3.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 3.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
4 calls. Slowest were:
| 65.0ms | (- (- b) (* (sqrt (sqrt (- (* b b) (* (* 4 a) c)))) (sqrt (sqrt (- (* b b) (* (* 4 a) c)))))) |
| 51.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 44.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 42.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
41 calls. Slowest were:
| 439.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 418.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 220.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
14 alts after pruning (13 fresh and 1 done)
Merged error: 7.9b
Found 4 expressions with local error:
| 23.3b | (sqrt (fma (* a -4) c (* b b))) |
| 23.3b | (sqrt (fma (* a -4) c (* b b))) |
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 11.4b | (+ (- b) (* (sqrt (sqrt (fma (* a -4) c (* b b)))) (sqrt (sqrt (fma (* a -4) c (* b b)))))) |
4 calls. Slowest were:
| 9.0ms | (+ (- b) (* (sqrt (sqrt (fma (* a -4) c (* b b)))) (sqrt (sqrt (fma (* a -4) c (* b b)))))) |
| 6.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 2.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 51.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 48.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 44.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 44.0ms | (+ (- b) (* (sqrt (sqrt (fma (* a -4) c (* b b)))) (sqrt (sqrt (fma (* a -4) c (* b b)))))) |
29 calls. Slowest were:
| 754.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 162.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
| 139.0ms | (- b (* 2 (/ (* a c) b))) |
14 alts after pruning (12 fresh and 2 done)
Merged error: 7.9b
91.7% (1.0b remaining)
Error of 7.7b against oracle of 6.7b and baseline of 19.2b