



Bits error versus a




Bits error versus b




Bits error versus c
| Original | 33.6 |
|---|---|
| Target | 20.3 |
| Herbie | 10.6 |
if b < -4.854031372780893e+121 or -9.565134490438525e-14 < b < -1.4327714371069e-133Initial program 51.7
Taylor expanded around inf 51.7
Simplified51.7
Taylor expanded around -inf 11.5
Simplified11.5
if -4.854031372780893e+121 < b < -9.565134490438525e-14Initial program 46.3
rmApplied flip--46.3
Applied associate-/l/48.0
Simplified14.1
if -1.4327714371069e-133 < b < 1.6367105644834092e+113Initial program 11.5
Taylor expanded around inf 11.5
Simplified11.5
rmApplied *-un-lft-identity11.5
Applied *-un-lft-identity11.5
Applied distribute-lft-out--11.5
Applied associate-/l*11.6
rmApplied associate-/r/11.6
if 1.6367105644834092e+113 < b Initial program 46.8
Taylor expanded around inf 46.8
Simplified46.7
rmApplied *-un-lft-identity46.7
Applied *-un-lft-identity46.7
Applied distribute-lft-out--46.7
Applied associate-/l*46.8
rmApplied associate-/r/46.8
Taylor expanded around 0 2.8
Simplified2.8
Final simplification10.6
herbie shell --seed 2018360 +o rules:numerics
(FPCore (a b c)
:name "quadm (p42, negative)"
:herbie-target
(if (< b 0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
Time bar (total: 46.4s)Debug log
2 alts after pruning (2 fresh and 0 done)
Merged error: 32.8b
Found 4 expressions with local error:
| 22.7b | (sqrt (- (* b b) (* 4 (* a c)))) |
| 0.8b | (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) |
| 0.4b | (- (* b b) (* 4 (* a c))) |
| 0.1b | (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) |
4 calls. Slowest were:
| 17.0ms | (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) |
| 7.0ms | (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) |
| 3.0ms | (sqrt (- (* b b) (* 4 (* a c)))) |
4 calls. Slowest were:
| 65.0ms | (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) |
| 63.0ms | (sqrt (- (* b b) (* 4 (* a c)))) |
| 63.0ms | (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) |
| 26.0ms | (- (* b b) (* 4 (* a c))) |
98 calls. Slowest were:
| 362.0ms | (- (* (- b) (- b)) (* (sqrt (- (* b b) (* 4 (* a c)))) (sqrt (- (* b b) (* 4 (* a c)))))) |
| 349.0ms | (- (pow (- b) 3) (pow (sqrt (- (* b b) (* 4 (* a c)))) 3)) |
| 347.0ms | (sqrt (- (pow (* b b) 3) (pow (* 4 (* a c)) 3))) |
8 alts after pruning (8 fresh and 0 done)
Merged error: 4.7b
Found 4 expressions with local error:
| 22.7b | (sqrt (fma (* a -4) c (* b b))) |
| 0.8b | (- (- 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:
| 22.0ms | (/ (- (- b) (sqrt (fma (* a -4) c (* b b)))) (* 2 a)) |
| 10.0ms | (- (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 3.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 78.0ms | (/ (- (- b) (sqrt (fma (* a -4) c (* b b)))) (* 2 a)) |
| 60.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 51.0ms | (fma (* a -4) c (* b b)) |
| 44.0ms | (- (- b) (sqrt (fma (* a -4) c (* b b)))) |
93 calls. Slowest were:
| 713.0ms | (- (* (- b) (- b)) (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b))))) |
| 199.0ms | (- (pow (- b) 3) (pow (sqrt (fma (* a -4) c (* b b))) 3)) |
| 97.0ms | (- (* 2 (/ (* a c) b)) (* 2 b)) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 4.7b
Found 4 expressions with local error:
| 22.7b | (sqrt (fma (* a -4) c (* b b))) |
| 0.8b | (- (- 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:
| 9.0ms | (/ (* 2 a) (- (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 8.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:
| 170.0ms | (/ (* 2 a) (- (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 110.0ms | (/ 1 (/ (* 2 a) (- (- b) (sqrt (fma (* a -4) c (* b b)))))) |
| 63.0ms | (- (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 49.0ms | (sqrt (fma (* a -4) c (* b b))) |
108 calls. Slowest were:
| 566.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)))))) |
| 490.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)))))) |
| 72.0ms | (cbrt (/ (* 2 a) (- (- b) (sqrt (fma (* a -4) c (* b b)))))) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 4.7b
Found 4 expressions with local error:
| 22.7b | (sqrt (fma (* a -4) c (* b b))) |
| 0.8b | (- (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 0.2b | (* (/ 1 (* 2 a)) (- (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 0.0b | (fma (* a -4) c (* b b)) |
4 calls. Slowest were:
| 21.0ms | (* (/ 1 (* 2 a)) (- (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 11.0ms | (- (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 2.0ms | (sqrt (fma (* a -4) c (* b b))) |
4 calls. Slowest were:
| 104.0ms | (* (/ 1 (* 2 a)) (- (- b) (sqrt (fma (* a -4) c (* b b))))) |
| 71.0ms | (- (- b) (sqrt (fma (* a -4) c (* b b)))) |
| 62.0ms | (sqrt (fma (* a -4) c (* b b))) |
| 49.0ms | (fma (* a -4) c (* b b)) |
143 calls. Slowest were:
| 724.0ms | (* (/ 1 (* 2 a)) (fma (- (sqrt (cbrt (fma (* a -4) c (* b b))))) (sqrt (* (cbrt (fma (* a -4) c (* b b))) (cbrt (fma (* a -4) c (* b b))))) (* (sqrt (cbrt (fma (* a -4) c (* b b)))) (sqrt (* (cbrt (fma (* a -4) c (* b b))) (cbrt (fma (* a -4) c (* b b)))))))) |
| 704.0ms | (* 1 (- (* (- b) (- b)) (* (sqrt (fma (* a -4) c (* b b))) (sqrt (fma (* a -4) c (* b b)))))) |
| 553.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)))))) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 4.7b
81.8% (5.1b remaining)
Error of 10.6b against oracle of 5.5b and baseline of 33.7b