Time bar (total: 10.0s)
| 1× | search |
| True | Other | False | Iter |
|---|---|---|---|
| 0% | 99.9% | 0.1% | 0 |
| 0% | 99.9% | 0.1% | 1 |
| 0% | 99.9% | 0.1% | 2 |
| 0% | 99.9% | 0.1% | 3 |
| 0% | 99.9% | 0.1% | 4 |
| 12.5% | 87.4% | 0.1% | 5 |
| 18.7% | 81.2% | 0.1% | 6 |
| 37.5% | 62.4% | 0.1% | 7 |
| 42.1% | 57.8% | 0.1% | 8 |
| 54.6% | 45.3% | 0.1% | 9 |
| 57.4% | 42.5% | 0.1% | 10 |
| 64.4% | 35.5% | 0.1% | 11 |
| 65.9% | 34% | 0.1% | 12 |
Compiled 18 to 13 computations (27.8% saved)
| 1.1s | 6362× | body | 256 | valid |
| 390.0ms | 678× | body | 2048 | valid |
| 372.0ms | 563× | body | 4096 | valid |
| 188.0ms | 237× | body | 512 | valid |
| 177.0ms | 416× | body | 1024 | valid |
| 2× | egg-herbie |
| 10× | fma-def_binary64 |
| 7× | *-commutative_binary64 |
| 4× | distribute-lft-in_binary64 |
| 4× | distribute-rgt-in_binary64 |
| 3× | +-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 19 | 30 |
| 1 | 45 | 30 |
| 2 | 55 | 30 |
| 3 | 59 | 30 |
| 0 | 2 | 2 |
| 1× | saturated |
| 1× | saturated |
| Inputs |
|---|
0 |
1 |
| Outputs |
|---|
0 |
1 |
| Inputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re))) im)))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re))) im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 im (hypot.f64 re im))))) |
Compiled 19 to 14 computations (26.3% saved)
| 1× | egg-herbie |
| 6× | fma-def_binary64 |
| 4× | *-commutative_binary64 |
| 3× | +-commutative_binary64 |
| 2× | distribute-lft-in_binary64 |
| 2× | distribute-rgt-in_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 15 |
| 1 | 25 | 15 |
| 2 | 34 | 15 |
| 3 | 36 | 15 |
| 1× | saturated |
| Inputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
Compiled 27 to 19 computations (29.6% saved)
1 alts after pruning (1 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 1 | 1 | 2 |
| Fresh | 1 | 0 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 0 | 0 |
| Total | 2 | 1 | 3 |
| Status | Error | Program |
|---|---|---|
| ▶ | 15.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
Compiled 12 to 9 computations (25% saved)
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 1.6b | (+.f64 re (hypot.f64 re im)) |
Compiled 39 to 16 computations (59% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 3.0ms | im | @ | 0 | (+.f64 re (hypot.f64 re im)) |
| 2.0ms | re | @ | -inf | (+.f64 re (hypot.f64 re im)) |
| 2.0ms | re | @ | inf | (+.f64 re (hypot.f64 re im)) |
| 1.0ms | re | @ | 0 | (+.f64 re (hypot.f64 re im)) |
| 1.0ms | im | @ | inf | (+.f64 re (hypot.f64 re im)) |
| 1× | batch-egg-rewrite |
| 612× | pow1_binary64 |
| 569× | add-log-exp_binary64 |
| 569× | log1p-expm1-u_binary64 |
| 569× | expm1-log1p-u_binary64 |
| 556× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 7 |
| 1 | 110 | 7 |
| 2 | 1534 | 7 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 re (hypot.f64 re im)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))) |
| 1× | egg-herbie |
| 647× | associate-*l/_binary64 |
| 561× | fma-neg_binary64 |
| 484× | associate-*r/_binary64 |
| 308× | *-commutative_binary64 |
| 271× | associate-/l/_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 67 | 449 |
| 1 | 193 | 442 |
| 2 | 569 | 431 |
| 3 | 2279 | 428 |
| 4 | 5567 | 428 |
| 5 | 7630 | 428 |
| 1× | node limit |
| Inputs |
|---|
im |
(+.f64 re im) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im)) |
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im))) |
(*.f64 2 re) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (*.f64 2 re)) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
(*.f64 -1/2 (/.f64 (pow.f64 im 2) re)) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (/.f64 (+.f64 (pow.f64 (*.f64 -1/8 (pow.f64 im 4)) 2) (*.f64 1/16 (pow.f64 im 8))) (pow.f64 re 7))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))))) |
(*.f64 2 re) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (*.f64 2 re)) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
im |
(+.f64 re im) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im)) |
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im))) |
(*.f64 -1 im) |
(+.f64 re (*.f64 -1 im)) |
(+.f64 re (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im))) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 re (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im)))) |
| Outputs |
|---|
im |
(+.f64 re im) |
(+.f64 im re) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im)) |
(fma.f64 1/2 (/.f64 (*.f64 re re) im) (+.f64 im re)) |
(+.f64 im (fma.f64 1/2 (/.f64 (*.f64 re re) im) re)) |
(fma.f64 1/2 (*.f64 (/.f64 re im) re) (+.f64 im re)) |
(+.f64 im (fma.f64 1/2 (*.f64 re (/.f64 re im)) re)) |
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im))) |
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 (*.f64 re re) im) (+.f64 im re))) |
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (+.f64 im (fma.f64 1/2 (/.f64 (*.f64 re re) im) re))) |
(fma.f64 1/2 (*.f64 (/.f64 re im) re) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (+.f64 im re))) |
(fma.f64 1/2 (*.f64 re (/.f64 re im)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (+.f64 im re))) |
(*.f64 2 re) |
(*.f64 re 2) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (*.f64 2 re)) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (*.f64 re 2)) |
(fma.f64 re 2 (*.f64 1/2 (/.f64 (*.f64 im im) re))) |
(fma.f64 re 2 (*.f64 (/.f64 1/2 re) (*.f64 im im))) |
(fma.f64 1/2 (*.f64 im (/.f64 im re)) (*.f64 re 2)) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 2 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 re 2 (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(fma.f64 re 2 (fma.f64 1/2 (*.f64 (/.f64 im re) im) (/.f64 (*.f64 -1/8 (pow.f64 im 4)) (pow.f64 re 3)))) |
(fma.f64 1/2 (*.f64 im (/.f64 im re)) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (*.f64 re 2))) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 2 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 re 2 (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
(fma.f64 1/2 (*.f64 (/.f64 im re) im) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (fma.f64 re 2 (/.f64 1/16 (/.f64 (pow.f64 re 5) (pow.f64 im 6)))))) |
(fma.f64 1/2 (*.f64 im (/.f64 im re)) (fma.f64 re 2 (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (*.f64 (pow.f64 im 6) (/.f64 1/16 (pow.f64 re 5)))))) |
(*.f64 -1/2 (/.f64 (pow.f64 im 2) re)) |
(*.f64 (/.f64 (*.f64 im im) re) -1/2) |
(*.f64 (*.f64 (/.f64 im re) im) -1/2) |
(*.f64 (*.f64 im im) (/.f64 -1/2 re)) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))) |
(fma.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (*.f64 (/.f64 (*.f64 im im) re) -1/2)) |
(fma.f64 (/.f64 (*.f64 im im) re) -1/2 (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8)) |
(fma.f64 (*.f64 (/.f64 im re) im) -1/2 (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8)) |
(fma.f64 (*.f64 im (/.f64 im re)) -1/2 (*.f64 (pow.f64 im 4) (/.f64 1/8 (pow.f64 re 3)))) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))) |
(fma.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (fma.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (*.f64 (/.f64 (*.f64 im im) re) -1/2))) |
(fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (fma.f64 (/.f64 (*.f64 im im) re) -1/2 (/.f64 -1/16 (/.f64 (pow.f64 re 5) (pow.f64 im 6))))) |
(fma.f64 (*.f64 (/.f64 im re) im) -1/2 (fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (/.f64 -1/16 (/.f64 (pow.f64 re 5) (pow.f64 im 6))))) |
(fma.f64 (*.f64 im (/.f64 im re)) -1/2 (fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (*.f64 (pow.f64 im 6) (/.f64 -1/16 (pow.f64 re 5))))) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (+.f64 (*.f64 1/2 (/.f64 (+.f64 (pow.f64 (*.f64 -1/8 (pow.f64 im 4)) 2) (*.f64 1/16 (pow.f64 im 8))) (pow.f64 re 7))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))))) |
(fma.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (fma.f64 1/2 (/.f64 (+.f64 (pow.f64 (*.f64 -1/8 (pow.f64 im 4)) 2) (*.f64 1/16 (pow.f64 im 8))) (pow.f64 re 7)) (fma.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (*.f64 (/.f64 (*.f64 im im) re) -1/2)))) |
(fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (fma.f64 1/2 (/.f64 (fma.f64 1/16 (pow.f64 im 8) (*.f64 (pow.f64 im 8) 1/64)) (pow.f64 re 7)) (fma.f64 (/.f64 (*.f64 im im) re) -1/2 (/.f64 -1/16 (/.f64 (pow.f64 re 5) (pow.f64 im 6)))))) |
(fma.f64 1/2 (/.f64 (*.f64 (pow.f64 im 8) 5/64) (pow.f64 re 7)) (fma.f64 (*.f64 (/.f64 im re) im) -1/2 (fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (/.f64 -1/16 (/.f64 (pow.f64 re 5) (pow.f64 im 6)))))) |
(fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (fma.f64 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) -1/16 (fma.f64 (*.f64 im (/.f64 im re)) -1/2 (/.f64 (*.f64 (pow.f64 im 8) 5/128) (pow.f64 re 7))))) |
(*.f64 2 re) |
(*.f64 re 2) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (*.f64 2 re)) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (*.f64 re 2)) |
(fma.f64 re 2 (*.f64 1/2 (/.f64 (*.f64 im im) re))) |
(fma.f64 re 2 (*.f64 (/.f64 1/2 re) (*.f64 im im))) |
(fma.f64 1/2 (*.f64 im (/.f64 im re)) (*.f64 re 2)) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 2 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 re 2 (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))) |
(fma.f64 re 2 (fma.f64 1/2 (*.f64 (/.f64 im re) im) (/.f64 (*.f64 -1/8 (pow.f64 im 4)) (pow.f64 re 3)))) |
(fma.f64 1/2 (*.f64 im (/.f64 im re)) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (*.f64 re 2))) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 (*.f64 2 re) (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 2 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 re 2 (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))) |
(fma.f64 1/2 (*.f64 (/.f64 im re) im) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (fma.f64 re 2 (/.f64 1/16 (/.f64 (pow.f64 re 5) (pow.f64 im 6)))))) |
(fma.f64 1/2 (*.f64 im (/.f64 im re)) (fma.f64 re 2 (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (*.f64 (pow.f64 im 6) (/.f64 1/16 (pow.f64 re 5)))))) |
im |
(+.f64 re im) |
(+.f64 im re) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im)) |
(fma.f64 1/2 (/.f64 (*.f64 re re) im) (+.f64 im re)) |
(+.f64 im (fma.f64 1/2 (/.f64 (*.f64 re re) im) re)) |
(fma.f64 1/2 (*.f64 (/.f64 re im) re) (+.f64 im re)) |
(+.f64 im (fma.f64 1/2 (*.f64 re (/.f64 re im)) re)) |
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im))) |
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 (*.f64 re re) im) (+.f64 im re))) |
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (+.f64 im (fma.f64 1/2 (/.f64 (*.f64 re re) im) re))) |
(fma.f64 1/2 (*.f64 (/.f64 re im) re) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (+.f64 im re))) |
(fma.f64 1/2 (*.f64 re (/.f64 re im)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (+.f64 im re))) |
(*.f64 -1 im) |
(neg.f64 im) |
(+.f64 re (*.f64 -1 im)) |
(+.f64 re (neg.f64 im)) |
(-.f64 re im) |
(+.f64 re (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im))) |
(+.f64 re (fma.f64 -1/2 (/.f64 (*.f64 re re) im) (neg.f64 im))) |
(+.f64 re (-.f64 (*.f64 (/.f64 (*.f64 re re) im) -1/2) im)) |
(-.f64 (fma.f64 (*.f64 (/.f64 re im) re) -1/2 re) im) |
(-.f64 re (fma.f64 1/2 (*.f64 re (/.f64 re im)) im)) |
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 re (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im)))) |
(fma.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (+.f64 re (fma.f64 -1/2 (/.f64 (*.f64 re re) im) (neg.f64 im)))) |
(+.f64 (-.f64 (*.f64 (/.f64 (*.f64 re re) im) -1/2) im) (fma.f64 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) 1/8 re)) |
(fma.f64 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) 1/8 (-.f64 (fma.f64 (*.f64 (/.f64 re im) re) -1/2 re) im)) |
(-.f64 (fma.f64 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) 1/8 re) (fma.f64 1/2 (*.f64 re (/.f64 re im)) im)) |
(fma.f64 (*.f64 re re) (/.f64 -1/2 im) (fma.f64 (pow.f64 re 4) (/.f64 1/8 (pow.f64 im 3)) (-.f64 re im))) |
Compiled 1189 to 756 computations (36.4% saved)
13 alts after pruning (12 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 52 | 12 | 64 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 52 | 13 | 65 |
| Status | Error | Program |
|---|---|---|
| 53.3b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (*.f64 im im) (/.f64 -1/2 re))))) | |
| ▶ | 47.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
| ✓ | 15.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
| 17.3b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))) | |
| ▶ | 53.3b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))))) |
| 47.9b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) | |
| ▶ | 48.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
| 45.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) | |
| 17.4b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) | |
| ▶ | 45.8b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
| 18.5b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) | |
| ▶ | 15.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) |
| 55.9b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 im (/.f64 im re)) -1/2 (*.f64 (pow.f64 im 4) (/.f64 1/8 (pow.f64 re 3))))))) |
Compiled 334 to 261 computations (21.9% saved)
Found 3 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (sqrt.f64 (+.f64 re (hypot.f64 re im))) |
| ✓ | 0.4b | (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2) |
| 1.6b | (+.f64 re (hypot.f64 re im)) |
Compiled 62 to 25 computations (59.7% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 7.0ms | im | @ | inf | (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2) |
| 4.0ms | re | @ | -inf | (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2) |
| 3.0ms | im | @ | 0 | (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2) |
| 2.0ms | re | @ | inf | (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2) |
| 2.0ms | re | @ | 0 | (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2) |
| 1× | batch-egg-rewrite |
| 758× | pow1_binary64 |
| 707× | add-log-exp_binary64 |
| 706× | log1p-expm1-u_binary64 |
| 706× | expm1-log1p-u_binary64 |
| 690× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 16 |
| 1 | 175 | 16 |
| 2 | 1968 | 16 |
| 1× | node limit |
| Inputs |
|---|
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2) |
(sqrt.f64 (+.f64 re (hypot.f64 re im))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (*.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4)) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (sqrt.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (sqrt.f64 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 re) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))))))))) |
| 1× | egg-herbie |
| 681× | distribute-rgt-in_binary64 |
| 501× | fma-def_binary64 |
| 497× | associate-*l*_binary64 |
| 492× | associate-*r*_binary64 |
| 215× | unswap-sqr_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 109 | 703 |
| 1 | 325 | 614 |
| 2 | 1112 | 570 |
| 3 | 5529 | 525 |
| 1× | node limit |
| Inputs |
|---|
im |
(+.f64 re im) |
(+.f64 re (+.f64 (*.f64 (-.f64 (*.f64 3/4 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) im)) |
(+.f64 (*.f64 (pow.f64 re 3) (+.f64 (*.f64 -1/2 (/.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) im)) (*.f64 1/2 (/.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) im)))) (+.f64 re (+.f64 (*.f64 (-.f64 (*.f64 3/4 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) im))) |
(*.f64 (pow.f64 (sqrt.f64 2) 2) re) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (*.f64 (pow.f64 (sqrt.f64 2) 2) re)) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 re 3)))) (*.f64 -1 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)))) (pow.f64 im 4)) (*.f64 (pow.f64 (sqrt.f64 2) 2) re))) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 re 3)))) (*.f64 -1 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)))) (pow.f64 im 4)) (*.f64 (pow.f64 (sqrt.f64 2) 2) re)))) |
(sqrt.f64 im) |
(+.f64 (sqrt.f64 im) (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im))))) |
(+.f64 (sqrt.f64 im) (+.f64 (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im)))) (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 im)))))) |
(+.f64 (*.f64 -1/4 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 3)) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (+.f64 (sqrt.f64 im) (+.f64 (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im)))) (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 im))))))) |
(*.f64 (sqrt.f64 2) (sqrt.f64 re)) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/4 (*.f64 (/.f64 (pow.f64 im 2) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))))) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (+.f64 (*.f64 -1/2 (*.f64 (/.f64 (*.f64 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)) (pow.f64 im 4)) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 re)))) (*.f64 1/4 (*.f64 (/.f64 (pow.f64 im 2) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))))) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (+.f64 (*.f64 1/2 (*.f64 (/.f64 (*.f64 (-.f64 (*.f64 1/16 (/.f64 1 (pow.f64 re 5))) (*.f64 -1/4 (/.f64 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)) (*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 re 2))))) (pow.f64 im 6)) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 re)))) (+.f64 (*.f64 -1/2 (*.f64 (/.f64 (*.f64 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)) (pow.f64 im 4)) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 re)))) (*.f64 1/4 (*.f64 (/.f64 (pow.f64 im 2) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))))))) |
| Outputs |
|---|
im |
(+.f64 re im) |
(+.f64 im re) |
(+.f64 re (+.f64 (*.f64 (-.f64 (*.f64 3/4 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) im)) |
(+.f64 re (fma.f64 (-.f64 (/.f64 3/4 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (*.f64 re re) im)) |
(+.f64 im (fma.f64 (+.f64 (/.f64 3/4 im) (/.f64 -1/4 im)) (*.f64 re re) re)) |
(+.f64 im (fma.f64 re (*.f64 re (/.f64 1/2 im)) re)) |
(+.f64 (*.f64 (pow.f64 re 3) (+.f64 (*.f64 -1/2 (/.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) im)) (*.f64 1/2 (/.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) im)))) (+.f64 re (+.f64 (*.f64 (-.f64 (*.f64 3/4 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) im))) |
(+.f64 re (fma.f64 (-.f64 (/.f64 3/4 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (*.f64 re re) im)) |
(+.f64 im (fma.f64 (+.f64 (/.f64 3/4 im) (/.f64 -1/4 im)) (*.f64 re re) re)) |
(+.f64 im (fma.f64 re (*.f64 re (/.f64 1/2 im)) re)) |
(*.f64 (pow.f64 (sqrt.f64 2) 2) re) |
(*.f64 re (pow.f64 (sqrt.f64 2) 2)) |
(*.f64 re 2) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (*.f64 (pow.f64 (sqrt.f64 2) 2) re)) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (*.f64 re (pow.f64 (sqrt.f64 2) 2))) |
(fma.f64 re 2 (/.f64 1/2 (/.f64 re (*.f64 im im)))) |
(fma.f64 re 2 (*.f64 (/.f64 1/2 re) (*.f64 im im))) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 re 3)))) (*.f64 -1 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)))) (pow.f64 im 4)) (*.f64 (pow.f64 (sqrt.f64 2) 2) re))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 (+.f64 (/.f64 1/16 (*.f64 (pow.f64 re 3) (pow.f64 (sqrt.f64 2) 2))) (neg.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (*.f64 1/4 (/.f64 1 (sqrt.f64 2))) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) 2)))) (pow.f64 im 4) (*.f64 re (pow.f64 (sqrt.f64 2) 2)))) |
(fma.f64 1/2 (/.f64 im (/.f64 re im)) (fma.f64 (-.f64 (/.f64 1/32 (pow.f64 re 3)) (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2))) (pow.f64 im 4) (*.f64 re 2))) |
(fma.f64 re 2 (fma.f64 (+.f64 (/.f64 1/32 (pow.f64 re 3)) (-.f64 (/.f64 -1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2))) (pow.f64 im 4) (*.f64 (/.f64 1/2 re) (*.f64 im im)))) |
(fma.f64 re 2 (fma.f64 (+.f64 (/.f64 1/32 (pow.f64 re 3)) (*.f64 (/.f64 1 (pow.f64 re 3)) (+.f64 (*.f64 (/.f64 1/4 (sqrt.f64 2)) (/.f64 -1/4 (sqrt.f64 2))) -1/8))) (pow.f64 im 4) (*.f64 (/.f64 1/2 re) (*.f64 im im)))) |
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 (*.f64 (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 re 3)))) (*.f64 -1 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)))) (pow.f64 im 4)) (*.f64 (pow.f64 (sqrt.f64 2) 2) re)))) |
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 (+.f64 (/.f64 1/16 (*.f64 (pow.f64 re 3) (pow.f64 (sqrt.f64 2) 2))) (neg.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (*.f64 1/4 (/.f64 1 (sqrt.f64 2))) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) 2)))) (pow.f64 im 4) (*.f64 re (pow.f64 (sqrt.f64 2) 2))))) |
(fma.f64 1/2 (/.f64 im (/.f64 re im)) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 (-.f64 (/.f64 1/32 (pow.f64 re 3)) (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2))) (pow.f64 im 4) (*.f64 re 2)))) |
(fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 re 2 (fma.f64 (+.f64 (/.f64 1/32 (pow.f64 re 3)) (-.f64 (/.f64 -1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2))) (pow.f64 im 4) (*.f64 (/.f64 1/2 re) (*.f64 im im))))) |
(fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 re 2 (fma.f64 (+.f64 (/.f64 1/32 (pow.f64 re 3)) (*.f64 (/.f64 1 (pow.f64 re 3)) (+.f64 (*.f64 (/.f64 1/4 (sqrt.f64 2)) (/.f64 -1/4 (sqrt.f64 2))) -1/8))) (pow.f64 im 4) (*.f64 (/.f64 1/2 re) (*.f64 im im))))) |
(sqrt.f64 im) |
(+.f64 (sqrt.f64 im) (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im))))) |
(+.f64 (sqrt.f64 im) (*.f64 (*.f64 1/2 re) (sqrt.f64 (/.f64 1 im)))) |
(fma.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im))) (sqrt.f64 im)) |
(fma.f64 re (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) (sqrt.f64 im)) |
(+.f64 (sqrt.f64 im) (+.f64 (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im)))) (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 im)))))) |
(+.f64 (sqrt.f64 im) (*.f64 1/2 (+.f64 (*.f64 re (sqrt.f64 (/.f64 1 im))) (*.f64 (-.f64 (/.f64 1/2 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (*.f64 (*.f64 re re) (sqrt.f64 (/.f64 1 im))))))) |
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 im)) (+.f64 re (*.f64 re (*.f64 re (-.f64 (/.f64 1/2 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)))))) (sqrt.f64 im)) |
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 im)) (+.f64 re (*.f64 (*.f64 re re) (+.f64 (/.f64 1/2 im) (/.f64 -1/4 im))))) (sqrt.f64 im)) |
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 im)) (+.f64 re (*.f64 (/.f64 1/4 im) (*.f64 re re)))) (sqrt.f64 im)) |
(+.f64 (*.f64 -1/4 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 3)) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (+.f64 (sqrt.f64 im) (+.f64 (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im)))) (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/2 (/.f64 1 im)) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 im))))))) |
(fma.f64 -1/4 (*.f64 (-.f64 (/.f64 1/2 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (*.f64 (pow.f64 re 3) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (+.f64 (sqrt.f64 im) (*.f64 1/2 (+.f64 (*.f64 re (sqrt.f64 (/.f64 1 im))) (*.f64 (-.f64 (/.f64 1/2 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (*.f64 (*.f64 re re) (sqrt.f64 (/.f64 1 im)))))))) |
(fma.f64 -1/4 (*.f64 (-.f64 (/.f64 1/2 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)) (*.f64 (pow.f64 re 3) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 im)) (+.f64 re (*.f64 re (*.f64 re (-.f64 (/.f64 1/2 im) (pow.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) 2)))))) (sqrt.f64 im))) |
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 im)) (+.f64 re (*.f64 (*.f64 re re) (+.f64 (/.f64 1/2 im) (/.f64 -1/4 im))))) (fma.f64 (+.f64 (/.f64 1/2 im) (/.f64 -1/4 im)) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 im 3))) (*.f64 (pow.f64 re 3) -1/4)) (sqrt.f64 im))) |
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 im)) (+.f64 re (*.f64 (/.f64 1/4 im) (*.f64 re re)))) (fma.f64 (/.f64 1/4 im) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 im 3))) (*.f64 (pow.f64 re 3) -1/4)) (sqrt.f64 im))) |
(*.f64 (sqrt.f64 2) (sqrt.f64 re)) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/4 (*.f64 (/.f64 (pow.f64 im 2) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 (*.f64 im im) (sqrt.f64 2))))) |
(fma.f64 (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2))) (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 (sqrt.f64 2) (sqrt.f64 re))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2))))) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (+.f64 (*.f64 -1/2 (*.f64 (/.f64 (*.f64 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)) (pow.f64 im 4)) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 re)))) (*.f64 1/4 (*.f64 (/.f64 (pow.f64 im 2) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 re) (fma.f64 -1/2 (*.f64 (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (*.f64 1/4 (/.f64 1 (sqrt.f64 2))) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) 2)) (/.f64 (sqrt.f64 2) (pow.f64 im 4))) (sqrt.f64 (/.f64 1 re))) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 (*.f64 im im) (sqrt.f64 2)))))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 re) (fma.f64 -1/2 (/.f64 (*.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2)) (pow.f64 im 4)) (/.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re)))) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2)))))) |
(fma.f64 -1/2 (*.f64 (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2)) (sqrt.f64 2)) (*.f64 (pow.f64 im 4) (sqrt.f64 (/.f64 1 re)))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2)))))) |
(fma.f64 -1/2 (*.f64 (/.f64 (*.f64 (/.f64 1 (pow.f64 re 3)) (+.f64 1/8 (*.f64 (/.f64 1/4 (sqrt.f64 2)) (/.f64 1/4 (sqrt.f64 2))))) (sqrt.f64 2)) (*.f64 (pow.f64 im 4) (sqrt.f64 (/.f64 1 re)))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2)))))) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (+.f64 (*.f64 1/2 (*.f64 (/.f64 (*.f64 (-.f64 (*.f64 1/16 (/.f64 1 (pow.f64 re 5))) (*.f64 -1/4 (/.f64 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)) (*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 re 2))))) (pow.f64 im 6)) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 re)))) (+.f64 (*.f64 -1/2 (*.f64 (/.f64 (*.f64 (+.f64 (*.f64 1/8 (/.f64 1 (pow.f64 re 3))) (pow.f64 (*.f64 1/4 (*.f64 (/.f64 1 (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) 2)) (pow.f64 im 4)) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 re)))) (*.f64 1/4 (*.f64 (/.f64 (pow.f64 im 2) (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))))))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 re) (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) (/.f64 (+.f64 (/.f64 1/16 (pow.f64 re 5)) (*.f64 1/4 (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (*.f64 1/4 (/.f64 1 (sqrt.f64 2))) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) 2)) (*.f64 (*.f64 re re) (pow.f64 (sqrt.f64 2) 2))))) (/.f64 (sqrt.f64 2) (pow.f64 im 6)))) (fma.f64 -1/2 (*.f64 (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (*.f64 1/4 (/.f64 1 (sqrt.f64 2))) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) 2)) (/.f64 (sqrt.f64 2) (pow.f64 im 4))) (sqrt.f64 (/.f64 1 re))) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 (*.f64 im im) (sqrt.f64 2))))))) |
(+.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (+.f64 (*.f64 1/2 (*.f64 (/.f64 (-.f64 (/.f64 1/16 (pow.f64 re 5)) (*.f64 -1/8 (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2)) (*.f64 re re)))) (sqrt.f64 2)) (pow.f64 im 6))) (*.f64 -1/2 (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2)) (/.f64 (sqrt.f64 2) (pow.f64 im 4)))))) (fma.f64 (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2))) (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 (sqrt.f64 2) (sqrt.f64 re)))) |
(fma.f64 (sqrt.f64 (/.f64 1 re)) (fma.f64 1/2 (*.f64 (/.f64 (pow.f64 im 6) (sqrt.f64 2)) (+.f64 (/.f64 1/16 (pow.f64 re 5)) (*.f64 1/8 (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2)) (*.f64 re re))))) (*.f64 -1/2 (*.f64 (pow.f64 im 4) (/.f64 (+.f64 (/.f64 1/8 (pow.f64 re 3)) (pow.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (/.f64 1/4 (sqrt.f64 2))) 2)) (sqrt.f64 2))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2)))))) |
(fma.f64 (sqrt.f64 (/.f64 1 re)) (fma.f64 1/2 (*.f64 (/.f64 (pow.f64 im 6) (sqrt.f64 2)) (+.f64 (/.f64 1/16 (pow.f64 re 5)) (*.f64 -1/8 (/.f64 (*.f64 (/.f64 1 (pow.f64 re 3)) (+.f64 (*.f64 (/.f64 1/4 (sqrt.f64 2)) (/.f64 -1/4 (sqrt.f64 2))) -1/8)) (*.f64 re re))))) (*.f64 -1/2 (*.f64 (pow.f64 im 4) (/.f64 (*.f64 (/.f64 1 (pow.f64 re 3)) (+.f64 1/8 (*.f64 (/.f64 1/4 (sqrt.f64 2)) (/.f64 1/4 (sqrt.f64 2))))) (sqrt.f64 2))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 1/4 (/.f64 (*.f64 im im) (sqrt.f64 2)))))) |
Compiled 18 to 14 computations (22.2% saved)
Compiled 27 to 22 computations (18.5% saved)
Compiled 28 to 15 computations (46.4% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)) |
| ✓ | 0.0b | (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))) |
| ✓ | 7.9b | (/.f64 (pow.f64 im 2) re) |
| ✓ | 18.9b | (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))) |
Compiled 53 to 40 computations (24.5% saved)
24 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 9.0ms | im | @ | 0 | (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))) |
| 1.0ms | re | @ | 0 | (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))) |
| 1.0ms | im | @ | inf | (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))) |
| 1.0ms | re | @ | 0 | (/.f64 (pow.f64 im 2) re) |
| 1.0ms | im | @ | 0 | (/.f64 (pow.f64 im 2) re) |
| 1× | batch-egg-rewrite |
| 893× | pow1_binary64 |
| 830× | add-log-exp_binary64 |
| 829× | log1p-expm1-u_binary64 |
| 829× | expm1-log1p-u_binary64 |
| 812× | add-exp-log_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 36 |
| 1 | 215 | 30 |
| 2 | 2598 | 30 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))) |
(/.f64 (pow.f64 im 2) re) |
(*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))) |
(*.f64 -1/2 (/.f64 (pow.f64 im 2) re)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (sqrt.f64 (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 -1) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 -1 1/2) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (sqrt.f64 (/.f64 re (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 im (neg.f64 im))) (sqrt.f64 (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (sqrt.f64 re)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (/.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 -1/2 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1/2 (*.f64 (/.f64 im (/.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (*.f64 im (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im im) (/.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (/.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (/.f64 re im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)) 1/4)) (*.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 im 4)) (*.f64 (pow.f64 (cbrt.f64 im) 2) (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (*.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)) (*.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (*.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (*.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im (neg.f64 im)) (/.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im (neg.f64 im)) (/.f64 1 (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 re) (*.f64 im im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 im (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 (/.f64 im (sqrt.f64 re)))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im 1) (/.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 im 4)) 1) (/.f64 (pow.f64 (cbrt.f64 im) 2) re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (pow.f64 (cbrt.f64 re) 2)) (/.f64 im (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 re) 2)) (/.f64 (*.f64 im im) (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 im 4)) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 re)) (/.f64 (*.f64 im im) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 im 4)) (sqrt.f64 re)) (/.f64 (pow.f64 (cbrt.f64 im) 2) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (/.f64 im (/.f64 re im))) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (cbrt.f64 (*.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)) 1/4))) (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2))) (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (cbrt.f64 (/.f64 im (/.f64 re im)))) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 2)) (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2)) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1 (/.f64 im (sqrt.f64 re))) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 re (*.f64 im im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 im (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 im im) (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (/.f64 re im)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (/.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (/.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im im) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 re (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 re (*.f64 im im)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (pow.f64 im 4)) (/.f64 re (pow.f64 (cbrt.f64 im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im (neg.f64 im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im (neg.f64 im)) (neg.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (/.f64 re (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 re (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 im (neg.f64 im))) (neg.f64 (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im im) (sqrt.f64 re)) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im im) 1) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im im) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 -1/2 (*.f64 im im)) 2) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 -1/2 (*.f64 im im))) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (*.f64 im (neg.f64 im))) (neg.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 re (*.f64 im im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 im (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 im im) (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (/.f64 re im)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1/2 (/.f64 re (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 re (*.f64 -1/2 (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1/2 (*.f64 im im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 -1/2 (*.f64 im im))) (neg.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -1/2 (*.f64 im im)) 1) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -1/2 (*.f64 im im)) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -1/2 (*.f64 im im)) (sqrt.f64 re)) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 im (neg.f64 im)) -1/2) (neg.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1/2 (*.f64 im (neg.f64 im))) (neg.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 -1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -1/2) (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im))))))))) |
| 1× | egg-herbie |
| 977× | fma-def_binary64 |
| 502× | distribute-rgt-neg-in_binary64 |
| 453× | fma-neg_binary64 |
| 407× | distribute-lft-neg-in_binary64 |
| 257× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 15 | 392 |
| 1 | 33 | 392 |
| 2 | 77 | 392 |
| 3 | 178 | 392 |
| 4 | 437 | 392 |
| 5 | 1414 | 392 |
| 6 | 3101 | 392 |
| 7 | 5294 | 392 |
| 8 | 6968 | 392 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
| Outputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
Compiled 5256 to 3405 computations (35.2% saved)
14 alts after pruning (9 fresh and 5 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 265 | 8 | 273 |
| Fresh | 6 | 1 | 7 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 5 | 5 |
| Total | 272 | 14 | 286 |
| Status | Error | Program |
|---|---|---|
| ✓ | 47.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
| ✓ | 15.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
| ▶ | 53.3b | (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re))) |
| 50.8b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (*.f64 (/.f64 im (pow.f64 (cbrt.f64 re) 2)) (/.f64 im (cbrt.f64 re))))))) | |
| ✓ | 45.8b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
| 47.9b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) | |
| ✓ | 48.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
| ▶ | 60.7b | (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| 50.7b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (*.f64 (/.f64 im (/.f64 re im)) 1))))) | |
| ▶ | 63.0b | (*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| ✓ | 15.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) |
| ▶ | 50.9b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3)))) |
| ▶ | 45.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
| 50.7b | (*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
Compiled 279 to 219 computations (21.5% saved)
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (sqrt.f64 (*.f64 2 (+.f64 re im))) |
Compiled 28 to 15 computations (46.4% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 3.0ms | re | @ | inf | (sqrt.f64 (*.f64 2 (+.f64 re im))) |
| 2.0ms | im | @ | -inf | (sqrt.f64 (*.f64 2 (+.f64 re im))) |
| 1.0ms | re | @ | 0 | (sqrt.f64 (*.f64 2 (+.f64 re im))) |
| 1.0ms | im | @ | 0 | (sqrt.f64 (*.f64 2 (+.f64 re im))) |
| 1.0ms | im | @ | inf | (sqrt.f64 (*.f64 2 (+.f64 re im))) |
| 1× | batch-egg-rewrite |
| 812× | pow1_binary64 |
| 759× | add-log-exp_binary64 |
| 758× | log1p-expm1-u_binary64 |
| 758× | expm1-log1p-u_binary64 |
| 743× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 9 |
| 1 | 157 | 9 |
| 2 | 2115 | 9 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (*.f64 2 (+.f64 re im))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (+.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (+.f64 re im))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re im)))) (cbrt.f64 (*.f64 2 (+.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re im)) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 2 (+.f64 re im)) 1/4) (pow.f64 (*.f64 2 (+.f64 re im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re im) 2) 4))) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re im) 2) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (+.f64 re im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re im)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re im)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re im)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re im)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re im))))))))) |
| 1× | egg-herbie |
| 650× | associate-/r*_binary64 |
| 634× | sqr-pow_binary64 |
| 449× | *-commutative_binary64 |
| 439× | distribute-lft-out_binary64 |
| 408× | unswap-sqr_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 60 | 304 |
| 1 | 159 | 304 |
| 2 | 439 | 284 |
| 3 | 1572 | 256 |
| 4 | 2629 | 256 |
| 5 | 3622 | 256 |
| 6 | 5357 | 256 |
| 7 | 5745 | 256 |
| 8 | 6164 | 256 |
| 9 | 6467 | 256 |
| 10 | 6875 | 256 |
| 11 | 7519 | 256 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (sqrt.f64 2) (sqrt.f64 im)) |
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) re) (sqrt.f64 (/.f64 1 im)))) (*.f64 (sqrt.f64 2) (sqrt.f64 im))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) re) (sqrt.f64 (/.f64 1 im)))) (*.f64 (sqrt.f64 2) (sqrt.f64 im)))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) re) (sqrt.f64 (/.f64 1 im)))) (+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 im)) (*.f64 1/16 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 re 3)) (sqrt.f64 (/.f64 1 (pow.f64 im 5)))))))) |
(*.f64 (sqrt.f64 2) (sqrt.f64 re)) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) im) (sqrt.f64 (/.f64 1 re))))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 im 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) im) (sqrt.f64 (/.f64 1 re)))))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 im 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (+.f64 (*.f64 1/16 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 im 3)) (sqrt.f64 (/.f64 1 (pow.f64 re 5))))) (+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) im) (sqrt.f64 (/.f64 1 re))))))) |
| Outputs |
|---|
(*.f64 (sqrt.f64 2) (sqrt.f64 im)) |
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) re) (sqrt.f64 (/.f64 1 im)))) (*.f64 (sqrt.f64 2) (sqrt.f64 im))) |
(fma.f64 1/2 (*.f64 (sqrt.f64 2) (*.f64 re (sqrt.f64 (/.f64 1 im)))) (*.f64 (sqrt.f64 2) (sqrt.f64 im))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 im) (*.f64 (sqrt.f64 (/.f64 1 im)) (*.f64 (*.f64 1/2 re) (sqrt.f64 2)))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 im) (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im)))))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 im) (*.f64 (sqrt.f64 (/.f64 1 im)) (*.f64 1/2 re)))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) re) (sqrt.f64 (/.f64 1 im)))) (*.f64 (sqrt.f64 2) (sqrt.f64 im)))) |
(fma.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 re re)) (sqrt.f64 (/.f64 1 (pow.f64 im 3)))) (fma.f64 1/2 (*.f64 (sqrt.f64 2) (*.f64 re (sqrt.f64 (/.f64 1 im)))) (*.f64 (sqrt.f64 2) (sqrt.f64 im)))) |
(fma.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 re re)) (sqrt.f64 (/.f64 1 (pow.f64 im 3)))) (fma.f64 (sqrt.f64 2) (sqrt.f64 im) (*.f64 (sqrt.f64 (/.f64 1 im)) (*.f64 (*.f64 1/2 re) (sqrt.f64 2))))) |
(fma.f64 (sqrt.f64 2) (*.f64 -1/8 (*.f64 re (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 3)))))) (*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 im) (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 im) (*.f64 re (+.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) (*.f64 -1/8 (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 3))))))))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 re 2)) (sqrt.f64 (/.f64 1 (pow.f64 im 3))))) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) re) (sqrt.f64 (/.f64 1 im)))) (+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 im)) (*.f64 1/16 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 re 3)) (sqrt.f64 (/.f64 1 (pow.f64 im 5)))))))) |
(fma.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 re re)) (sqrt.f64 (/.f64 1 (pow.f64 im 3)))) (fma.f64 1/2 (*.f64 (sqrt.f64 2) (*.f64 re (sqrt.f64 (/.f64 1 im)))) (fma.f64 (sqrt.f64 2) (sqrt.f64 im) (*.f64 1/16 (*.f64 (sqrt.f64 2) (*.f64 (pow.f64 re 3) (sqrt.f64 (/.f64 1 (pow.f64 im 5))))))))) |
(fma.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 re re)) (sqrt.f64 (/.f64 1 (pow.f64 im 3)))) (fma.f64 1/2 (*.f64 (sqrt.f64 2) (*.f64 re (sqrt.f64 (/.f64 1 im)))) (fma.f64 1/16 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 re 3)) (sqrt.f64 (/.f64 1 (pow.f64 im 5)))) (*.f64 (sqrt.f64 2) (sqrt.f64 im))))) |
(+.f64 (*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 im) (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im)))))) (*.f64 (sqrt.f64 2) (+.f64 (*.f64 1/16 (*.f64 (pow.f64 re 3) (sqrt.f64 (/.f64 1 (pow.f64 im 5))))) (*.f64 -1/8 (*.f64 re (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 3))))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (+.f64 (sqrt.f64 im) (*.f64 1/2 (*.f64 re (sqrt.f64 (/.f64 1 im))))) (*.f64 (*.f64 re re) (+.f64 (*.f64 1/16 (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 5))))) (*.f64 -1/8 (sqrt.f64 (/.f64 1 (pow.f64 im 3)))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 im) (*.f64 re (+.f64 (+.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) (*.f64 -1/8 (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 3)))))) (*.f64 1/16 (*.f64 re (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 5)))))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 im) (*.f64 re (+.f64 (*.f64 1/16 (*.f64 re (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 5)))))) (+.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) (*.f64 -1/8 (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 3)))))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 im 5))) (*.f64 1/16 (pow.f64 re 3))) (+.f64 (sqrt.f64 im) (*.f64 re (+.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 im))) (*.f64 -1/8 (*.f64 re (sqrt.f64 (/.f64 1 (pow.f64 im 3)))))))))) |
(*.f64 (sqrt.f64 2) (sqrt.f64 re)) |
(+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) im) (sqrt.f64 (/.f64 1 re))))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 1/2 (*.f64 (sqrt.f64 2) (*.f64 im (sqrt.f64 (/.f64 1 re)))))) |
(fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 2) (*.f64 (*.f64 im (sqrt.f64 (/.f64 1 re))) 1/2))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 re) (*.f64 1/2 (*.f64 im (sqrt.f64 (/.f64 1 re)))))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 im 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) im) (sqrt.f64 (/.f64 1 re)))))) |
(fma.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 im im)) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 1/2 (*.f64 (sqrt.f64 2) (*.f64 im (sqrt.f64 (/.f64 1 re))))))) |
(fma.f64 -1/8 (*.f64 (*.f64 im im) (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 2) (*.f64 (*.f64 im (sqrt.f64 (/.f64 1 re))) 1/2)))) |
(fma.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 -1/8 (*.f64 im im))) (*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 re) (*.f64 1/2 (*.f64 im (sqrt.f64 (/.f64 1 re))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 re) (*.f64 im (+.f64 (*.f64 -1/8 (*.f64 im (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (*.f64 1/2 (sqrt.f64 (/.f64 1 re))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 re) (*.f64 im (+.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) (*.f64 -1/8 (*.f64 im (sqrt.f64 (/.f64 1 (pow.f64 re 3))))))))) |
(+.f64 (*.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 im 2)) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (+.f64 (*.f64 1/16 (*.f64 (*.f64 (sqrt.f64 2) (pow.f64 im 3)) (sqrt.f64 (/.f64 1 (pow.f64 re 5))))) (+.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 re)) (*.f64 1/2 (*.f64 (*.f64 (sqrt.f64 2) im) (sqrt.f64 (/.f64 1 re))))))) |
(fma.f64 -1/8 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 im im)) (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) (fma.f64 1/16 (*.f64 (sqrt.f64 2) (*.f64 (pow.f64 im 3) (sqrt.f64 (/.f64 1 (pow.f64 re 5))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 1/2 (*.f64 (sqrt.f64 2) (*.f64 im (sqrt.f64 (/.f64 1 re)))))))) |
(fma.f64 -1/8 (*.f64 (*.f64 im im) (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (fma.f64 1/16 (*.f64 (sqrt.f64 2) (*.f64 (pow.f64 im 3) (sqrt.f64 (/.f64 1 (pow.f64 re 5))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 re) (*.f64 (sqrt.f64 2) (*.f64 (*.f64 im (sqrt.f64 (/.f64 1 re))) 1/2))))) |
(+.f64 (*.f64 (sqrt.f64 2) (+.f64 (sqrt.f64 re) (*.f64 1/2 (*.f64 im (sqrt.f64 (/.f64 1 re)))))) (*.f64 (sqrt.f64 2) (+.f64 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 3))) (*.f64 -1/8 (*.f64 im im))) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 5))) (*.f64 (pow.f64 im 3) 1/16))))) |
(*.f64 (sqrt.f64 2) (+.f64 (+.f64 (sqrt.f64 re) (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 re 5))) (*.f64 (pow.f64 im 3) 1/16))) (*.f64 im (+.f64 (*.f64 -1/8 (*.f64 im (sqrt.f64 (/.f64 1 (pow.f64 re 3))))) (*.f64 1/2 (sqrt.f64 (/.f64 1 re))))))) |
(*.f64 (sqrt.f64 2) (+.f64 (*.f64 (*.f64 im im) (+.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 (pow.f64 re 3)))) (*.f64 1/16 (*.f64 im (sqrt.f64 (/.f64 1 (pow.f64 re 5))))))) (+.f64 (sqrt.f64 re) (*.f64 1/2 (*.f64 im (sqrt.f64 (/.f64 1 re))))))) |
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| ✓ | 0.1b | (/.f64 im (sqrt.f64 re)) |
Compiled 17 to 7 computations (58.8% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 3.0ms | re | @ | -inf | (/.f64 im (sqrt.f64 re)) |
| 1.0ms | re | @ | -inf | (*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| 1.0ms | im | @ | inf | (/.f64 im (sqrt.f64 re)) |
| 1.0ms | im | @ | 0 | (/.f64 im (sqrt.f64 re)) |
| 1.0ms | re | @ | inf | (*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| 1× | batch-egg-rewrite |
| 719× | pow1_binary64 |
| 667× | add-log-exp_binary64 |
| 667× | log1p-expm1-u_binary64 |
| 667× | expm1-log1p-u_binary64 |
| 652× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 15 |
| 1 | 146 | 15 |
| 2 | 1807 | 15 |
| 1× | node limit |
| Inputs |
|---|
(/.f64 im (sqrt.f64 re)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (pow.f64 re -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (cbrt.f64 (/.f64 (*.f64 im im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (*.f64 im im) re)) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 im im)) (*.f64 (cbrt.f64 im) (pow.f64 re -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 im) (*.f64 (sqrt.f64 im) (pow.f64 re -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 im) (/.f64 1 (neg.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 re -1/2) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 im im)) 1) (/.f64 (cbrt.f64 im) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 im) 1) (/.f64 (sqrt.f64 im) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 re)) (/.f64 im (cbrt.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 im im)) (cbrt.f64 re)) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 im) (cbrt.f64 re)) (/.f64 (sqrt.f64 im) (cbrt.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 re 1/4)) (/.f64 im (pow.f64 re 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 im im)) (pow.f64 re 1/4)) (/.f64 (cbrt.f64 im) (pow.f64 re 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 re) im) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 im (neg.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (*.f64 im im) re))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 im 3) (pow.f64 re 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (sqrt.f64 re)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1/2 (/.f64 (sqrt.f64 re) im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (sqrt.f64 re) (*.f64 im 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im 1/2) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 im 1/2)) (neg.f64 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im 1/2) 1) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im 1/2) (cbrt.f64 re)) (cbrt.f64 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im 1/2) (pow.f64 re 1/4)) (pow.f64 re 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 im) 1/2) (neg.f64 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 (neg.f64 im)) (neg.f64 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/4 (/.f64 (*.f64 im im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/2) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (/.f64 im (sqrt.f64 re)) 1/2))))))) |
| 1× | egg-herbie |
| 5× | *-commutative_binary64 |
| 3× | associate-*r*_binary64 |
| 3× | associate-*l*_binary64 |
| 1× | 1-exp_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 252 |
| 1 | 15 | 252 |
| 2 | 22 | 252 |
| 3 | 24 | 252 |
| 1× | saturated |
| Inputs |
|---|
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
| Outputs |
|---|
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
Found 3 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| ✓ | 7.9b | (/.f64 (*.f64 im im) re) |
| ✓ | 18.9b | (sqrt.f64 (/.f64 (*.f64 im im) re)) |
Compiled 27 to 8 computations (70.4% saved)
18 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 2.0ms | im | @ | inf | (/.f64 (*.f64 im im) re) |
| 1.0ms | re | @ | -inf | (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| 1.0ms | re | @ | -inf | (sqrt.f64 (/.f64 (*.f64 im im) re)) |
| 0.0ms | im | @ | 0 | (sqrt.f64 (/.f64 (*.f64 im im) re)) |
| 0.0ms | re | @ | inf | (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| 1× | batch-egg-rewrite |
| 812× | pow1_binary64 |
| 754× | add-log-exp_binary64 |
| 754× | log1p-expm1-u_binary64 |
| 754× | expm1-log1p-u_binary64 |
| 735× | add-exp-log_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 28 |
| 1 | 167 | 22 |
| 2 | 2100 | 22 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (/.f64 (*.f64 im im) re)) |
(/.f64 (*.f64 im im) re) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (sqrt.f64 (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (pow.f64 (/.f64 1 re) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (/.f64 1 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (sqrt.f64 (/.f64 re (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (sqrt.f64 re) im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 im) (sqrt.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 im (neg.f64 im))) (sqrt.f64 (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 im) (neg.f64 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (sqrt.f64 re)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (/.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (/.f64 1 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (*.f64 im (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im im) (/.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (/.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (*.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 im 4)) (*.f64 (pow.f64 (cbrt.f64 im) 2) (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (*.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im (neg.f64 im)) (/.f64 1 (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 re) (*.f64 im im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 (/.f64 im (sqrt.f64 re)))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im 1) (/.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im re) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 im 4)) 1) (/.f64 (pow.f64 (cbrt.f64 im) 2) re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (pow.f64 (cbrt.f64 re) 2)) (/.f64 im (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 re) 2)) (/.f64 (*.f64 im im) (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 im 4)) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 re)) (/.f64 (*.f64 im im) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 im 4)) (sqrt.f64 re)) (/.f64 (pow.f64 (cbrt.f64 im) 2) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (cbrt.f64 (/.f64 im (/.f64 re im)))) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 re (*.f64 im im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 im im) (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (pow.f64 im 4) (*.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (/.f64 re im)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (*.f64 1/2 im) (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im 1/2) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 im) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (/.f64 im (/.f64 re im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (*.f64 1/2 im) (sqrt.f64 re)))))))) |
| 1× | egg-herbie |
| 685× | associate-*r/_binary64 |
| 640× | fma-neg_binary64 |
| 491× | associate-/l/_binary64 |
| 401× | associate-/r/_binary64 |
| 375× | distribute-rgt-in_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 16 | 428 |
| 1 | 33 | 428 |
| 2 | 65 | 428 |
| 3 | 121 | 428 |
| 4 | 287 | 428 |
| 5 | 887 | 428 |
| 6 | 1567 | 428 |
| 7 | 3764 | 428 |
| 8 | 4543 | 428 |
| 9 | 6034 | 428 |
| 10 | 7544 | 428 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
| Outputs |
|---|
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) im) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(neg.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 im)) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(neg.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 im)) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(neg.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 im)) |
(*.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(neg.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 im)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(/.f64 im (/.f64 re im)) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) im) 1/2) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im 1/2)) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) 1/2)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 -1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im -1/2)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 -1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im -1/2)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 -1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im -1/2)) |
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (*.f64 -1/2 (sqrt.f64 (/.f64 1 re))) im) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im -1/2)) |
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 7.9b | (/.f64 (*.f64 im (neg.f64 im)) re) |
| ✓ | 18.9b | (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re)) |
Compiled 33 to 9 computations (72.7% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | im | @ | 0 | (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re)) |
| 0.0ms | re | @ | inf | (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re)) |
| 0.0ms | re | @ | -inf | (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re)) |
| 0.0ms | re | @ | 0 | (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re)) |
| 0.0ms | im | @ | inf | (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re)) |
| 1× | batch-egg-rewrite |
| 649× | pow1_binary64 |
| 603× | add-log-exp_binary64 |
| 602× | log1p-expm1-u_binary64 |
| 602× | expm1-log1p-u_binary64 |
| 588× | add-exp-log_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 20 |
| 1 | 151 | 13 |
| 2 | 2249 | 13 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re)) |
(/.f64 (*.f64 im (neg.f64 im)) re) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (sqrt.f64 (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (pow.f64 (/.f64 1 re) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (/.f64 1 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (sqrt.f64 (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (neg.f64 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (sqrt.f64 (/.f64 re (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (sqrt.f64 re) im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 im) (sqrt.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (sqrt.f64 re)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (/.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (/.f64 1 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (*.f64 im (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (/.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im im) (/.f64 1 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im im) (/.f64 1 (neg.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (*.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 im) 2) 2) (*.f64 (pow.f64 (cbrt.f64 im) 2) (/.f64 1 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (*.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 re) (*.f64 im im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (sqrt.f64 (/.f64 im (sqrt.f64 re)))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im 1) (/.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im re) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (pow.f64 (cbrt.f64 im) 2) 2) 1) (/.f64 (pow.f64 (cbrt.f64 im) 2) re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (pow.f64 (cbrt.f64 re) 2)) (/.f64 im (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 re) 2)) (/.f64 (*.f64 im im) (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (pow.f64 (cbrt.f64 im) 2) 2) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 re)) (/.f64 (*.f64 im im) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (pow.f64 (cbrt.f64 im) 2) 2) (sqrt.f64 re)) (/.f64 (pow.f64 (cbrt.f64 im) 2) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im (sqrt.f64 re)) (cbrt.f64 (/.f64 im (/.f64 re im)))) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (/.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 re (*.f64 im im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 im (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 im (/.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 re 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (/.f64 re im)))))))) |
| 1× | egg-herbie |
| 977× | fma-def_binary64 |
| 502× | distribute-rgt-neg-in_binary64 |
| 453× | fma-neg_binary64 |
| 407× | distribute-lft-neg-in_binary64 |
| 257× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 15 | 392 |
| 1 | 33 | 392 |
| 2 | 77 | 392 |
| 3 | 178 | 392 |
| 4 | 437 | 392 |
| 5 | 1414 | 392 |
| 6 | 3101 | 392 |
| 7 | 5294 | 392 |
| 8 | 6968 | 392 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
| Outputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.1b | (/.f64 im (/.f64 re im)) |
| ✓ | 0.4b | (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3) |
| ✓ | 18.9b | (sqrt.f64 (*.f64 2 (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3))) |
| ✓ | 30.1b | (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) |
Compiled 81 to 43 computations (46.9% saved)
24 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 4.0ms | im | @ | 0 | (sqrt.f64 (*.f64 2 (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3))) |
| 2.0ms | re | @ | -inf | (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3) |
| 1.0ms | im | @ | 0 | (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3) |
| 1.0ms | re | @ | inf | (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3) |
| 1.0ms | im | @ | inf | (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3) |
| 1× | batch-egg-rewrite |
| 633× | log-prod_binary64 |
| 346× | pow-prod-down_binary64 |
| 312× | pow-unpow_binary64 |
| 301× | pow2_binary64 |
| 211× | expm1-udef_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 44 |
| 1 | 285 | 41 |
| 2 | 3276 | 41 |
| 1× | node limit |
| Inputs |
|---|
(cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) |
(sqrt.f64 (*.f64 2 (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3))) |
(pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3) |
(/.f64 im (/.f64 re im)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))) (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) (cbrt.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)))) (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 -1/2) (cbrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) (cbrt.f64 -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 1/6) (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (*.f64 -1/2 im)) (cbrt.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 3) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)))) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2))))) 3/2)))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/6) (cbrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/4) (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 2) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3/2 (log.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (*.f64 im (/.f64 im re)) -1) 1/6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 (*.f64 im (/.f64 im re)) -1))) 2)))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 -1/2) (*.f64 im (/.f64 im re)))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -1/2) (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -1/2) (*.f64 im (/.f64 im re))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -1/2) (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1/2 (*.f64 im (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (*.f64 (/.f64 im re) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im (/.f64 im re)) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2))) (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)))) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 -1/2) (*.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2)) (*.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 1/6) (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 5/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 im (/.f64 im re))) (*.f64 (sqrt.f64 (*.f64 im (/.f64 im re))) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) (sqrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im re) (*.f64 -1/2 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1/2 im) (/.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -1/2 re) (*.f64 im im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -1/2 (cbrt.f64 (pow.f64 (/.f64 im re) -2))) (/.f64 im (cbrt.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -1/2 (sqrt.f64 (/.f64 re im))) (/.f64 im (sqrt.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 -1/2 im) re) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 -1/2 im) 1) (/.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 -1/2 im) (neg.f64 re)) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 5/6) (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1/2 (cbrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2))) (cbrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1/2 (sqrt.f64 (*.f64 im (/.f64 im re)))) (sqrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1/2 (/.f64 im re)) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2))) 1) (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))) 2) (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2))) (cbrt.f64 -1/2)) (cbrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1/2 (/.f64 re (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 re im) (*.f64 -1/2 im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1/2 im) (/.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 -1/2 im)) (neg.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -1/2 im) re) (pow.f64 im -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -1/2 im) 1) (/.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -1/2 im) (cbrt.f64 (pow.f64 (/.f64 im re) -2))) (cbrt.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -1/2 im) (sqrt.f64 (/.f64 re im))) (sqrt.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 im) -1/2) (neg.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1/2 (neg.f64 im)) (neg.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/4 (pow.f64 (*.f64 im (/.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -1/2) (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2/3 (log.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 2)))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 im (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 im) (/.f64 im re))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 im) (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (/.f64 im re)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 im) (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 im (/.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (/.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 im (/.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 im (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) (cbrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2)) (cbrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 im im)) (*.f64 (cbrt.f64 im) (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 im (/.f64 im re))) (sqrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 im) (*.f64 (sqrt.f64 im) (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 im) (/.f64 1 (neg.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im re) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 re) (*.f64 im im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 im im)) re) (*.f64 (cbrt.f64 im) im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 im) re) (pow.f64 im 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 im im)) 1) (/.f64 (cbrt.f64 im) (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 im) 1) (/.f64 (sqrt.f64 im) (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 re im)) -2) (/.f64 im (cbrt.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 im im)) (cbrt.f64 (pow.f64 (/.f64 im re) -2))) (cbrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 im) (cbrt.f64 (pow.f64 (/.f64 im re) -2))) (/.f64 (sqrt.f64 im) (cbrt.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 re im) -1/2) (/.f64 im (sqrt.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 im im)) (sqrt.f64 (/.f64 re im))) (/.f64 (cbrt.f64 im) (sqrt.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im 1) (/.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (neg.f64 re)) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im re) 1) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im re) (cbrt.f64 (*.f64 im im))) (cbrt.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 im re) (sqrt.f64 im)) (sqrt.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (/.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 im (/.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 im (/.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 re (*.f64 im im)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 im 3) (pow.f64 (/.f64 im re) -3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 re (*.f64 im im)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 im (neg.f64 (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 im) (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 im 3) (pow.f64 (/.f64 im re) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 im (/.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 im (/.f64 im re)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 im (/.f64 im re)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 im (/.f64 im re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 re (*.f64 im im))) -1)))))) |
| 1× | egg-herbie |
| 780× | unswap-sqr_binary64 |
| 591× | associate-/l/_binary64 |
| 537× | associate-*r/_binary64 |
| 505× | associate-*l/_binary64 |
| 504× | fma-def_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 17 | 404 |
| 1 | 34 | 404 |
| 2 | 87 | 404 |
| 3 | 301 | 404 |
| 4 | 776 | 404 |
| 5 | 1298 | 404 |
| 6 | 2057 | 404 |
| 7 | 4251 | 404 |
| 8 | 6684 | 404 |
| 9 | 7994 | 404 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (pow.f64 im 2) re) |
| Outputs |
|---|
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (sqrt.f64 -1/2))) im) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) im))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (neg.f64 (*.f64 (sqrt.f64 -1/2) im)) (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (neg.f64 im)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (neg.f64 (sqrt.f64 (/.f64 1 re)))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 2))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (neg.f64 (*.f64 (sqrt.f64 -1/2) im)) (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (neg.f64 im)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (neg.f64 (sqrt.f64 (/.f64 1 re)))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 2))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (neg.f64 (*.f64 (sqrt.f64 -1/2) im)) (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (neg.f64 im)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (neg.f64 (sqrt.f64 (/.f64 1 re)))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 2))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 -1/2) im) (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 2) (*.f64 (sqrt.f64 -1/2) im)) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (neg.f64 (*.f64 (sqrt.f64 -1/2) im)) (*.f64 (sqrt.f64 2) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 (sqrt.f64 2) (neg.f64 im)))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 2) (neg.f64 (sqrt.f64 (/.f64 1 re)))))) |
(*.f64 (sqrt.f64 -1/2) (*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 2))))) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
(/.f64 (pow.f64 im 2) re) |
(/.f64 (*.f64 im im) re) |
(*.f64 (/.f64 im re) im) |
(*.f64 im (/.f64 im re)) |
Compiled 6073 to 3660 computations (39.7% saved)
15 alts after pruning (7 fresh and 8 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 418 | 6 | 424 |
| Fresh | 3 | 1 | 4 |
| Picked | 1 | 0 | 1 |
| Done | 1 | 8 | 9 |
| Total | 423 | 15 | 438 |
| Status | Error | Program |
|---|---|---|
| 51.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 3) 3)))) | |
| ✓ | 47.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
| ✓ | 15.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
| ✓ | 45.8b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
| 50.8b | (*.f64 1/2 (pow.f64 (cbrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 3/2)) | |
| ▶ | 47.9b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
| ✓ | 48.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
| ✓ | 63.0b | (*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| ✓ | 15.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) |
| ▶ | 63.0b | (/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
| ▶ | 50.7b | (*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) |
| ✓ | 45.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
| ✓ | 60.7b | (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| ▶ | 50.7b | (*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
| ▶ | 52.8b | (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
Compiled 247 to 196 computations (20.6% saved)
Compiled 23 to 15 computations (34.8% saved)
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.1b | (/.f64 (sqrt.f64 re) im) |
| ✓ | 0.2b | (/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
Compiled 17 to 7 computations (58.8% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | re | @ | 0 | (/.f64 (sqrt.f64 re) im) |
| 1.0ms | re | @ | -inf | (/.f64 (sqrt.f64 re) im) |
| 1.0ms | im | @ | 0 | (/.f64 (sqrt.f64 re) im) |
| 0.0ms | re | @ | inf | (/.f64 (sqrt.f64 re) im) |
| 0.0ms | re | @ | 0 | (/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
| 1× | batch-egg-rewrite |
| 765× | pow1_binary64 |
| 712× | add-log-exp_binary64 |
| 712× | log1p-expm1-u_binary64 |
| 712× | expm1-log1p-u_binary64 |
| 696× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 15 |
| 1 | 153 | 15 |
| 2 | 1965 | 15 |
| 1× | node limit |
| Inputs |
|---|
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(/.f64 (sqrt.f64 re) im) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (/.f64 1/2 (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 1/2 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))) (cbrt.f64 (/.f64 1/4 (/.f64 re (*.f64 im im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 1/4 (/.f64 re (*.f64 im im)))) (cbrt.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))) (sqrt.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1/2 (/.f64 1 (/.f64 (neg.f64 (sqrt.f64 re)) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/2 (sqrt.f64 re)) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/2 (neg.f64 (sqrt.f64 re))) (neg.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1/2 (sqrt.f64 re)) 1) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1/2 (sqrt.f64 re)) (cbrt.f64 (*.f64 im im))) (cbrt.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1/2 (sqrt.f64 re)) (sqrt.f64 im)) (sqrt.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 (sqrt.f64 re) im) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 1/4 (/.f64 re (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/2) (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/2 (/.f64 im (sqrt.f64 re))))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (sqrt.f64 re) im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 re) (/.f64 1 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 re) im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (sqrt.f64 re) im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (sqrt.f64 re) im)) (cbrt.f64 (/.f64 re (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 re (*.f64 im im))) (cbrt.f64 (/.f64 (sqrt.f64 re) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 re) (*.f64 (cbrt.f64 (sqrt.f64 re)) (/.f64 1 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (sqrt.f64 re) im)) (sqrt.f64 (/.f64 (sqrt.f64 re) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 re 1/4) (*.f64 (pow.f64 re 1/4) (/.f64 1 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sqrt.f64 re)) (/.f64 1 (neg.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 im) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 re) 1) (/.f64 (cbrt.f64 (sqrt.f64 re)) im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 re 1/4) 1) (/.f64 (pow.f64 re 1/4) im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (*.f64 im im))) (/.f64 (sqrt.f64 re) (cbrt.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 re) (cbrt.f64 (*.f64 im im))) (cbrt.f64 (/.f64 (sqrt.f64 re) im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 re 1/4) (cbrt.f64 (*.f64 im im))) (/.f64 (pow.f64 re 1/4) (cbrt.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 im)) (/.f64 (sqrt.f64 re) (sqrt.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 re) (sqrt.f64 im)) (/.f64 (cbrt.f64 (sqrt.f64 re)) (sqrt.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 re) im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (sqrt.f64 re) im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (sqrt.f64 re) im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (sqrt.f64 re) im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (sqrt.f64 re) (neg.f64 im)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 re (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (sqrt.f64 re) im)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (sqrt.f64 re) im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 re 3/2) (pow.f64 im 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (sqrt.f64 re) im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (sqrt.f64 re) im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (sqrt.f64 re) im))))))) |
| 1× | egg-herbie |
| 20× | associate-/l*_binary64 |
| 16× | associate-/l/_binary64 |
| 10× | associate-/r/_binary64 |
| 9× | associate-/r*_binary64 |
| 7× | *-commutative_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 12 | 252 |
| 1 | 21 | 216 |
| 2 | 33 | 216 |
| 3 | 44 | 216 |
| 4 | 48 | 216 |
| 5 | 64 | 216 |
| 6 | 113 | 216 |
| 7 | 126 | 216 |
| 1× | saturated |
| Inputs |
|---|
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
| Outputs |
|---|
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 re)) im)) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
(*.f64 (sqrt.f64 re) (/.f64 1 im)) |
(/.f64 (sqrt.f64 re) im) |
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.2b | (/.f64 im (sqrt.f64 (neg.f64 re))) |
Compiled 22 to 8 computations (63.6% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | im | @ | 0 | (/.f64 im (sqrt.f64 (neg.f64 re))) |
| 1.0ms | im | @ | inf | (/.f64 im (sqrt.f64 (neg.f64 re))) |
| 1.0ms | re | @ | 0 | (/.f64 im (sqrt.f64 (neg.f64 re))) |
| 1.0ms | re | @ | inf | (/.f64 im (sqrt.f64 (neg.f64 re))) |
| 1.0ms | im | @ | -inf | (/.f64 im (sqrt.f64 (neg.f64 re))) |
| 1× | batch-egg-rewrite |
| 559× | pow1_binary64 |
| 520× | add-log-exp_binary64 |
| 519× | log1p-expm1-u_binary64 |
| 519× | expm1-log1p-u_binary64 |
| 507× | add-exp-log_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 6 | 8 |
| 1 | 127 | 6 |
| 2 | 1695 | 6 |
| 1× | node limit |
| Inputs |
|---|
(/.f64 im (sqrt.f64 (neg.f64 re))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 im (pow.f64 re -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (cbrt.f64 (/.f64 (*.f64 im im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (*.f64 im im) re)) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 im) 2) (*.f64 (cbrt.f64 im) (pow.f64 re -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 im) (*.f64 (sqrt.f64 im) (pow.f64 re -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 im) (/.f64 1 (neg.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 re -1/2) im)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 im) 2) 1) (/.f64 (cbrt.f64 im) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 im) 1) (/.f64 (sqrt.f64 im) (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 re)) (/.f64 im (cbrt.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 im) 2) (cbrt.f64 re)) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 im) (cbrt.f64 re)) (/.f64 (sqrt.f64 im) (cbrt.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 re 1/4)) (/.f64 im (pow.f64 re 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 im) 2) (pow.f64 re 1/4)) (/.f64 (cbrt.f64 im) (pow.f64 re 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 re) im) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 im (neg.f64 (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (*.f64 im im) re))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (sqrt.f64 re)))))))) |
| 1× | egg-herbie |
| 3× | *-commutative_binary64 |
| 2× | associate-/l*_binary64 |
| 1× | associate-*r/_binary64 |
| 1× | associate-*l/_binary64 |
| 1× | associate-/r/_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 168 |
| 1 | 15 | 168 |
| 2 | 19 | 168 |
| 3 | 21 | 168 |
| 4 | 23 | 168 |
| 5 | 24 | 168 |
| 1× | saturated |
| Inputs |
|---|
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
| Outputs |
|---|
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
(*.f64 (/.f64 im (sqrt.f64 -1)) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (/.f64 (sqrt.f64 (/.f64 1 re)) (sqrt.f64 -1))) |
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.1b | (/.f64 im (/.f64 re im)) | |
| ✓ | 18.9b | (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im)))) |
Compiled 35 to 9 computations (74.3% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | re | @ | inf | (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im)))) |
| 0.0ms | im | @ | 0 | (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im)))) |
| 0.0ms | re | @ | 0 | (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im)))) |
| 0.0ms | re | @ | -inf | (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im)))) |
| 0.0ms | im | @ | inf | (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im)))) |
| 1× | batch-egg-rewrite |
| 747× | pow1_binary64 |
| 696× | add-log-exp_binary64 |
| 695× | log1p-expm1-u_binary64 |
| 695× | expm1-log1p-u_binary64 |
| 679× | add-exp-log_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 11 |
| 1 | 154 | 9 |
| 2 | 2210 | 9 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im)))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (/.f64 im (/.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (/.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) (cbrt.f64 (sqrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (/.f64 im (/.f64 re im)))) (cbrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 im) (sqrt.f64 (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 im (/.f64 re im)) 1/4) (pow.f64 (/.f64 im (/.f64 re im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im re)) (sqrt.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (/.f64 im (/.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 -1 1/2) (sqrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (sqrt.f64 (/.f64 re (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 im) (sqrt.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 (neg.f64 re) im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (/.f64 re im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 im (/.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (/.f64 im (/.f64 re im)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (/.f64 re im)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (/.f64 im (/.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (/.f64 re im)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (/.f64 im (/.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (/.f64 im (/.f64 re im))))))))) |
| 1× | egg-herbie |
| 244× | fma-def_binary64 |
| 21× | sub-neg_binary64 |
| 20× | distribute-rgt-in_binary64 |
| 18× | distribute-lft-in_binary64 |
| 18× | unsub-neg_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 11 | 176 |
| 1 | 21 | 176 |
| 2 | 51 | 176 |
| 3 | 105 | 176 |
| 4 | 113 | 176 |
| 5 | 161 | 176 |
| 6 | 233 | 176 |
| 7 | 270 | 176 |
| 8 | 312 | 176 |
| 9 | 481 | 176 |
| 10 | 509 | 176 |
| 1× | saturated |
| Inputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
| Outputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 im (*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (*.f64 (sqrt.f64 -1) im))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (*.f64 (sqrt.f64 -1) im))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (*.f64 (sqrt.f64 -1) im))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (*.f64 (sqrt.f64 -1) im))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.1b | (*.f64 im (/.f64 (neg.f64 im) re)) |
| ✓ | 18.9b | (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re))) |
Compiled 33 to 9 computations (72.7% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | re | @ | inf | (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re))) |
| 0.0ms | im | @ | 0 | (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re))) |
| 0.0ms | re | @ | -inf | (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re))) |
| 0.0ms | re | @ | 0 | (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re))) |
| 0.0ms | re | @ | 0 | (*.f64 im (/.f64 (neg.f64 im) re)) |
| 1× | batch-egg-rewrite |
| 663× | pow1_binary64 |
| 615× | add-log-exp_binary64 |
| 614× | log1p-expm1-u_binary64 |
| 614× | expm1-log1p-u_binary64 |
| 600× | add-exp-log_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 20 |
| 1 | 152 | 13 |
| 2 | 2175 | 13 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re))) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 im (sqrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) (cbrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) (cbrt.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im re)) (sqrt.f64 im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 im) (sqrt.f64 (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) (sqrt.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 im (/.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (/.f64 im re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 im (sqrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 im (sqrt.f64 re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 im (sqrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 im (sqrt.f64 re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 im (sqrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 im (sqrt.f64 re)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 im (/.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 im (/.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 re (*.f64 im im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im im) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 im im) (neg.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im im) 1) re)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im im) (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 im im) (sqrt.f64 re)) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 im (/.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 im (sqrt.f64 re)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 im (/.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 im (/.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 im (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 im) (/.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 im (/.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 im 3) (pow.f64 (/.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 im re) 3) (pow.f64 im 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 im (/.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 im (/.f64 im re)))))))) |
| 1× | egg-herbie |
| 977× | fma-def_binary64 |
| 502× | distribute-rgt-neg-in_binary64 |
| 453× | fma-neg_binary64 |
| 407× | distribute-lft-neg-in_binary64 |
| 257× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 15 | 392 |
| 1 | 33 | 392 |
| 2 | 77 | 392 |
| 3 | 178 | 392 |
| 4 | 437 | 392 |
| 5 | 1414 | 392 |
| 6 | 3101 | 392 |
| 7 | 5294 | 392 |
| 8 | 6968 | 392 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
| Outputs |
|---|
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re)))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (*.f64 (*.f64 (sqrt.f64 -1) im) (sqrt.f64 (/.f64 1 re)))) |
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 im (sqrt.f64 (/.f64 1 re))))) |
(*.f64 (*.f64 (sqrt.f64 -1) im) (neg.f64 (sqrt.f64 (/.f64 1 re)))) |
(*.f64 (sqrt.f64 (/.f64 1 re)) (*.f64 im (neg.f64 (sqrt.f64 -1)))) |
(*.f64 im (*.f64 (sqrt.f64 (/.f64 1 re)) (neg.f64 (sqrt.f64 -1)))) |
(*.f64 (sqrt.f64 -1) (*.f64 im (neg.f64 (sqrt.f64 (/.f64 1 re))))) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
(*.f64 -1 (/.f64 (pow.f64 im 2) re)) |
(neg.f64 (/.f64 (*.f64 im im) re)) |
(neg.f64 (/.f64 im (/.f64 re im))) |
(*.f64 (/.f64 im re) (neg.f64 im)) |
(*.f64 (neg.f64 im) (/.f64 im re)) |
(*.f64 im (/.f64 (neg.f64 im) re)) |
Compiled 2536 to 1278 computations (49.6% saved)
17 alts after pruning (4 fresh and 13 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 224 | 2 | 226 |
| Fresh | 0 | 2 | 2 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 12 | 12 |
| Total | 224 | 17 | 241 |
| Status | Error | Program |
|---|---|---|
| 51.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 3) 3)))) | |
| ✓ | 47.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
| ✓ | 15.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
| 55.6b | (*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) | |
| 63.0b | (*.f64 (/.f64 1/2 (sqrt.f64 re)) im) | |
| ✓ | 45.8b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
| 50.8b | (*.f64 1/2 (pow.f64 (cbrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 3/2)) | |
| ✓ | 47.9b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
| ✓ | 48.0b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
| ✓ | 63.0b | (*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| ✓ | 15.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) |
| ✓ | 63.0b | (/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
| ✓ | 50.7b | (*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) |
| ✓ | 45.2b | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
| ✓ | 60.7b | (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| ✓ | 50.7b | (*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
| ✓ | 52.8b | (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
Compiled 185 to 146 computations (21.1% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (*.f64 im im) (/.f64 -1/2 re))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (*.f64 (/.f64 im (/.f64 re im)) 1))))) |
(*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
(*.f64 1/2 (pow.f64 (cbrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 3/2)) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (*.f64 (/.f64 im (pow.f64 (cbrt.f64 re) 2)) (/.f64 im (cbrt.f64 re))))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 im (/.f64 im re)) -1/2 (*.f64 (pow.f64 im 4) (/.f64 1/8 (pow.f64 re 3))))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 -1/2 (*.f64 im (/.f64 im re))))) 3) 3)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
8 calls:
| 66.0ms | re |
| 21.0ms | (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re) |
| 19.0ms | im |
| 19.0ms | (*.f64 im im) |
| 19.0ms | (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)) |
| Error | Segments | Branch |
|---|---|---|
| 9.5b | 4 | re |
| 15.0b | 1 | im |
| 11.0b | 2 | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
| 11.0b | 2 | (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))) |
| 10.9b | 2 | (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)) |
| 10.9b | 2 | (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re) |
| 15.0b | 1 | (*.f64 im im) |
| 15.0b | 1 | (*.f64 im im) |
Compiled 402 to 260 computations (35.3% saved)
| 3× | binary-search |
| Time | Left | Right |
|---|---|---|
| 62.0ms | -1.9492330657275904e+24 | -1.6479338164941795e+24 |
| 73.0ms | -9.421138506343906e+85 | -2.9584204028463228e+75 |
| 88.0ms | -1.2176412365628154e+156 | -4.919036102653006e+155 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (*.f64 im im) (/.f64 -1/2 re))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (*.f64 (/.f64 im (/.f64 re im)) 1))))) |
(*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
(*.f64 1/2 (pow.f64 (cbrt.f64 (*.f64 (*.f64 im (/.f64 im re)) -1)) 3/2)) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 im (/.f64 re im)))) 3)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) |
8 calls:
| 51.0ms | re |
| 18.0ms | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
| 17.0ms | (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re) |
| 16.0ms | (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)) |
| 16.0ms | (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))) |
| Error | Segments | Branch |
|---|---|---|
| 9.5b | 4 | re |
| 15.0b | 1 | im |
| 11.0b | 2 | (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))) |
| 11.0b | 2 | (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))) |
| 10.9b | 2 | (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)) |
| 10.9b | 2 | (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re) |
| 15.0b | 1 | (*.f64 im im) |
| 15.0b | 1 | (*.f64 im im) |
Compiled 302 to 197 computations (34.8% saved)
| 3× | binary-search |
| Time | Left | Right |
|---|---|---|
| 62.0ms | -1.9492330657275904e+24 | -1.6479338164941795e+24 |
| 69.0ms | -9.421138506343906e+85 | -2.9584204028463228e+75 |
| 89.0ms | -1.2176412365628154e+156 | -4.919036102653006e+155 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (*.f64 im im) (/.f64 -1/2 re))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (*.f64 (/.f64 im (/.f64 re im)) 1))))) |
(*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
(*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
4 calls:
| 144.0ms | im |
| 113.0ms | re |
| 65.0ms | (*.f64 im im) |
| 58.0ms | (*.f64 im im) |
| Error | Segments | Branch |
|---|---|---|
| 24.8b | 6 | re |
| 23.0b | 5 | im |
| 33.7b | 10 | (*.f64 im im) |
| 33.7b | 10 | (*.f64 im im) |
Compiled 168 to 107 computations (36.3% saved)
| 4× | binary-search |
| Time | Left | Right |
|---|---|---|
| 46.0ms | 1.2141225401825247e-91 | 7.28670708012768e-87 |
| 57.0ms | 1.569306940882843e-192 | 7.215496382990134e-191 |
| 67.0ms | -1.747329922203876e-249 | -6.679975892530906e-254 |
| 72.0ms | -2.8478078209064497e-71 | -1.8477371488334155e-84 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im (neg.f64 im)) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (*.f64 im im) (/.f64 -1/2 re))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (*.f64 (/.f64 im (/.f64 re im)) 1))))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
4 calls:
| 103.0ms | re |
| 82.0ms | im |
| 74.0ms | (*.f64 im im) |
| 72.0ms | (*.f64 im im) |
| Error | Segments | Branch |
|---|---|---|
| 24.8b | 6 | re |
| 23.1b | 6 | im |
| 33.7b | 10 | (*.f64 im im) |
| 33.7b | 10 | (*.f64 im im) |
Compiled 158 to 102 computations (35.4% saved)
| 5× | binary-search |
| Time | Left | Right |
|---|---|---|
| 52.0ms | 1.2141225401825247e-91 | 7.28670708012768e-87 |
| 92.0ms | 1.569306940882843e-192 | 7.215496382990134e-191 |
| 117.0ms | -1.6065140864874557e-254 | -8.490561647399961e-255 |
| 109.0ms | -1.8575299460274046e-185 | -1.2333743654787731e-185 |
| 80.0ms | -2.1822495746485088e-69 | -2.8508828647263084e-70 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
4 calls:
| 52.0ms | im |
| 48.0ms | (*.f64 im im) |
| 45.0ms | (*.f64 im im) |
| 32.0ms | re |
| Error | Segments | Branch |
|---|---|---|
| 26.0b | 5 | re |
| 23.2b | 7 | im |
| 33.9b | 10 | (*.f64 im im) |
| 33.9b | 10 | (*.f64 im im) |
Compiled 96 to 67 computations (30.2% saved)
| 6× | binary-search |
| Time | Left | Right |
|---|---|---|
| 46.0ms | 1.2141225401825247e-91 | 7.28670708012768e-87 |
| 54.0ms | 1.569306940882843e-192 | 7.215496382990134e-191 |
| 62.0ms | -1.6065140864874557e-254 | -8.490561647399961e-255 |
| 60.0ms | -8.355528269550826e-227 | -2.881678362736766e-228 |
| 55.0ms | -1.8575299460274046e-185 | -1.2333743654787731e-185 |
| 44.0ms | -2.1822495746485088e-69 | -2.8508828647263084e-70 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
4 calls:
| 45.0ms | (*.f64 im im) |
| 41.0ms | (*.f64 im im) |
| 31.0ms | re |
| 30.0ms | im |
| Error | Segments | Branch |
|---|---|---|
| 26.3b | 5 | re |
| 24.4b | 4 | im |
| 34.2b | 10 | (*.f64 im im) |
| 34.2b | 10 | (*.f64 im im) |
Compiled 88 to 61 computations (30.7% saved)
| 3× | binary-search |
| Time | Left | Right |
|---|---|---|
| 48.0ms | 1.2141225401825247e-91 | 7.28670708012768e-87 |
| 58.0ms | 1.569306940882843e-192 | 7.215496382990134e-191 |
| 48.0ms | -2.1822495746485088e-69 | -2.8508828647263084e-70 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) |
3 calls:
| 44.0ms | im |
| 31.0ms | re |
| 24.0ms | (*.f64 im im) |
| Error | Segments | Branch |
|---|---|---|
| 33.9b | 5 | re |
| 26.5b | 5 | im |
| 39.9b | 5 | (*.f64 im im) |
Compiled 67 to 46 computations (31.3% saved)
| 4× | binary-search |
| Time | Left | Right |
|---|---|---|
| 48.0ms | 1.2141225401825247e-91 | 7.28670708012768e-87 |
| 59.0ms | 1.569306940882843e-192 | 7.215496382990134e-191 |
| 64.0ms | 6.401439717272362e-270 | 5.665224543005449e-264 |
| 65.0ms | -8.355528269550826e-227 | -2.881678362736766e-228 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
3 calls:
| 29.0ms | re |
| 22.0ms | (*.f64 im im) |
| 19.0ms | im |
| Error | Segments | Branch |
|---|---|---|
| 35.9b | 6 | re |
| 27.8b | 3 | im |
| 40.5b | 5 | (*.f64 im im) |
Compiled 59 to 40 computations (32.2% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 48.0ms | 1.2141225401825247e-91 | 7.28670708012768e-87 |
| 61.0ms | -8.355528269550826e-227 | -2.881678362736766e-228 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
| Outputs |
|---|
(*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
2 calls:
| 13.0ms | im |
| 8.0ms | re |
| Error | Segments | Branch |
|---|---|---|
| 40.5b | 2 | re |
| 43.2b | 2 | im |
Compiled 39 to 26 computations (33.3% saved)
| 1× | binary-search |
| Time | Left | Right |
|---|---|---|
| 39.0ms | -7.52858483313813e-105 | -6.5138126418375575e-115 |
Compiled 22 to 16 computations (27.3% saved)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
| Outputs |
|---|
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
2 calls:
| 5.0ms | re |
| 4.0ms | im |
| Error | Segments | Branch |
|---|---|---|
| 47.2b | 1 | re |
| 47.2b | 1 | im |
Compiled 32 to 21 computations (34.4% saved)
Total -0.0b remaining (-0%)
Threshold costs -0.0b (-0%)
| Inputs |
|---|
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 1/2 (/.f64 im (sqrt.f64 re))) |
| Outputs |
|---|
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
2 calls:
| 4.0ms | im |
| 4.0ms | re |
| Error | Segments | Branch |
|---|---|---|
| 63.0b | 1 | re |
| 63.0b | 1 | im |
Compiled 26 to 16 computations (38.5% saved)
| 1× | egg-herbie |
| 29× | *-commutative_binary64 |
| 9× | +-commutative_binary64 |
| 7× | sub-neg_binary64 |
| 7× | neg-sub0_binary64 |
| 7× | neg-mul-1_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 110 | 700 |
| 1 | 147 | 692 |
| 2 | 166 | 692 |
| 3 | 179 | 692 |
| 4 | 183 | 692 |
| 5 | 184 | 692 |
| 1× | fuel |
| 1× | saturated |
| Inputs |
|---|
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 im -14162810021662976/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -7042731033249017/4030567406735727282351225165683873035574701889313671280883489296162978382543372035785043761349923613698382530160958318167742519832631573007587730243400112738864034149162331269597866193210040596412843573823632724030670381872189039145190406026970187961498554846937088) (*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) |
(if (<=.f64 im -1085283421118076672/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -363992898065595456/19595533242629369747791401605606558418088927130487463844933662202465281465266200982457647235235528838735010358900495684567911298014908298340170885513171109743249504533143507682501017145381579984990109696) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im -8487126060837320/528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336) (*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im))))))))) |
(if (<=.f64 im -1085283421118076672/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -363992898065595456/19595533242629369747791401605606558418088927130487463844933662202465281465266200982457647235235528838735010358900495684567911298014908298340170885513171109743249504533143507682501017145381579984990109696) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im -8487126060837320/528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336) (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))))) |
(if (<=.f64 im -1085283421118076672/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im))))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im 7615239278548193/1189613526782226450238449998519920448105008161327515567244617487452752525728323498836134651596925080471838979032154378440363668196435924566232664464881915700626376672357967899154149127867438189496191356625881149764854198965502304070525679152278926466409636084363315130259012279051747328) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 im))))) |
(if (<=.f64 re -4860171816884471/645562469521727147413979793000752968582426448207305878207664839135161905504210298657411338320034457858975792993186873344) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 im)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
| Outputs |
|---|
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (neg.f64 (*.f64 im (/.f64 im re))))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (*.f64 (neg.f64 im) (/.f64 im re)))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (*.f64 im (/.f64 (neg.f64 im) re)))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (neg.f64 (*.f64 im (/.f64 im re))))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 re -1217641236562815401595256773475026562987170811998275424256450891576227685132801148545820897681184721798593283698496999919166503835991681503718921631382372352) (*.f64 1/2 (sqrt.f64 (*.f64 (neg.f64 im) (/.f64 im re)))) (if (<=.f64 re -94211385063439058281509809640229311284568639086894510686356676893097486272214660546560) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (if (<=.f64 re -1949233065727590402097152) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) |
(if (<=.f64 im -14162810021662976/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -7042731033249017/4030567406735727282351225165683873035574701889313671280883489296162978382543372035785043761349923613698382530160958318167742519832631573007587730243400112738864034149162331269597866193210040596412843573823632724030670381872189039145190406026970187961498554846937088) (*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) |
(if (<=.f64 im -55323476647121/1942668892225729070919461906823518906642406839052139521251812409738904285205208498176) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -7042731033249017/4030567406735727282351225165683873035574701889313671280883489296162978382543372035785043761349923613698382530160958318167742519832631573007587730243400112738864034149162331269597866193210040596412843573823632724030670381872189039145190406026970187961498554846937088) (*.f64 1/2 (/.f64 (sqrt.f64 (neg.f64 im)) (sqrt.f64 (/.f64 re im)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) |
(if (<=.f64 im -1085283421118076672/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -363992898065595456/19595533242629369747791401605606558418088927130487463844933662202465281465266200982457647235235528838735010358900495684567911298014908298340170885513171109743249504533143507682501017145381579984990109696) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im -8487126060837320/528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336) (*.f64 1/2 (sqrt.f64 (neg.f64 (/.f64 im (/.f64 re im))))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im))))))))) |
(if (<=.f64 im -4239388363742487/1942668892225729070919461906823518906642406839052139521251812409738904285205208498176) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -5687389032274929/306180206916083902309240650087602475282639486413866622577088471913520022894784390350900738050555138105234536857820245071373614031482942161565170086143298589738273508330367307539078392896587187265470464) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im -1060890757604665/66036816391958155794042473114564575814855915754515190265995088628334237819590607434302156985957148486834299374157141084860293444937835692156317372307867447113548335499875635521091439709553305131628029113526398550518503536593945217354799612345879559561192322612217249792) (*.f64 1/2 (sqrt.f64 (/.f64 (neg.f64 im) (/.f64 re im)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im))))))))) |
(if (<=.f64 im -1085283421118076672/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -363992898065595456/19595533242629369747791401605606558418088927130487463844933662202465281465266200982457647235235528838735010358900495684567911298014908298340170885513171109743249504533143507682501017145381579984990109696) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im -8487126060837320/528294531135665246352339784916516606518847326036121522127960709026673902556724859474417255887657187894674394993257128678882347559502685537250538978462939576908386683999005084168731517676426441053024232908211188404148028292751561738838396898767036476489538580897737998336) (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))))) |
(if (<=.f64 im -4239388363742487/1942668892225729070919461906823518906642406839052139521251812409738904285205208498176) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -5687389032274929/306180206916083902309240650087602475282639486413866622577088471913520022894784390350900738050555138105234536857820245071373614031482942161565170086143298589738273508330367307539078392896587187265470464) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 (neg.f64 im) 2))) (if (<=.f64 im -1060890757604665/66036816391958155794042473114564575814855915754515190265995088628334237819590607434302156985957148486834299374157141084860293444937835692156317372307867447113548335499875635521091439709553305131628029113526398550518503536593945217354799612345879559561192322612217249792) (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))))) |
(if (<=.f64 im -4239388363742487/1942668892225729070919461906823518906642406839052139521251812409738904285205208498176) (*.f64 1/2 (sqrt.f64 (*.f64 2 (-.f64 re im)))) (if (<=.f64 im -5687389032274929/306180206916083902309240650087602475282639486413866622577088471913520022894784390350900738050555138105234536857820245071373614031482942161565170086143298589738273508330367307539078392896587187265470464) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 im -2))) (if (<=.f64 im -1060890757604665/66036816391958155794042473114564575814855915754515190265995088628334237819590607434302156985957148486834299374157141084860293444937835692156317372307867447113548335499875635521091439709553305131628029113526398550518503536593945217354799612345879559561192322612217249792) (*.f64 1/2 (sqrt.f64 (/.f64 (*.f64 im im) re))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))))) |
(if (<=.f64 im -1085283421118076672/497323236409786642155382248146820840100456150797347717440463976893159497012533375533056) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im))))))) |
(if (<=.f64 im -4239388363742487/1942668892225729070919461906823518906642406839052139521251812409738904285205208498176) (*.f64 1/2 (sqrt.f64 (*.f64 (neg.f64 im) 2))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im))))))) |
(if (<=.f64 im -4239388363742487/1942668892225729070919461906823518906642406839052139521251812409738904285205208498176) (*.f64 1/2 (sqrt.f64 (*.f64 im -2))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re 2)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im))))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im 7615239278548193/1189613526782226450238449998519920448105008161327515567244617487452752525728323498836134651596925080471838979032154378440363668196435924566232664464881915700626376672357967899154149127867438189496191356625881149764854198965502304070525679152278926466409636084363315130259012279051747328) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 (neg.f64 im) 2))) (if (<=.f64 im 7615239278548193/1189613526782226450238449998519920448105008161327515567244617487452752525728323498836134651596925080471838979032154378440363668196435924566232664464881915700626376672357967899154149127867438189496191356625881149764854198965502304070525679152278926466409636084363315130259012279051747328) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 im -2))) (if (<=.f64 im 7615239278548193/1189613526782226450238449998519920448105008161327515567244617487452752525728323498836134651596925080471838979032154378440363668196435924566232664464881915700626376672357967899154149127867438189496191356625881149764854198965502304070525679152278926466409636084363315130259012279051747328) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (if (<=.f64 im 8061296660436419/5136851466355833503165029182500125649951503713694505722166289944403058744430742990345377476833582471901350555523611540735370539306820120960085756611964727392534398116336371677921546638558908903585247316148224) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re im)))))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 2 (neg.f64 im)))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 im))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 (neg.f64 im) 2))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 im 2))))) |
(if (<=.f64 im -8914365295312087/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 1/2 (sqrt.f64 (*.f64 im -2))) (if (<=.f64 im 8910682769763105/73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747968) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 im 2))))) |
(if (<=.f64 re -4860171816884471/645562469521727147413979793000752968582426448207305878207664839135161905504210298657411338320034457858975792993186873344) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 2 im)))) |
(if (<=.f64 re -4860171816884471/645562469521727147413979793000752968582426448207305878207664839135161905504210298657411338320034457858975792993186873344) (*.f64 1/2 (/.f64 im (sqrt.f64 (neg.f64 re)))) (*.f64 1/2 (sqrt.f64 (*.f64 im 2)))) |
(*.f64 1/2 (sqrt.f64 (*.f64 2 im))) |
(*.f64 1/2 (sqrt.f64 (*.f64 im 2))) |
(/.f64 1/2 (/.f64 (sqrt.f64 re) im)) |
(*.f64 (/.f64 1/2 (sqrt.f64 re)) im) |
(*.f64 im (/.f64 1/2 (sqrt.f64 re))) |
Compiled 480 to 359 computations (25.2% saved)
| 5× | egg-herbie |
| 977× | fma-def_binary64 |
| 502× | distribute-rgt-neg-in_binary64 |
| 453× | fma-neg_binary64 |
| 407× | distribute-lft-neg-in_binary64 |
| 257× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 15 |
| 1 | 25 | 15 |
| 2 | 34 | 15 |
| 3 | 36 | 15 |
| 0 | 15 | 392 |
| 1 | 33 | 392 |
| 2 | 77 | 392 |
| 3 | 178 | 392 |
| 4 | 437 | 392 |
| 5 | 1414 | 392 |
| 6 | 3101 | 392 |
| 7 | 5294 | 392 |
| 8 | 6968 | 392 |
| 0 | 13 | 15 |
| 1 | 25 | 15 |
| 2 | 34 | 15 |
| 3 | 36 | 15 |
| 0 | 13 | 15 |
| 1 | 25 | 15 |
| 2 | 34 | 15 |
| 3 | 36 | 15 |
| 0 | 13 | 15 |
| 1 | 25 | 15 |
| 2 | 34 | 15 |
| 3 | 36 | 15 |
| 1× | saturated |
| 1× | saturated |
| 1× | saturated |
| 1× | node limit |
| 1× | saturated |
Compiled 233 to 165 computations (29.2% saved)
Compiled 458 to 297 computations (35.2% saved)
Loading profile data...