



Bits error versus re




Bits error versus im
Results
| Original | 37.3 |
|---|---|
| Target | 32.2 |
| Herbie | 23.8 |
if re < -1.917798906540791e+55Initial program 57.9
Initial simplification57.9
rmApplied flip-+57.9
Applied associate-*l/57.9
Applied sqrt-div57.9
Simplified39.1
Taylor expanded around -inf 22.3
if -1.917798906540791e+55 < re < -2.707810411243158e-16Initial program 46.8
Initial simplification46.8
rmApplied flip-+46.8
Applied associate-*l/46.8
Applied sqrt-div46.9
Simplified27.8
rmApplied sqrt-undiv28.6
rmApplied *-un-lft-identity28.6
Applied times-frac28.8
Applied sqrt-prod36.4
Simplified36.4
if -2.707810411243158e-16 < re < -1.2642914913772078e-75Initial program 42.0
Initial simplification42.0
rmApplied flip-+42.0
Applied associate-*l/42.0
Applied sqrt-div42.1
Simplified31.1
Taylor expanded around -inf 39.8
Simplified39.8
if -1.2642914913772078e-75 < re < -6.758694741001748e-220Initial program 31.5
Initial simplification31.5
Taylor expanded around 0 38.8
if -6.758694741001748e-220 < re < 1.4236521502141993e+97Initial program 21.7
Initial simplification21.7
rmApplied add-sqr-sqrt21.7
Applied sqrt-prod21.8
if 1.4236521502141993e+97 < re Initial program 49.5
Initial simplification49.5
rmApplied flip-+60.6
Applied associate-*l/60.6
Applied sqrt-div60.6
Simplified61.2
rmApplied sqrt-undiv61.2
Taylor expanded around 0 10.3
Final simplification23.8
herbie shell --seed 2018365
(FPCore (re im)
:name "math.sqrt on complex, real part"
:herbie-target
(if (< re 0) (* 0.5 (* (sqrt 2) (sqrt (/ (* im im) (- (sqrt (+ (* re re) (* im im))) re))))) (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))
(* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))
Time bar (total: 12.2s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 41.2b
Found 4 expressions with local error:
| 30.9b | (sqrt (+ (* re re) (* im im))) |
| 0.5b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.2b | (sqrt (* (+ (sqrt (+ (* re re) (* im im))) re) 2.0)) |
| 0.0b | (+ (* re re) (* im im)) |
4 calls. Slowest were:
| 15.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 4.0ms | (+ (* re re) (* im im)) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 77.0ms | (sqrt (* (+ (sqrt (+ (* re re) (* im im))) re) 2.0)) |
| 39.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 32.0ms | (sqrt (+ (* re re) (* im im))) |
| 23.0ms | (+ (* re re) (* im im)) |
22 calls. Slowest were:
| 326.0ms | (sqrt (* (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)) 2.0)) |
| 152.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 149.0ms | (sqrt (* (+ (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)) 2.0)) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 20.6b
Found 4 expressions with local error:
| 30.9b | (sqrt (+ (* re re) (* im im))) |
| 30.9b | (sqrt (+ (* re re) (* im im))) |
| 7.8b | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 0.5b | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
4 calls. Slowest were:
| 9.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 7.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 24.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 22.0ms | (sqrt (+ (* re re) (* im im))) |
| 19.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
64 calls. Slowest were:
| 219.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im))))))) |
| 213.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (- (* re re) (* im im))))) |
| 206.0ms | (* (sqrt (sqrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (sqrt (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))))) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 20.6b
Found 4 expressions with local error:
| 32.9b | (sqrt (* (* im 2.0) im)) |
| 30.9b | (sqrt (+ (* re re) (* im im))) |
| 0.5b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.3b | (/ (sqrt (* (* im 2.0) im)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
4 calls. Slowest were:
| 12.0ms | (/ (sqrt (* (* im 2.0) im)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 10.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 115.0ms | (/ (sqrt (* (* im 2.0) im)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 40.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 38.0ms | (sqrt (* (* im 2.0) im)) |
| 30.0ms | (sqrt (+ (* re re) (* im im))) |
81 calls. Slowest were:
| 187.0ms | (/ (* (* (sqrt (* (* im 2.0) im)) (sqrt (* (* im 2.0) im))) (sqrt (* (* im 2.0) im))) (* (* (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) |
| 148.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 57.0ms | (/ (* (* im 2.0) im) (- (sqrt (+ (* re re) (* im im))) re)) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 12.3b
Found 4 expressions with local error:
| 30.9b | (sqrt (+ (* re re) (* im im))) |
| 23.3b | (/ (* (* im 2.0) im) (- (sqrt (+ (* re re) (* im im))) re)) |
| 7.3b | (sqrt (/ (* (* im 2.0) im) (- (sqrt (+ (* re re) (* im im))) re))) |
| 0.5b | (- (sqrt (+ (* re re) (* im im))) re) |
4 calls. Slowest were:
| 20.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 20.0ms | (sqrt (/ (* (* im 2.0) im) (- (sqrt (+ (* re re) (* im im))) re))) |
| 14.0ms | (/ (* (* im 2.0) im) (- (sqrt (+ (* re re) (* im im))) re)) |
4 calls. Slowest were:
| 125.0ms | (sqrt (/ (* (* im 2.0) im) (- (sqrt (+ (* re re) (* im im))) re))) |
| 69.0ms | (/ (* (* im 2.0) im) (- (sqrt (+ (* re re) (* im im))) re)) |
| 41.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 32.0ms | (sqrt (+ (* re re) (* im im))) |
43 calls. Slowest were:
| 256.0ms | (sqrt (/ (* (* im 2.0) im) (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 137.0ms | (sqrt (/ (* (* im 2.0) im) (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 119.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
13 alts after pruning (12 fresh and 1 done)
Merged error: 12.2b
49.5% (14.1b remaining)
Error of 23.8b against oracle of 9.6b and baseline of 37.6b