Time bar (total: 1.8s)
| 1× | search |
| True | Other | False | Iter |
|---|---|---|---|
| 0% | 100% | 0% | 0 |
| 0% | 100% | 0% | 1 |
| 0% | 100% | 0% | 2 |
| 50% | 50% | 0% | 3 |
| 75% | 25% | 0% | 4 |
| 75% | 12.5% | 12.5% | 5 |
| 75% | 6.2% | 18.8% | 6 |
| 75% | 3.1% | 21.9% | 7 |
| 75% | 1.6% | 23.5% | 8 |
| 75% | 0.8% | 24.3% | 9 |
| 75% | 0.4% | 24.6% | 10 |
| 75% | 0.2% | 24.8% | 11 |
| 75% | 0.1% | 24.9% | 12 |
| 75% | 0% | 24.9% | 13 |
| 75% | 0% | 25% | 14 |
Compiled 11 to 9 computations (18.2% saved)
| 665.0ms | 8256× | body | 128 | valid |
| 0.0ms | 2× | body | 128 | invalid |
Compiled 22 to 18 computations (18.2% saved)
| 2× | egg-herbie |
| 271× | fma-def_binary64 |
| 256× | fma-neg_binary64 |
| 75× | cancel-sign-sub-inv_binary64 |
| 54× | sub-neg_binary64 |
| 30× | distribute-rgt-neg-in_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 13 |
| 1 | 25 | 11 |
| 2 | 65 | 11 |
| 3 | 147 | 11 |
| 4 | 291 | 9 |
| 5 | 486 | 9 |
| 6 | 718 | 9 |
| 7 | 1049 | 9 |
| 8 | 1166 | 9 |
| 9 | 1185 | 9 |
| 0 | 1 | 1 |
| 1× | saturated |
| 1× | saturated |
| Inputs |
|---|
0 |
| Outputs |
|---|
0 |
| Inputs |
|---|
(-.f64 1 (*.f64 x (+.f64 253/1000 (*.f64 x 3/25)))) |
| Outputs |
|---|
(-.f64 1 (*.f64 x (+.f64 253/1000 (*.f64 x 3/25)))) |
(-.f64 1 (*.f64 x (fma.f64 x 3/25 253/1000))) |
(fma.f64 x (neg.f64 (fma.f64 x 3/25 253/1000)) 1) |
(fma.f64 x (+.f64 -253/1000 (*.f64 x -3/25)) 1) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
Compiled 10 to 8 computations (20% saved)
| 1× | egg-herbie |
| 271× | fma-def_binary64 |
| 256× | fma-neg_binary64 |
| 75× | cancel-sign-sub-inv_binary64 |
| 54× | sub-neg_binary64 |
| 30× | distribute-rgt-neg-in_binary64 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 13 |
| 1 | 25 | 11 |
| 2 | 65 | 11 |
| 3 | 147 | 11 |
| 4 | 291 | 9 |
| 5 | 486 | 9 |
| 6 | 718 | 9 |
| 7 | 1049 | 9 |
| 8 | 1166 | 9 |
| 9 | 1185 | 9 |
| 1× | saturated |
| Inputs |
|---|
(-.f64 1 (*.f64 x (+.f64 253/1000 (*.f64 x 3/25)))) |
| Outputs |
|---|
(-.f64 1 (*.f64 x (+.f64 253/1000 (*.f64 x 3/25)))) |
(-.f64 1 (*.f64 x (fma.f64 x 3/25 253/1000))) |
(fma.f64 x (neg.f64 (fma.f64 x 3/25 253/1000)) 1) |
(fma.f64 x (+.f64 -253/1000 (*.f64 x -3/25)) 1) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
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 |
|---|---|---|
| ▶ | 0.1b | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
Compiled 33 to 25 computations (24.2% saved)
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.1b | (fma.f64 x -3/25 -253/1000) |
| ✓ | 0.1b | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | x | @ | 0 | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
| 1.0ms | x | @ | -inf | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
| 0.0ms | x | @ | inf | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
| 0.0ms | x | @ | inf | (fma.f64 x -3/25 -253/1000) |
| 0.0ms | x | @ | -inf | (fma.f64 x -3/25 -253/1000) |
| 1× | batch-egg-rewrite |
| 581× | pow1_binary64 |
| 543× | add-log-exp_binary64 |
| 543× | log1p-expm1-u_binary64 |
| 543× | expm1-log1p-u_binary64 |
| 534× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 14 |
| 1 | 136 | 14 |
| 2 | 1416 | 14 |
| 1× | node limit |
| Inputs |
|---|
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
(fma.f64 x -3/25 -253/1000) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 x (fma.f64 x -3/25 -253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (fma.f64 x -3/25 -253/1000)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (fma.f64 x -3/25 -253/1000)) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)) (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)) 2) (cbrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)) (sqrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (fma.f64 x -3/25 -253/1000)) 3) 1) (+.f64 (*.f64 (*.f64 x (fma.f64 x -3/25 -253/1000)) (*.f64 x (fma.f64 x -3/25 -253/1000))) (-.f64 1 (*.f64 (*.f64 x (fma.f64 x -3/25 -253/1000)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x (fma.f64 x -3/25 -253/1000)) (*.f64 x (fma.f64 x -3/25 -253/1000))) 1) (-.f64 (*.f64 x (fma.f64 x -3/25 -253/1000)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (fma.f64 x -3/25 -253/1000) 1))))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 -253/1000 (*.f64 x -3/25))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x -3/25) -253/1000)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -3/25) 1) -253/1000)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x -3/25 -253/1000)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -3/25 -253/1000) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x -3/25 -253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x -3/25 -253/1000)) (pow.f64 (cbrt.f64 (fma.f64 x -3/25 -253/1000)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x -3/25 -253/1000)) 2) (cbrt.f64 (fma.f64 x -3/25 -253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x -3/25 -253/1000)) (sqrt.f64 (fma.f64 x -3/25 -253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x -3/25) 3) -16194277/1000000000) (+.f64 (*.f64 (*.f64 x -3/25) (*.f64 x -3/25)) (-.f64 64009/1000000 (*.f64 (*.f64 x -3/25) -253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x -3/25) (*.f64 x -3/25)) 64009/1000000) (-.f64 (*.f64 x -3/25) -253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x -3/25 -253/1000) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x -3/25 -253/1000) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x -3/25 -253/1000)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x -3/25 -253/1000)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x -3/25 -253/1000) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x -3/25 -253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x -3/25 -253/1000) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x -3/25 -253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x -3/25 -253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x -3/25 -253/1000))))))) |
| 1× | egg-herbie |
| 396× | associate-*l*_binary64 |
| 391× | fma-def_binary64 |
| 312× | distribute-rgt-neg-in_binary64 |
| 301× | unswap-sqr_binary64 |
| 271× | fma-neg_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 20 | 222 |
| 1 | 51 | 204 |
| 2 | 112 | 156 |
| 3 | 239 | 144 |
| 4 | 834 | 144 |
| 5 | 2839 | 144 |
| 6 | 4254 | 144 |
| 1× | node limit |
| Inputs |
|---|
1 |
(-.f64 1 (*.f64 253/1000 x)) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(*.f64 -3/25 (pow.f64 x 2)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(*.f64 -3/25 (pow.f64 x 2)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
-253/1000 |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 -3/25 x) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 -3/25 x) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
| Outputs |
|---|
1 |
(-.f64 1 (*.f64 253/1000 x)) |
(+.f64 1 (*.f64 -253/1000 x)) |
(+.f64 1 (*.f64 x -253/1000)) |
(fma.f64 x -253/1000 1) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 253/1000 x (*.f64 x (*.f64 x 3/25)))) |
(+.f64 1 (*.f64 x (fma.f64 x -3/25 -253/1000))) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 253/1000 x (*.f64 x (*.f64 x 3/25)))) |
(+.f64 1 (*.f64 x (fma.f64 x -3/25 -253/1000))) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
(*.f64 -3/25 (pow.f64 x 2)) |
(*.f64 (*.f64 x x) -3/25) |
(*.f64 x (*.f64 x -3/25)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(+.f64 (*.f64 x -253/1000) (*.f64 x (*.f64 x -3/25))) |
(*.f64 x (fma.f64 x -3/25 -253/1000)) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 253/1000 x (*.f64 x (*.f64 x 3/25)))) |
(+.f64 1 (*.f64 x (fma.f64 x -3/25 -253/1000))) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 253/1000 x (*.f64 x (*.f64 x 3/25)))) |
(+.f64 1 (*.f64 x (fma.f64 x -3/25 -253/1000))) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
(*.f64 -3/25 (pow.f64 x 2)) |
(*.f64 (*.f64 x x) -3/25) |
(*.f64 x (*.f64 x -3/25)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(+.f64 (*.f64 x -253/1000) (*.f64 x (*.f64 x -3/25))) |
(*.f64 x (fma.f64 x -3/25 -253/1000)) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 253/1000 x (*.f64 x (*.f64 x 3/25)))) |
(+.f64 1 (*.f64 x (fma.f64 x -3/25 -253/1000))) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(-.f64 1 (fma.f64 253/1000 x (*.f64 x (*.f64 x 3/25)))) |
(+.f64 1 (*.f64 x (fma.f64 x -3/25 -253/1000))) |
(fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
-253/1000 |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(*.f64 -3/25 x) |
(*.f64 x -3/25) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(*.f64 -3/25 x) |
(*.f64 x -3/25) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
(neg.f64 (+.f64 253/1000 (*.f64 3/25 x))) |
(+.f64 -253/1000 (neg.f64 (*.f64 x 3/25))) |
(+.f64 -253/1000 (*.f64 x -3/25)) |
(fma.f64 x -3/25 -253/1000) |
4 alts after pruning (3 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 53 | 3 | 56 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 53 | 4 | 57 |
| Status | Error | Program |
|---|---|---|
| ▶ | 0.1b | (-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
| ✓ | 0.1b | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
| 8.1b | (fma.f64 x (cbrt.f64 (pow.f64 (fma.f64 x -3/25 -253/1000) 3)) 1) | |
| 0.4b | (fma.f64 x (pow.f64 (cbrt.f64 (fma.f64 x -3/25 -253/1000)) 3) 1) |
Compiled 669 to 525 computations (21.5% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
| ✓ | 0.0b | (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x)) |
| ✓ | 0.1b | (*.f64 253/1000 x) |
| ✓ | 0.2b | (*.f64 3/25 (pow.f64 x 2)) |
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | x | @ | 0 | (*.f64 3/25 (pow.f64 x 2)) |
| 1.0ms | x | @ | inf | (*.f64 3/25 (pow.f64 x 2)) |
| 0.0ms | x | @ | inf | (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x)) |
| 0.0ms | x | @ | -inf | (*.f64 253/1000 x) |
| 0.0ms | x | @ | inf | (*.f64 253/1000 x) |
| 1× | batch-egg-rewrite |
| 474× | log-prod_binary64 |
| 413× | fma-def_binary64 |
| 195× | expm1-udef_binary64 |
| 194× | log1p-udef_binary64 |
| 174× | fma-neg_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 11 | 36 |
| 1 | 242 | 36 |
| 2 | 2987 | 36 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 3/25 (pow.f64 x 2)) |
(*.f64 253/1000 x) |
(+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x)) |
(-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 3/25) (*.f64 x x))) (cbrt.f64 (pow.f64 (exp.f64 3/25) (*.f64 x x))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 3/25) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3/25) (*.f64 x x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3/25) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 3/25 (*.f64 x x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3/25 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3/25 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 3/25)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (*.f64 x x) 3) 27/15625) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) 9/625))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3/25) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 3/25 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x x) 3) 27/15625))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3/25 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3/25 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -22/25)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -22/25)) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 x) 253/1000)) (cbrt.f64 (pow.f64 (exp.f64 x) 253/1000)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) 253/1000))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x 253/1000) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x 253/1000)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x 253/1000)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 3) 16194277/1000000000) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x x) 64009/1000000))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) 16194277/1000000000))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x 253/1000)) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 x 4) 9/625) (fma.f64 3/25 (*.f64 x x) (*.f64 -253/1000 x))) (/.f64 (*.f64 (*.f64 x x) 64009/1000000) (fma.f64 3/25 (*.f64 x x) (*.f64 -253/1000 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) (pow.f64 (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 2) (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) (sqrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 x 3) 16194277/1000000000 (*.f64 (pow.f64 (*.f64 x x) 3) 27/15625)) (/.f64 1 (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 3/25 (*.f64 x x))) (*.f64 (pow.f64 x 4) 9/625))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 x 4) 9/625) (*.f64 (*.f64 x x) 64009/1000000)) (/.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 -253/1000 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 3/25 (*.f64 x x))) (*.f64 (pow.f64 x 4) 9/625)) (fma.f64 (pow.f64 x 3) 16194277/1000000000 (*.f64 (pow.f64 (*.f64 x x) 3) 27/15625))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 -253/1000 x)) (-.f64 (*.f64 (pow.f64 x 4) 9/625) (*.f64 (*.f64 x x) 64009/1000000))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 x 3) 16194277/1000000000 (*.f64 (pow.f64 (*.f64 x x) 3) 27/15625)) (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 3/25 (*.f64 x x))) (*.f64 (pow.f64 x 4) 9/625)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 x 3) 16194277/1000000000 (*.f64 (pow.f64 (*.f64 x x) 3) 27/15625)) (fma.f64 (*.f64 x x) 64009/1000000 (-.f64 (*.f64 (pow.f64 x 4) 9/625) (*.f64 (*.f64 (*.f64 3/25 (*.f64 x x)) 253/1000) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 x 4) 9/625) (*.f64 (*.f64 x x) 64009/1000000)) (fma.f64 3/25 (*.f64 x x) (*.f64 -253/1000 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 x 3) 16194277/1000000000 (*.f64 (pow.f64 (*.f64 x x) 3) 27/15625))) (neg.f64 (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 3/25 (*.f64 x x))) (*.f64 (pow.f64 x 4) 9/625))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 x 4) 9/625) (*.f64 (*.f64 x x) 64009/1000000))) (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 -253/1000 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (*.f64 x x) 64009/1000000 (neg.f64 (*.f64 (pow.f64 x 4) 9/625))) (-.f64 (*.f64 x 253/1000) (*.f64 3/25 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 3/25 (*.f64 x x)))) (pow.f64 (exp.f64 x) 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 3/25) (*.f64 x x)) (+.f64 1 (expm1.f64 (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 3/25 (*.f64 x x)))) (+.f64 1 (expm1.f64 (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x 253/1000))) (pow.f64 (exp.f64 3/25) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 x) 253/1000) (+.f64 1 (expm1.f64 (*.f64 3/25 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x 253/1000))) (+.f64 1 (expm1.f64 (*.f64 3/25 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 253/1000 (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 x 3/25) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) 3/25 (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3/25 (*.f64 x x)) 1 (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 253/1000 x (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 253/1000) 1 (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 3/25 (*.f64 x x)) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x 253/1000) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x 253/1000)) (cbrt.f64 (*.f64 (*.f64 x x) 64009/1000000)) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 x x) 64009/1000000)) (cbrt.f64 (*.f64 x 253/1000)) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 253/1000) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 4)) (*.f64 (pow.f64 (cbrt.f64 x) 2) 3/25) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 3/25 (*.f64 x x))) (cbrt.f64 (*.f64 (pow.f64 x 4) 9/625)) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 9/625)) (cbrt.f64 (*.f64 3/25 (*.f64 x x))) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x 253/1000)) (sqrt.f64 (*.f64 x 253/1000)) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 3/25)) (*.f64 x (sqrt.f64 3/25)) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 253/1000) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)) (cbrt.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1))) (cbrt.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)) (sqrt.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 253/1000 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 253/1000 (sqrt.f64 x)) (sqrt.f64 x) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3/25 x) x (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3/25 (cbrt.f64 (pow.f64 x 4))) (pow.f64 (cbrt.f64 x) 2) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (neg.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 (neg.f64 x) 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 -253/1000 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 -1 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 (neg.f64 (cbrt.f64 (*.f64 (*.f64 x x) 64009/1000000))) (cbrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 (neg.f64 (sqrt.f64 (*.f64 x 253/1000))) (sqrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))) (cbrt.f64 (exp.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (log.f64 (cbrt.f64 (exp.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))) (log.f64 (sqrt.f64 (exp.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) (pow.f64 (cbrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 2) (cbrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) (sqrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 3)) (/.f64 1 (fma.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 2)) (/.f64 1 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1) 1) (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1) (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 3)) (fma.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 2)) (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 3))) (neg.f64 (fma.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (pow.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 2))) (neg.f64 (+.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) 3) (*.f64 (pow.f64 x 3) 16194277/1000000000)) (fma.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (fma.f64 (*.f64 x x) 64009/1000000 (*.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 3)) (+.f64 1 (fma.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) (neg.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 (*.f64 x x) 64009/1000000)) (+.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))) (-.f64 1 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (exp.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (+.f64 1 (expm1.f64 (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (neg.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 (neg.f64 x) 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 -253/1000 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 -1 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 (neg.f64 (cbrt.f64 (*.f64 (*.f64 x x) 64009/1000000))) (cbrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (*.f64 -3/25 (*.f64 x x))) (*.f64 (neg.f64 (sqrt.f64 (*.f64 x 253/1000))) (sqrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 2) (neg.f64 (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) (neg.f64 (sqrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) (cbrt.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))) (cbrt.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (neg.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 (neg.f64 x) 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 -253/1000 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 -1 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 (neg.f64 (cbrt.f64 (*.f64 (*.f64 x x) 64009/1000000))) (cbrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x))))) (cbrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 (neg.f64 (sqrt.f64 (*.f64 x 253/1000))) (sqrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) (sqrt.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (neg.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 (neg.f64 x) 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 -253/1000 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 -1 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 (neg.f64 (cbrt.f64 (*.f64 (*.f64 x x) 64009/1000000))) (cbrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (sqrt.f64 (+.f64 1 (*.f64 -3/25 (*.f64 x x)))) (*.f64 (neg.f64 (sqrt.f64 (*.f64 x 253/1000))) (sqrt.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (pow.f64 (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 2)) (cbrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (sqrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) (sqrt.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 1 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)))) 1)))))) |
| 1× | egg-herbie |
| 677× | fma-neg_binary64 |
| 593× | cancel-sign-sub-inv_binary64 |
| 483× | fma-def_binary64 |
| 386× | associate-*l*_binary64 |
| 320× | distribute-rgt-neg-in_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 14 | 66 |
| 1 | 36 | 66 |
| 2 | 75 | 58 |
| 3 | 214 | 54 |
| 4 | 698 | 54 |
| 5 | 2479 | 54 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 253/1000 x) |
(*.f64 3/25 (pow.f64 x 2)) |
(*.f64 3/25 (pow.f64 x 2)) |
1 |
(-.f64 1 (*.f64 253/1000 x)) |
(*.f64 -3/25 (pow.f64 x 2)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(*.f64 -3/25 (pow.f64 x 2)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
| Outputs |
|---|
(*.f64 253/1000 x) |
(*.f64 3/25 (pow.f64 x 2)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 x (*.f64 x 3/25)) |
(*.f64 3/25 (pow.f64 x 2)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 x (*.f64 x 3/25)) |
1 |
(-.f64 1 (*.f64 253/1000 x)) |
(+.f64 1 (*.f64 -253/1000 x)) |
(+.f64 1 (*.f64 x -253/1000)) |
(fma.f64 x -253/1000 1) |
(*.f64 -3/25 (pow.f64 x 2)) |
(*.f64 (*.f64 x x) -3/25) |
(*.f64 x (*.f64 x -3/25)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(+.f64 (*.f64 x -253/1000) (*.f64 x (*.f64 x -3/25))) |
(*.f64 x (-.f64 (*.f64 x -3/25) 253/1000)) |
(*.f64 x (fma.f64 x -3/25 -253/1000)) |
(*.f64 -3/25 (pow.f64 x 2)) |
(*.f64 (*.f64 x x) -3/25) |
(*.f64 x (*.f64 x -3/25)) |
(neg.f64 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
(neg.f64 (fma.f64 3/25 (*.f64 x x) (*.f64 253/1000 x))) |
(+.f64 (*.f64 x -253/1000) (*.f64 x (*.f64 x -3/25))) |
(*.f64 x (-.f64 (*.f64 x -3/25) 253/1000)) |
(*.f64 x (fma.f64 x -3/25 -253/1000)) |
4 alts after pruning (2 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 168 | 2 | 170 |
| Fresh | 2 | 0 | 2 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 1 | 1 |
| Total | 170 | 4 | 174 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0.1b | (-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
| ✓ | 0.1b | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
| 10.5b | (-.f64 1 (+.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 9/625)) (*.f64 253/1000 x))) | |
| ▶ | 0.2b | (-.f64 1 (+.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) (*.f64 253/1000 x))) |
Compiled 3126 to 2165 computations (30.7% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) (*.f64 253/1000 x)) |
| ✓ | 0.0b | (*.f64 x (sqrt.f64 3/25)) |
| 0.1b | (*.f64 253/1000 x) | |
| ✓ | 0.3b | (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) |
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 2.0ms | x | @ | 0 | (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) |
| 1.0ms | x | @ | -inf | (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) |
| 1.0ms | x | @ | inf | (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) |
| 1.0ms | x | @ | inf | (+.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) (*.f64 253/1000 x)) |
| 1.0ms | x | @ | 0 | (+.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) (*.f64 253/1000 x)) |
| 1× | batch-egg-rewrite |
| 433× | log-prod_binary64 |
| 313× | fma-def_binary64 |
| 249× | pow2_binary64 |
| 174× | expm1-udef_binary64 |
| 174× | log1p-udef_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 30 |
| 1 | 219 | 24 |
| 2 | 2639 | 24 |
| 1× | node limit |
| Inputs |
|---|
(pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) |
(*.f64 x (sqrt.f64 3/25)) |
(+.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) (*.f64 253/1000 x)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 (*.f64 x x) 3/25))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 (*.f64 x x) 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 (*.f64 x x) 3/25)))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 (*.f64 x x) 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (*.f64 x x) 3/25))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 3/25) (*.f64 x (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 3/25)) (*.f64 x (sqrt.f64 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x x) 3/25) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 x x) 3/25)) (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 x x) 3/25)) (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)) (cbrt.f64 (*.f64 (*.f64 x x) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) 3/25)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3/25 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) 3) (sqrt.f64 (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (sqrt.f64 3/25)) x) (sqrt.f64 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (sqrt.f64 3/25)) (sqrt.f64 3/25)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (sqrt.f64 3/25)) (cbrt.f64 (*.f64 (*.f64 x x) 3/25))) (cbrt.f64 (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (*.f64 x x) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 x x) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 x x) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 x x) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 x x) 3/25)) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (sqrt.f64 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 3/25))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 3/25)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (sqrt.f64 3/25)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 3/25)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) 3/25) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 3/25))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 3/25) 3/25)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 (sqrt.f64 3/25) 3/25) (pow.f64 x 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 x (sqrt.f64 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (sqrt.f64 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 3/25) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (sqrt.f64 3/25) 3/25) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (sqrt.f64 3/25))) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4) (fma.f64 (*.f64 x x) 3/25 (*.f64 -253/1000 x))) (/.f64 (*.f64 64009/1000000 (*.f64 x x)) (fma.f64 (*.f64 x x) 3/25 (*.f64 -253/1000 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))) (pow.f64 (cbrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))) 2) (cbrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))) (sqrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 16194277/1000000000 (pow.f64 x 3) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 6)) (/.f64 1 (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 (*.f64 x x) 3/25)) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4) (*.f64 64009/1000000 (*.f64 x x))) (/.f64 1 (fma.f64 (*.f64 x x) 3/25 (*.f64 -253/1000 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 (*.f64 x x) 3/25)) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)) (fma.f64 16194277/1000000000 (pow.f64 x 3) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 x x) 3/25 (*.f64 -253/1000 x)) (-.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4) (*.f64 64009/1000000 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 16194277/1000000000 (pow.f64 x 3) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 6)) (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 (*.f64 x x) 3/25)) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 16194277/1000000000 (pow.f64 x 3) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 6)) (fma.f64 64009/1000000 (*.f64 x x) (-.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4) (*.f64 (*.f64 (*.f64 x x) 3/25) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4) (*.f64 64009/1000000 (*.f64 x x))) (fma.f64 (*.f64 x x) 3/25 (*.f64 -253/1000 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 16194277/1000000000 (pow.f64 x 3) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 6))) (neg.f64 (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 (*.f64 x x) 3/25)) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4) (*.f64 64009/1000000 (*.f64 x x)))) (neg.f64 (fma.f64 (*.f64 x x) 3/25 (*.f64 -253/1000 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 64009/1000000 (*.f64 x x)) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)) (-.f64 (*.f64 x 253/1000) (*.f64 (*.f64 x x) 3/25)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 x 253/1000) (-.f64 (*.f64 x 253/1000) (*.f64 (*.f64 x x) 3/25)) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)) (fma.f64 16194277/1000000000 (pow.f64 x 3) (pow.f64 (*.f64 x (sqrt.f64 3/25)) 6))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 x x) 3/25 (*.f64 -253/1000 x)) (-.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4) (*.f64 64009/1000000 (*.f64 x x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 x x) 3/25))) (pow.f64 (exp.f64 253/1000) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (*.f64 x x) 3/25)) (+.f64 1 (expm1.f64 (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 x x) 3/25))) (+.f64 1 (expm1.f64 (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x 253/1000))) (exp.f64 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 253/1000) x) (+.f64 1 (expm1.f64 (*.f64 (*.f64 x x) 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x 253/1000))) (+.f64 1 (expm1.f64 (*.f64 (*.f64 x x) 3/25)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 3/25) (*.f64 x (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 3/25)) (*.f64 x (sqrt.f64 3/25)) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x x) 3/25) 1 (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 253/1000 x (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 253/1000) 1 (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (*.f64 x x) 3/25) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x 253/1000) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 253/1000) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x 253/1000)) (pow.f64 (cbrt.f64 (*.f64 x 253/1000)) 2) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 253/1000)) 2) (cbrt.f64 (*.f64 x 253/1000)) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 x x) 3/25)) (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 x x) 3/25)) (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 4)) (cbrt.f64 (*.f64 (*.f64 x x) 3/25)) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 253/1000) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x 253/1000)) (sqrt.f64 (*.f64 x 253/1000)) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) 3/25 (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) 3) (sqrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 253/1000 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 253/1000 (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (*.f64 x x) 3/25))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x (sqrt.f64 3/25)) x) (sqrt.f64 3/25) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x (sqrt.f64 3/25)) (sqrt.f64 3/25)) x (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x (sqrt.f64 3/25)) (cbrt.f64 (*.f64 (*.f64 x x) 3/25))) (cbrt.f64 (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x 253/1000 (*.f64 (*.f64 x x) 3/25))) 1)))))) |
| 1× | egg-herbie |
| 667× | associate-*l*_binary64 |
| 649× | fma-def_binary64 |
| 468× | associate-*r*_binary64 |
| 290× | distribute-lft-in_binary64 |
| 290× | distribute-rgt-in_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 12 | 388 |
| 1 | 25 | 273 |
| 2 | 47 | 264 |
| 3 | 124 | 246 |
| 4 | 460 | 246 |
| 5 | 2306 | 246 |
| 6 | 2663 | 246 |
| 7 | 2991 | 246 |
| 8 | 3416 | 246 |
| 9 | 4039 | 246 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 253/1000 x) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
| Outputs |
|---|
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 (sqrt.f64 3/25) x) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 253/1000 (*.f64 3/25 x))) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
5 alts after pruning (2 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 133 | 1 | 134 |
| Fresh | 0 | 1 | 1 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 2 | 2 |
| Total | 133 | 5 | 138 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0.1b | (-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
| ✓ | 0.1b | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
| 10.5b | (-.f64 1 (+.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 9/625)) (*.f64 253/1000 x))) | |
| ✓ | 0.2b | (-.f64 1 (+.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) (*.f64 253/1000 x))) |
| ▶ | 0.1b | (-.f64 1 (fma.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))) |
Compiled 2330 to 1763 computations (24.3% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.0b | (*.f64 x (sqrt.f64 3/25)) | |
| ✓ | 0.1b | (*.f64 x 253/1000) |
| ✓ | 0.1b | (fma.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000)) |
| ✓ | 0.3b | (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) |
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | x | @ | 0 | (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) |
| 0.0ms | x | @ | -inf | (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) |
| 0.0ms | x | @ | 0 | (fma.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000)) |
| 0.0ms | x | @ | inf | (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) |
| 0.0ms | x | @ | -inf | (fma.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000)) |
| 1× | batch-egg-rewrite |
| 797× | pow1_binary64 |
| 739× | log1p-expm1-u_binary64 |
| 739× | expm1-log1p-u_binary64 |
| 88× | add-sqr-sqrt_binary64 |
| 83× | *-un-lft-identity_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 33 |
| 1 | 183 | 18 |
| 2 | 2044 | 18 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) |
(fma.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000)) |
(*.f64 x 253/1000) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 3/25 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3/25 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3/25 x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3/25 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3/25 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3/25 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 3/25 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 3/25 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3/25 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 3/25 (sqrt.f64 3/25)) (pow.f64 (*.f64 (sqrt.f64 3/25) x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (sqrt.f64 3/25) x) 3) (*.f64 3/25 (sqrt.f64 3/25))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3/25 x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3/25 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3/25 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 3/25 x)) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 253/1000) (*.f64 3/25 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3/25 (*.f64 x x)) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3/25 (*.f64 x x)) 1) (*.f64 x 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 (*.f64 3/25 x) 253/1000))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))) (pow.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))) 2) (cbrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))) (sqrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 3/25 (*.f64 x x)) 3) (pow.f64 (*.f64 x 253/1000) 3)) (+.f64 (*.f64 (*.f64 3/25 (*.f64 x x)) (*.f64 3/25 (*.f64 x x))) (-.f64 (*.f64 64009/1000000 (*.f64 x x)) (*.f64 (*.f64 3/25 (*.f64 x x)) (*.f64 x 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 3/25 (*.f64 x x)) (*.f64 3/25 (*.f64 x x))) (*.f64 64009/1000000 (*.f64 x x))) (-.f64 (*.f64 3/25 (*.f64 x x)) (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (+.f64 (*.f64 3/25 x) 253/1000))) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x 253/1000))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x 253/1000) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x 253/1000) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x 253/1000)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x 253/1000)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 64009/1000000 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 253/1000) x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x 253/1000))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x 253/1000) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x 253/1000)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x 253/1000)) 1)))))) |
| 1× | egg-herbie |
| 745× | associate-*l*_binary64 |
| 550× | fma-def_binary64 |
| 530× | associate-*r*_binary64 |
| 284× | distribute-lft-in_binary64 |
| 284× | distribute-rgt-in_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 12 | 328 |
| 1 | 25 | 213 |
| 2 | 50 | 204 |
| 3 | 129 | 186 |
| 4 | 504 | 186 |
| 5 | 2587 | 186 |
| 6 | 2939 | 186 |
| 7 | 3191 | 186 |
| 8 | 3550 | 186 |
| 9 | 4175 | 186 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 253/1000 x) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
(*.f64 253/1000 x) |
| Outputs |
|---|
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) x) |
(*.f64 3/25 x) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) |
(*.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x)) |
(*.f64 3/25 (*.f64 x x)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3/25) 2) (pow.f64 x 2)) (*.f64 253/1000 x)) |
(fma.f64 (pow.f64 (sqrt.f64 3/25) 2) (*.f64 x x) (*.f64 x 253/1000)) |
(fma.f64 3/25 (*.f64 x x) (*.f64 x 253/1000)) |
(*.f64 x (+.f64 (*.f64 3/25 x) 253/1000)) |
(*.f64 x (fma.f64 3/25 x 253/1000)) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
(*.f64 253/1000 x) |
(*.f64 x 253/1000) |
5 alts after pruning (1 fresh and 4 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 83 | 0 | 83 |
| Fresh | 0 | 1 | 1 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 3 | 3 |
| Total | 83 | 5 | 88 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0.1b | (-.f64 1 (+.f64 (*.f64 3/25 (pow.f64 x 2)) (*.f64 253/1000 x))) |
| ✓ | 0.1b | (fma.f64 x (fma.f64 x -3/25 -253/1000) 1) |
| 10.5b | (-.f64 1 (+.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 9/625)) (*.f64 253/1000 x))) | |
| ✓ | 0.2b | (-.f64 1 (+.f64 (pow.f64 (*.f64 x (sqrt.f64 3/25)) 2) (*.f64 253/1000 x))) |
| ✓ | 0.1b | (-.f64 1 (fma.f64 x (*.f64 (sqrt.f64 3/25) (*.f64 x (sqrt.f64 3/25))) (*.f64 x 253/1000))) |
Compiled 1325 to 1048 computations (20.9% saved)
Total 0.1b remaining (92.2%)
Threshold costs 0.1b (92.2%)
Compiled 361 to 270 computations (25.2% saved)
| 1× | egg-herbie |
| 2× | +-commutative_binary64 |
| 2× | *-commutative_binary64 |
| 2× | sub-neg_binary64 |
| 1× | neg-sub0_binary64 |
| 1× | neg-mul-1_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 14 |
| 1 | 14 | 14 |
| 2 | 18 | 14 |
| 3 | 20 | 14 |
| 4 | 21 | 14 |
| 1× | saturated |
| Inputs |
|---|
(-.f64 1 (fma.f64 253/1000 x (*.f64 (*.f64 x x) 3/25))) |
| Outputs |
|---|
(-.f64 1 (fma.f64 253/1000 x (*.f64 (*.f64 x x) 3/25))) |
| 1× | fuel |
Compiled 83 to 66 computations (20.5% saved)
Loading profile data...