


Bits error versus re



Bits error versus im
Results
if re < -7.61821412696286e+150Initial program 60.6
Taylor expanded around -inf 8.1
if -7.61821412696286e+150 < re < -5.536443801166738e-261Initial program 18.1
if -5.536443801166738e-261 < re < 7.690525860988237e-48Initial program 31.9
Taylor expanded around 0 35.5
if 7.690525860988237e-48 < re < 1.600158099397074e+147Initial program 46.6
rmApplied flip--46.6
Applied associate-*r/46.6
Applied sqrt-div46.7
Simplified26.8
rmApplied clear-num26.8
if 1.600158099397074e+147 < re Initial program 62.0
rmApplied flip--62.0
Applied associate-*r/62.0
Applied sqrt-div62.0
Simplified49.6
Taylor expanded around inf 19.6
Final simplification22.7
herbie shell --seed 2019022
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
(* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))
Time bar (total: 13.7s)Debug log
| 62.0ms | 12× | body | 5120 | valid |
| 30.0ms | 188× | body | 80 | valid |
| 18.0ms | 21× | body | 2560 | valid |
| 16.0ms | 21× | body | 1280 | valid |
| 4.0ms | 7× | body | 640 | valid |
| 2.0ms | 4× | body | 320 | valid |
| 1.0ms | 3× | body | 160 | valid |
| 36.0ms | (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 38.9b
Found 4 expressions with local error:
| 31.0b | (sqrt (+ (* re re) (* im im))) |
| 0.6b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (+ (* re re) (* im im)) |
| 0.0b | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 6× | add-log-exp |
| 6× | add-sqr-sqrt |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 4× | sqrt-prod |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | associate-*r/ |
| 2× | pow1/2 |
| 2× | flip3-- |
| 2× | flip3-+ |
| 1× | sub-neg |
| 1× | sum-log |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 21.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 4.0ms | (+ (* re re) (* im im)) |
| 4.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 105.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 39.0ms | (sqrt (+ (* re re) (* im im))) |
| 35.0ms | (+ (* re re) (* im im)) |
| 28.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 413.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 357.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 214.0ms | (sqrt (* 2.0 (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 118.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 5.0ms | (sqrt (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im))))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 17.2b
Found 4 expressions with local error:
| 31.9b | (cbrt (+ (* re re) (* im im))) |
| 31.9b | (cbrt (+ (* re re) (* im im))) |
| 6.7b | (- (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re) |
| 0.3b | (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) |
| 10× | add-cube-cbrt |
| 10× | *-un-lft-identity |
| 10× | add-sqr-sqrt |
| 9× | associate-*r* |
| 9× | cbrt-prod |
| 6× | sqrt-prod |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | cbrt-div |
| 6× | pow1 |
| 4× | add-log-exp |
| 3× | flip-+ |
| 3× | associate-*l* |
| 3× | flip3-+ |
| 2× | associate-*r/ |
| 2× | sqrt-div |
| 2× | pow1/3 |
| 1× | flip-- |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | flip3-- |
| 1× | sub-neg |
| 12.0ms | (- (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re) |
| 11.0ms | (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) |
| 2.0ms | (cbrt (+ (* re re) (* im im))) |
| 2.0ms | (cbrt (+ (* re re) (* im im))) |
| 129.0ms | (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) |
| 115.0ms | (cbrt (+ (* re re) (* im im))) |
| 108.0ms | (cbrt (+ (* re re) (* im im))) |
| 103.0ms | (- (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re) |
| 206.0ms | (- (+ (* (fabs (pow (+ (pow im 2) (pow re 2)) 1/3)) (pow im 1/3)) (* 1/6 (* (* (pow re 2) (fabs (pow (+ (pow im 2) (pow re 2)) 1/3))) (pow (/ 1 (pow im 5)) 1/3)))) re) |
| 164.0ms | (+ (* (fabs (pow (+ (pow im 2) (pow re 2)) 1/3)) (pow im 1/3)) (* 1/6 (* (* (pow re 2) (fabs (pow (+ (pow im 2) (pow re 2)) 1/3))) (pow (/ 1 (pow im 5)) 1/3)))) |
| 135.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 120.0ms | (sqrt (cbrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) |
| 120.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 17.2b
Found 4 expressions with local error:
| 31.9b | (cbrt (+ (* re re) (* im im))) |
| 31.9b | (cbrt (+ (* re re) (* im im))) |
| 31.9b | (cbrt (+ (* re re) (* im im))) |
| 31.9b | (cbrt (+ (* re re) (* im im))) |
| 12× | cbrt-prod |
| 8× | add-cube-cbrt |
| 8× | *-un-lft-identity |
| 8× | cbrt-div |
| 8× | add-sqr-sqrt |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | add-exp-log |
| 4× | pow1/3 |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | pow1 |
| 2.0ms | (cbrt (+ (* re re) (* im im))) |
| 2.0ms | (cbrt (+ (* re re) (* im im))) |
| 1.0ms | (cbrt (+ (* re re) (* im im))) |
| 1.0ms | (cbrt (+ (* re re) (* im im))) |
| 120.0ms | (cbrt (+ (* re re) (* im im))) |
| 102.0ms | (cbrt (+ (* re re) (* im im))) |
| 99.0ms | (cbrt (+ (* re re) (* im im))) |
| 86.0ms | (cbrt (+ (* re re) (* im im))) |
| 134.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 133.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 107.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 105.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 59.0ms | (cbrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
7 alts after pruning (5 fresh and 2 done)
Merged error: 17.2b
Found 4 expressions with local error:
| 31.0b | (sqrt (+ (* re re) (* im im))) |
| 28.8b | (sqrt (* im (* im 2.0))) |
| 1.8b | (+ (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 |
| 3× | flip-+ |
| 3× | flip3-+ |
| 2× | associate-/r/ |
| 2× | pow1/2 |
| 1× | div-inv |
| 1× | div-exp |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | sqrt-undiv |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 1× | cbrt-undiv |
| 11.0ms | (/ (sqrt (* im (* im 2.0))) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 10.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 1.0ms | (sqrt (* im (* im 2.0))) |
| 112.0ms | (/ (sqrt (* im (* im 2.0))) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 38.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 32.0ms | (sqrt (* im (* im 2.0))) |
| 24.0ms | (sqrt (+ (* re re) (* im im))) |
| 183.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)))) |
| 167.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 157.0ms | (sqrt (+ (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (- (* re re) (* (sqrt (+ (* re re) (* im im))) re)))) |
| 61.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 51.0ms | (/ (* im (* im 2.0)) (+ (sqrt (+ (* re re) (* im im))) re)) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 10.0b
53.2% (12.7b remaining)
Error of 22.7b against oracle of 10.0b and baseline of 37.2b
| 1.0s | 6069× | body | 80 | valid |
| 687.0ms | 468× | body | 1280 | valid |
| 532.0ms | 685× | body | 2560 | valid |
| 273.0ms | 301× | body | 5120 | valid |
| 127.0ms | 275× | body | 640 | valid |
| 47.0ms | 138× | body | 320 | valid |
| 42.0ms | 64× | body | 160 | valid |