



Bits error versus re




Bits error versus im
Results
| Original | 37.8 |
|---|---|
| Target | 32.8 |
| Herbie | 22.9 |
if re < -9.958620725379148e+82Initial program 59.1
rmApplied flip-+59.1
Applied associate-*r/59.1
Applied sqrt-div59.1
Simplified41.2
Taylor expanded around -inf 21.5
if -9.958620725379148e+82 < re < -6.696946340594285e-33Initial program 46.0
rmApplied flip-+46.1
Applied associate-*r/46.1
Applied sqrt-div46.1
Simplified28.2
rmApplied add-cube-cbrt28.5
Applied sqrt-prod28.5
Applied add-sqr-sqrt28.6
Applied times-frac28.5
Simplified28.5
rmApplied add-cube-cbrt28.6
if -6.696946340594285e-33 < re < -1.2374781786568106e-129Initial program 36.8
Taylor expanded around 0 41.7
if -1.2374781786568106e-129 < re < 7.44145532907071e+95Initial program 23.4
if 7.44145532907071e+95 < re Initial program 49.8
Taylor expanded around inf 11.3
Final simplification22.9
herbie shell --seed 2019016
(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: 11.5s)Debug log
| 256× | (pre true 80) |
| 173× | (body real 80) |
| 22× | (body real 5120) |
| 21× | (body real 1280) |
| 20× | (body real 2560) |
| 10× | (body real 640) |
| 6× | (body real 160) |
| 4× | (body real 320) |
| 17.0ms | (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 40.4b
Found 3 expressions with local error:
| 31.4b | (sqrt (+ (* re re) (* im im))) |
| 1.5b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 5× | add-sqr-sqrt |
| 4× | sqrt-prod |
| 4× | add-cube-cbrt |
| 4× | sqrt-div |
| 4× | *-un-lft-identity |
| 3× | add-log-exp |
| 3× | flip-+ |
| 3× | add-exp-log |
| 3× | add-cbrt-cube |
| 3× | flip3-+ |
| 3× | pow1 |
| 2× | associate-*r/ |
| 2× | pow1/2 |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 15.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 3.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 129.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 46.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 31.0ms | (sqrt (+ (* re re) (* im im))) |
| 338.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 177.0ms | (sqrt (* 2.0 (+ (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 153.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 45.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 6.0ms | (sqrt (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im))))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 20.1b
Found 4 expressions with local error:
| 32.0b | (sqrt (* im (* im 2.0))) |
| 31.4b | (sqrt (+ (* re re) (* im im))) |
| 0.5b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.3b | (/ (sqrt (* im (* im 2.0))) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 26× | sqrt-prod |
| 24× | times-frac |
| 23× | add-sqr-sqrt |
| 22× | add-cube-cbrt |
| 22× | *-un-lft-identity |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | associate-/r* |
| 4× | add-log-exp |
| 4× | associate-/l* |
| 4× | sqrt-div |
| 4× | pow1 |
| 2× | flip-- |
| 2× | associate-/r/ |
| 2× | pow1/2 |
| 2× | flip3-- |
| 1× | div-inv |
| 1× | flip-+ |
| 1× | div-exp |
| 1× | flip3-+ |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | clear-num |
| 1× | sqrt-undiv |
| 1× | rem-sqrt-square |
| 1× | cbrt-undiv |
| 24.0ms | (/ (sqrt (* im (* im 2.0))) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 14.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 1.0ms | (sqrt (* im (* im 2.0))) |
| 109.0ms | (/ (sqrt (* im (* im 2.0))) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 33.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 28.0ms | (sqrt (* im (* im 2.0))) |
| 18.0ms | (sqrt (+ (* re re) (* im im))) |
| 211.0ms | (/ (* (* (sqrt (* im (* im 2.0))) (sqrt (* im (* im 2.0)))) (sqrt (* im (* im 2.0)))) (* (* (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) |
| 142.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 58.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 46.0ms | (/ (* (cbrt (sqrt (* im (* im 2.0)))) (cbrt (sqrt (* im (* im 2.0))))) (* (cbrt (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (cbrt (sqrt (- (sqrt (+ (* re re) (* im im))) re))))) |
| 38.0ms | (/ (* im (* im 2.0)) (- (sqrt (+ (* re re) (* im im))) re)) |
13 alts after pruning (12 fresh and 1 done)
Merged error: 12.4b
Found 4 expressions with local error:
| 32.0b | (sqrt (* im (* im 2.0))) |
| 32.0b | (sqrt (* im (* im 2.0))) |
| 31.4b | (sqrt (+ (* re re) (* im im))) |
| 0.5b | (- (sqrt (+ (* re re) (* im im))) re) |
| 6× | add-sqr-sqrt |
| 5× | sqrt-prod |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 4× | add-log-exp |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 3× | pow1/2 |
| 2× | sqrt-div |
| 1× | flip-- |
| 1× | flip-+ |
| 1× | flip3-- |
| 1× | flip3-+ |
| 1× | sub-neg |
| 1× | rem-sqrt-square |
| 17.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 1.0ms | (sqrt (* im (* im 2.0))) |
| 0.0ms | (sqrt (* im (* im 2.0))) |
| 38.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 27.0ms | (sqrt (* im (* im 2.0))) |
| 20.0ms | (sqrt (* im (* im 2.0))) |
| 18.0ms | (sqrt (+ (* re re) (* im im))) |
| 137.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 55.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 17.0ms | (* -1 (* (sqrt 2.0) im)) |
| 16.0ms | (* -1 (* (sqrt 2.0) im)) |
| 5.0ms | (sqrt (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im))))) |
13 alts after pruning (12 fresh and 1 done)
Merged error: 12.3b
Found 4 expressions with local error:
| 32.0b | (sqrt (* im (* im 2.0))) |
| 32.0b | (sqrt (* im (* im 2.0))) |
| 31.4b | (sqrt (+ (* re re) (* im im))) |
| 31.4b | (sqrt (+ (* re re) (* im im))) |
| 8× | sqrt-prod |
| 8× | add-sqr-sqrt |
| 6× | add-cube-cbrt |
| 6× | *-un-lft-identity |
| 4× | add-log-exp |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | pow1/2 |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 2× | flip-+ |
| 2× | flip3-+ |
| 2× | rem-sqrt-square |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 1.0ms | (sqrt (* im (* im 2.0))) |
| 1.0ms | (sqrt (* im (* im 2.0))) |
| 25.0ms | (sqrt (+ (* re re) (* im im))) |
| 21.0ms | (sqrt (* im (* im 2.0))) |
| 21.0ms | (sqrt (* im (* im 2.0))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 172.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 124.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 63.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 41.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 16.0ms | (* -1 (* (sqrt 2.0) im)) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 12.3b
57% (13.1b remaining)
Error of 22.9b against oracle of 9.9b and baseline of 40.3b
| 8000× | (pre true 80) |
| 5986× | (body real 80) |
| 699× | (body real 2560) |
| 468× | (body real 1280) |
| 333× | (body real 5120) |
| 267× | (body real 640) |
| 159× | (body real 320) |
| 88× | (body real 160) |