



Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.5 |
|---|---|
| Target | 20.5 |
| Herbie | 9.4 |
if b < -2.835340391058544e+148Initial program 58.7
Simplified58.7
Taylor expanded around -inf 2.1
if -2.835340391058544e+148 < b < 3.587545867948427e-80Initial program 12.5
Simplified12.5
if 3.587545867948427e-80 < b < 8.686813508697628e-23 or 6.168799619006917e+62 < b Initial program 54.1
Simplified54.1
Taylor expanded around inf 6.7
Simplified6.7
if 8.686813508697628e-23 < b < 6.168799619006917e+62Initial program 46.2
Simplified46.2
rmApplied clear-num46.2
rmApplied *-un-lft-identity46.2
Applied times-frac46.2
Applied associate-/r*46.2
rmApplied flip--46.2
Applied associate-/r/46.2
Applied div-inv46.2
Applied times-frac46.2
Simplified12.1
Simplified12.1
Final simplification9.4
herbie shell --seed 2019004
(FPCore (a b c)
:name "quadp (p42, positive)"
:herbie-target
(if (< b 0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
Time bar (total: 25.7s)Debug log
1 calls. Slowest were:
| 312.0ms | (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 32.6b
Found 4 expressions with local error:
| 22.0b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 0.8b | (- (* b b) (* (* 4 a) c)) |
| 0.3b | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 0.0b | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
4 calls. Slowest were:
| 21.0ms | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 15.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 2.0ms | (- (* b b) (* (* 4 a) c)) |
4 calls. Slowest were:
| 57.0ms | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 43.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 41.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 25.0ms | (- (* b b) (* (* 4 a) c)) |
32 calls. Slowest were:
| 379.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 265.0ms | (- (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (* b b)) |
| 185.0ms | (- (pow (sqrt (- (* b b) (* (* 4 a) c))) 3) (pow b 3)) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 4.8b
Found 4 expressions with local error:
| 22.0b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 0.8b | (- (* b b) (* (* 4 a) c)) |
| 0.4b | (/ (* 2 a) (- (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 0.2b | (/ 1 (/ (* 2 a) (- (sqrt (- (* b b) (* (* 4 a) c))) b))) |
4 calls. Slowest were:
| 12.0ms | (/ (* 2 a) (- (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 6.0ms | (/ 1 (/ (* 2 a) (- (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 2.0ms | (- (* b b) (* (* 4 a) c)) |
4 calls. Slowest were:
| 130.0ms | (/ (* 2 a) (- (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 89.0ms | (/ 1 (/ (* 2 a) (- (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 54.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 28.0ms | (- (* b b) (* (* 4 a) c)) |
43 calls. Slowest were:
| 415.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 177.0ms | (+ (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (+ (* b b) (* (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 136.0ms | (- b (* 2 (/ (* a c) b))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 4.8b
Found 4 expressions with local error:
| 22.0b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 0.8b | (- (* b b) (* (* 4 a) c)) |
| 0.2b | (/ (/ 1 (/ 2 1)) (/ a (- (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 0.1b | (/ a (- (sqrt (- (* b b) (* (* 4 a) c))) b)) |
4 calls. Slowest were:
| 12.0ms | (/ (/ 1 (/ 2 1)) (/ a (- (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 11.0ms | (/ a (- (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 4.0ms | (- (* b b) (* (* 4 a) c)) |
4 calls. Slowest were:
| 166.0ms | (/ a (- (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 128.0ms | (/ (/ 1 (/ 2 1)) (/ a (- (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 71.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 43.0ms | (- (* b b) (* (* 4 a) c)) |
97 calls. Slowest were:
| 511.0ms | (/ (/ 1 2) (/ a (- (pow (sqrt (- (* b b) (* (* 4 a) c))) 3) (pow b 3)))) |
| 407.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 344.0ms | (/ 1 (/ a (- (pow (sqrt (- (* b b) (* (* 4 a) c))) 3) (pow b 3)))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 4.8b
Found 4 expressions with local error:
| 22.0b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 22.0b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 10.5b | (- (* (sqrt (sqrt (- (* b b) (* (* 4 a) c)))) (sqrt (sqrt (- (* b b) (* (* 4 a) c))))) b) |
| 0.8b | (- (* b b) (* (* 4 a) c)) |
4 calls. Slowest were:
| 17.0ms | (- (* (sqrt (sqrt (- (* b b) (* (* 4 a) c)))) (sqrt (sqrt (- (* b b) (* (* 4 a) c))))) b) |
| 7.0ms | (- (* b b) (* (* 4 a) c)) |
| 2.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
4 calls. Slowest were:
| 68.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 66.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 53.0ms | (- (* (sqrt (sqrt (- (* b b) (* (* 4 a) c)))) (sqrt (sqrt (- (* b b) (* (* 4 a) c))))) b) |
| 35.0ms | (- (* b b) (* (* 4 a) c)) |
25 calls. Slowest were:
| 364.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 343.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 200.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
7 alts after pruning (5 fresh and 2 done)
Merged error: 4.8b
85.9% (4.0b remaining)
Error of 9.4b against oracle of 5.5b and baseline of 33.5b