



Bits error versus re




Bits error versus im
Results
| Original | 37.5 |
|---|---|
| Target | 32.8 |
| Herbie | 17.5 |
if re < -1.6958975798724648e+132Initial program 61.2
rmApplied sqrt-prod61.2
rmApplied flip-+61.2
Applied sqrt-div61.2
Simplified46.1
Taylor expanded around -inf 9.5
if -1.6958975798724648e+132 < re < -1.0124855282781271e-294Initial program 38.8
rmApplied sqrt-prod39.0
rmApplied flip-+38.9
Applied sqrt-div38.9
Simplified20.6
rmApplied add-sqr-sqrt20.7
Applied associate-/l*20.6
rmApplied add-cube-cbrt20.6
Applied associate-*l*20.6
if -1.0124855282781271e-294 < re < 8.234804025380906e+145Initial program 20.4
rmApplied sqrt-prod20.7
if 8.234804025380906e+145 < re Initial program 59.4
Taylor expanded around inf 8.1
Final simplification17.5
herbie shell --seed 2019005
(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: 26.3s)Debug log
1 calls. Slowest were:
| 18.0ms | (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 37.0b
Found 4 expressions with local error:
| 29.0b | (sqrt (+ (* re re) (* im im))) |
| 0.3b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.2b | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 0.0b | (+ (* re re) (* im im)) |
4 calls. Slowest were:
| 8.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (+ (* re re) (* im im)) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 99.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 40.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 15.0ms | (+ (* re re) (* im im)) |
22 calls. Slowest were:
| 267.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 174.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 150.0ms | (sqrt (* 2.0 (+ (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 16.2b
Found 4 expressions with local error:
| 29.0b | (sqrt (+ (* re re) (* im im))) |
| 0.3b | (* (sqrt 2.0) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 0.3b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (sqrt (+ (sqrt (+ (* re re) (* im im))) re)) |
4 calls. Slowest were:
| 18.0ms | (* (sqrt 2.0) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 8.0ms | (sqrt (+ (sqrt (+ (* re re) (* im im))) re)) |
| 7.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
4 calls. Slowest were:
| 100.0ms | (* (sqrt 2.0) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 60.0ms | (sqrt (+ (sqrt (+ (* re re) (* im im))) re)) |
| 33.0ms | (sqrt (+ (* re re) (* im im))) |
| 24.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
39 calls. Slowest were:
| 436.0ms | (sqrt (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re))) |
| 151.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 141.0ms | (* (* (* (sqrt 2.0) (sqrt 2.0)) (sqrt 2.0)) (* (* (sqrt (+ (sqrt (+ (* re re) (* im im))) re)) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) (sqrt (+ (sqrt (+ (* re re) (* im im))) re)))) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 13.7b
Found 4 expressions with local error:
| 29.0b | (sqrt (+ (* re re) (* im im))) |
| 0.8b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.3b | (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 0.3b | (* (sqrt 2.0) (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) |
4 calls. Slowest were:
| 15.0ms | (* (sqrt 2.0) (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) |
| 12.0ms | (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 10.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
4 calls. Slowest were:
| 112.0ms | (* (sqrt 2.0) (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) |
| 85.0ms | (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 40.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 29.0ms | (sqrt (+ (* re re) (* im im))) |
98 calls. Slowest were:
| 634.0ms | (* (* (* (sqrt 2.0) (sqrt 2.0)) (sqrt 2.0)) (/ (* (* (fabs im) (fabs im)) (fabs im)) (* (* (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (sqrt (- (sqrt (+ (* re re) (* im im))) re))))) |
| 206.0ms | (/ (* (* (fabs im) (fabs im)) (fabs im)) (* (* (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) |
| 155.0ms | (* (* (* (sqrt 2.0) (sqrt 2.0)) (sqrt 2.0)) (* (* (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) (/ (fabs im) (sqrt (- (sqrt (+ (* re re) (* im im))) re))))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 8.1b
Found 4 expressions with local error:
| 29.0b | (sqrt (+ (* re re) (* im im))) |
| 0.8b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.3b | (* (sqrt 2.0) (/ (sqrt (fabs im)) (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im))))) |
| 0.1b | (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im))) |
4 calls. Slowest were:
| 37.0ms | (* (sqrt 2.0) (/ (sqrt (fabs im)) (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im))))) |
| 33.0ms | (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im))) |
| 20.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
4 calls. Slowest were:
| 95.0ms | (* (sqrt 2.0) (/ (sqrt (fabs im)) (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im))))) |
| 79.0ms | (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im))) |
| 25.0ms | (sqrt (+ (* re re) (* im im))) |
| 24.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
362 calls. Slowest were:
| 639.0ms | (* (* (* (sqrt 2.0) (sqrt 2.0)) (sqrt 2.0)) (* (* (/ (sqrt (fabs im)) (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im)))) (/ (sqrt (fabs im)) (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im))))) (/ (sqrt (fabs im)) (/ (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (fabs im)))))) |
| 428.0ms | (sqrt (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re))) |
| 313.0ms | (/ (* (* (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (* (* (sqrt (fabs im)) (sqrt (fabs im))) (sqrt (fabs im)))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 8.1b
67% (9.7b remaining)
Error of 17.5b against oracle of 7.9b and baseline of 37.1b