
Time bar (total: 1.8s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 0 |
| 100% | 99.9% | 0% | 0.1% | 0% | 0% | 0% | 1 |
Compiled 13 to 9 computations (30.8% saved)
| 615.0ms | 6558× | body | 256 | valid |
| 165.0ms | 1698× | body | 256 | infinite |
| 2× | egg-herbie |
| 1918× | fma-def |
| 1116× | fma-neg |
| 478× | cancel-sign-sub-inv |
| 252× | distribute-rgt-in |
| 238× | sub-neg |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 21 | 84 |
| 1 | 46 | 84 |
| 2 | 75 | 84 |
| 3 | 128 | 76 |
| 4 | 199 | 76 |
| 5 | 279 | 76 |
| 6 | 431 | 76 |
| 7 | 643 | 76 |
| 8 | 1407 | 76 |
| 9 | 2611 | 76 |
| 10 | 3060 | 76 |
| 11 | 3308 | 76 |
| 12 | 3325 | 76 |
| 13 | 3325 | 76 |
| 0 | 3 | 3 |
| 1× | saturated |
| 1× | saturated |
| Inputs |
|---|
0 |
1 |
2 |
| Outputs |
|---|
0 |
1 |
2 |
| Inputs |
|---|
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z)) |
(+.f64 (*.f64 y x) (*.f64 (-.f64 y 1) z)) |
(+.f64 (*.f64 z y) (*.f64 (-.f64 z 1) x)) |
(+.f64 (*.f64 x z) (*.f64 (-.f64 x 1) y)) |
| Outputs |
|---|
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z)) |
(fma.f64 x y (*.f64 (+.f64 x -1) z)) |
(-.f64 (*.f64 x (+.f64 y z)) z) |
(fma.f64 x (+.f64 y z) (neg.f64 z)) |
(+.f64 (*.f64 y x) (*.f64 (-.f64 y 1) z)) |
(fma.f64 y x (*.f64 z (+.f64 y -1))) |
(fma.f64 x y (*.f64 z (+.f64 y -1))) |
(-.f64 (*.f64 y (+.f64 x z)) z) |
(fma.f64 y (+.f64 x z) (neg.f64 z)) |
(+.f64 (*.f64 z y) (*.f64 (-.f64 z 1) x)) |
(fma.f64 z y (*.f64 x (+.f64 z -1))) |
(fma.f64 y z (*.f64 x (+.f64 z -1))) |
(-.f64 (*.f64 z (+.f64 y x)) x) |
(fma.f64 z (+.f64 x y) (neg.f64 x)) |
(-.f64 (*.f64 z (+.f64 x y)) x) |
(+.f64 (*.f64 x z) (*.f64 (-.f64 x 1) y)) |
(fma.f64 x z (*.f64 y (+.f64 x -1))) |
(-.f64 (*.f64 x (+.f64 y z)) y) |
Compiled 15 to 11 computations (26.7% saved)
| 1× | egg-herbie |
| 1062× | fma-def |
| 132× | cancel-sign-sub-inv |
| 96× | distribute-lft-neg-in |
| 82× | sub-neg |
| 78× | associate-+l- |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 21 |
| 1 | 21 | 21 |
| 2 | 31 | 21 |
| 3 | 46 | 19 |
| 4 | 65 | 19 |
| 5 | 90 | 19 |
| 6 | 142 | 19 |
| 7 | 217 | 19 |
| 8 | 468 | 19 |
| 9 | 842 | 19 |
| 10 | 1123 | 19 |
| 11 | 1217 | 19 |
| 12 | 1222 | 19 |
| 1× | saturated |
| Inputs |
|---|
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z)) |
| Outputs |
|---|
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z)) |
(fma.f64 x y (*.f64 (+.f64 x -1) z)) |
(-.f64 (*.f64 x (+.f64 y z)) z) |
(fma.f64 x (+.f64 y z) (neg.f64 z)) |
Compiled 34 to 17 computations (50% saved)
1 alts after pruning (1 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 3 | 1 | 4 |
| Fresh | 1 | 0 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 0 | 0 |
| Total | 4 | 1 | 5 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 100.0% | (-.f64 (*.f64 x (+.f64 y z)) z) |
| ▶ | 100.0% | (-.f64 (*.f64 x (+.f64 y z)) z) |
Compiled 20 to 12 computations (40% saved)
Found 1 expressions with local accuracy:
| New | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (*.f64 x (+.f64 y z)) |
Compiled 22 to 7 computations (68.2% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | x | @ | -inf | (*.f64 x (+.f64 y z)) |
| 0.0ms | y | @ | -inf | (*.f64 x (+.f64 y z)) |
| 0.0ms | x | @ | 0 | (*.f64 x (+.f64 y z)) |
| 0.0ms | x | @ | inf | (*.f64 x (+.f64 y z)) |
| 0.0ms | y | @ | inf | (*.f64 x (+.f64 y z)) |
| 1× | batch-egg-rewrite |
| 1754× | pow1 |
| 1626× | add-exp-log |
| 1626× | log1p-expm1-u |
| 1626× | expm1-log1p-u |
| 1596× | add-log-exp |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 13 |
| 1 | 154 | 13 |
| 2 | 2221 | 13 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 x (+.f64 y z)) |
| Outputs |
|---|
(+.f64 (*.f64 x y) (*.f64 x z)) |
(+.f64 (*.f64 x z) (*.f64 x y)) |
(+.f64 (*.f64 (*.f64 x y) 1) (*.f64 (*.f64 x z) 1)) |
(-.f64 (+.f64 1 (*.f64 x (+.f64 y z))) 1) |
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 x z) 3)) (+.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (-.f64 (*.f64 (*.f64 x z) (*.f64 x z)) (*.f64 (*.f64 x y) (*.f64 x z))))) |
(/.f64 (-.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (*.f64 (*.f64 x z) (*.f64 x z))) (-.f64 (*.f64 x y) (*.f64 x z))) |
(/.f64 (*.f64 x (+.f64 (pow.f64 z 3) (pow.f64 y 3))) (fma.f64 y y (*.f64 z (-.f64 z y)))) |
(/.f64 (*.f64 x (fma.f64 y y (neg.f64 (*.f64 z z)))) (-.f64 y z)) |
(/.f64 (*.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) x) (fma.f64 y y (*.f64 z (-.f64 z y)))) |
(/.f64 (*.f64 (fma.f64 y y (neg.f64 (*.f64 z z))) x) (-.f64 y z)) |
(pow.f64 (*.f64 x (+.f64 y z)) 1) |
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 3) |
(pow.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3) 1/3) |
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) 2) |
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 2)) |
(log.f64 (pow.f64 (exp.f64 (+.f64 y z)) x)) |
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3)) |
(cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (+.f64 y z) 3))) |
(cbrt.f64 (*.f64 (pow.f64 (+.f64 y z) 3) (pow.f64 x 3))) |
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 y z)))) |
(exp.f64 (log.f64 (*.f64 x (+.f64 y z)))) |
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 y z)))) |
(fma.f64 x y (*.f64 x z)) |
(fma.f64 y x (*.f64 x z)) |
| 1× | egg-herbie |
| 1062× | associate-/r* |
| 714× | fma-def |
| 640× | associate-*r/ |
| 508× | associate-+r+ |
| 442× | div-sub |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 83 | 894 |
| 1 | 241 | 888 |
| 2 | 946 | 886 |
| 3 | 3884 | 876 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 z x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 z x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 z x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(+.f64 (*.f64 x y) (*.f64 x z)) |
(+.f64 (*.f64 x z) (*.f64 x y)) |
(+.f64 (*.f64 (*.f64 x y) 1) (*.f64 (*.f64 x z) 1)) |
(-.f64 (+.f64 1 (*.f64 x (+.f64 y z))) 1) |
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 x z) 3)) (+.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (-.f64 (*.f64 (*.f64 x z) (*.f64 x z)) (*.f64 (*.f64 x y) (*.f64 x z))))) |
(/.f64 (-.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (*.f64 (*.f64 x z) (*.f64 x z))) (-.f64 (*.f64 x y) (*.f64 x z))) |
(/.f64 (*.f64 x (+.f64 (pow.f64 z 3) (pow.f64 y 3))) (fma.f64 y y (*.f64 z (-.f64 z y)))) |
(/.f64 (*.f64 x (fma.f64 y y (neg.f64 (*.f64 z z)))) (-.f64 y z)) |
(/.f64 (*.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) x) (fma.f64 y y (*.f64 z (-.f64 z y)))) |
(/.f64 (*.f64 (fma.f64 y y (neg.f64 (*.f64 z z))) x) (-.f64 y z)) |
(pow.f64 (*.f64 x (+.f64 y z)) 1) |
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 3) |
(pow.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3) 1/3) |
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) 2) |
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 2)) |
(log.f64 (pow.f64 (exp.f64 (+.f64 y z)) x)) |
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3)) |
(cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (+.f64 y z) 3))) |
(cbrt.f64 (*.f64 (pow.f64 (+.f64 y z) 3) (pow.f64 x 3))) |
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 y z)))) |
(exp.f64 (log.f64 (*.f64 x (+.f64 y z)))) |
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 y z)))) |
(fma.f64 x y (*.f64 x z)) |
(fma.f64 y x (*.f64 x z)) |
| Outputs |
|---|
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 (+.f64 y z) x) |
(*.f64 z x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(*.f64 y x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(*.f64 y x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(*.f64 y x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(*.f64 z x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(*.f64 z x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 z x) (*.f64 y x)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 x y) (*.f64 x z)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 x z) (*.f64 x y)) |
(*.f64 (+.f64 y z) x) |
(+.f64 (*.f64 (*.f64 x y) 1) (*.f64 (*.f64 x z) 1)) |
(*.f64 (+.f64 y z) x) |
(-.f64 (+.f64 1 (*.f64 x (+.f64 y z))) 1) |
(*.f64 (+.f64 y z) x) |
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 x z) 3)) (+.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (-.f64 (*.f64 (*.f64 x z) (*.f64 x z)) (*.f64 (*.f64 x y) (*.f64 x z))))) |
(/.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z x) 3)) (fma.f64 (*.f64 y x) (*.f64 y x) (*.f64 (*.f64 z x) (-.f64 (*.f64 z x) (*.f64 y x))))) |
(/.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z x) 3)) (fma.f64 x (*.f64 y (*.f64 y x)) (*.f64 z (*.f64 x (*.f64 x (-.f64 z y)))))) |
(/.f64 (*.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (pow.f64 x 3)) (*.f64 x (+.f64 (*.f64 y (*.f64 y x)) (*.f64 (*.f64 z x) (-.f64 z y))))) |
(/.f64 (/.f64 (*.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (pow.f64 x 3)) x) (*.f64 x (fma.f64 z (-.f64 z y) (*.f64 y y)))) |
(/.f64 (-.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (*.f64 (*.f64 x z) (*.f64 x z))) (-.f64 (*.f64 x y) (*.f64 x z))) |
(*.f64 (+.f64 y z) x) |
(/.f64 (*.f64 x (+.f64 (pow.f64 z 3) (pow.f64 y 3))) (fma.f64 y y (*.f64 z (-.f64 z y)))) |
(/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (/.f64 (fma.f64 y y (*.f64 z (-.f64 z y))) x)) |
(*.f64 (/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (fma.f64 y y (*.f64 z (-.f64 z y)))) x) |
(*.f64 x (/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (fma.f64 y y (*.f64 z (-.f64 z y))))) |
(*.f64 x (/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (fma.f64 z (-.f64 z y) (*.f64 y y)))) |
(/.f64 (*.f64 x (fma.f64 y y (neg.f64 (*.f64 z z)))) (-.f64 y z)) |
(*.f64 (+.f64 y z) x) |
(/.f64 (*.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) x) (fma.f64 y y (*.f64 z (-.f64 z y)))) |
(/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (/.f64 (fma.f64 y y (*.f64 z (-.f64 z y))) x)) |
(*.f64 (/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (fma.f64 y y (*.f64 z (-.f64 z y)))) x) |
(*.f64 x (/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (fma.f64 y y (*.f64 z (-.f64 z y))))) |
(*.f64 x (/.f64 (+.f64 (pow.f64 z 3) (pow.f64 y 3)) (fma.f64 z (-.f64 z y) (*.f64 y y)))) |
(/.f64 (*.f64 (fma.f64 y y (neg.f64 (*.f64 z z))) x) (-.f64 y z)) |
(*.f64 (+.f64 y z) x) |
(pow.f64 (*.f64 x (+.f64 y z)) 1) |
(*.f64 (+.f64 y z) x) |
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 3) |
(*.f64 (+.f64 y z) x) |
(pow.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3) 1/3) |
(*.f64 (+.f64 y z) x) |
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) 2) |
(*.f64 (+.f64 y z) x) |
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 2)) |
(*.f64 (+.f64 y z) x) |
(log.f64 (pow.f64 (exp.f64 (+.f64 y z)) x)) |
(*.f64 (+.f64 y z) x) |
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3)) |
(*.f64 (+.f64 y z) x) |
(cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (+.f64 y z) 3))) |
(*.f64 (+.f64 y z) x) |
(cbrt.f64 (*.f64 (pow.f64 (+.f64 y z) 3) (pow.f64 x 3))) |
(*.f64 (+.f64 y z) x) |
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 y z)))) |
(*.f64 (+.f64 y z) x) |
(exp.f64 (log.f64 (*.f64 x (+.f64 y z)))) |
(*.f64 (+.f64 y z) x) |
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 y z)))) |
(*.f64 (+.f64 y z) x) |
(fma.f64 x y (*.f64 x z)) |
(*.f64 (+.f64 y z) x) |
(fma.f64 y x (*.f64 x z)) |
(*.f64 (+.f64 y z) x) |
Compiled 536 to 211 computations (60.6% saved)
3 alts after pruning (2 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 34 | 2 | 36 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 34 | 3 | 37 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 65.3% | (-.f64 (*.f64 z x) z) |
| ▶ | 78.0% | (-.f64 (*.f64 y x) z) |
| ✓ | 100.0% | (-.f64 (*.f64 x (+.f64 y z)) z) |
| ▶ | 65.3% | (-.f64 (*.f64 z x) z) |
| ▶ | 78.0% | (-.f64 (*.f64 y x) z) |
| ✓ | 100.0% | (-.f64 (*.f64 x (+.f64 y z)) z) |
Compiled 52 to 32 computations (38.5% saved)
Found 1 expressions with local accuracy:
| New | Accuracy | Program |
|---|---|---|
| ✓ | 100.0% | (-.f64 (*.f64 z x) z) |
Compiled 25 to 8 computations (68% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | x | @ | -inf | (-.f64 (*.f64 z x) z) |
| 0.0ms | z | @ | inf | (-.f64 (*.f64 z x) z) |
| 0.0ms | z | @ | 0 | (-.f64 (*.f64 z x) z) |
| 0.0ms | z | @ | -inf | (-.f64 (*.f64 z x) z) |
| 0.0ms | x | @ | inf | (-.f64 (*.f64 z x) z) |
| 1× | batch-egg-rewrite |
| 1470× | pow1 |
| 1360× | add-exp-log |
| 1360× | log1p-expm1-u |
| 1360× | expm1-log1p-u |
| 1332× | add-log-exp |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 6 | 13 |
| 1 | 132 | 13 |
| 2 | 1839 | 13 |
| 1× | node limit |
| Inputs |
|---|
(-.f64 (*.f64 z x) z) |
| Outputs |
|---|
(+.f64 (*.f64 z x) (neg.f64 z)) |
(+.f64 (*.f64 z x) (*.f64 (neg.f64 z) 1)) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 z) 1 z)) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z)) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 (sqrt.f64 z)) (sqrt.f64 z) z)) |
(+.f64 (neg.f64 z) (*.f64 z x)) |
(*.f64 z (-.f64 x 1)) |
(*.f64 (-.f64 (*.f64 z x) z) 1) |
(*.f64 1 (-.f64 (*.f64 z x) z)) |
(*.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 2)) |
(*.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 2) (cbrt.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (sqrt.f64 (-.f64 (*.f64 z x) z)) (sqrt.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))))) |
(*.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(*.f64 (+.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 z))) |
(/.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))) (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)))) |
(/.f64 1 (/.f64 (fma.f64 z x z) (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z)))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)) (fma.f64 z x z)) |
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))))) |
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z))) (neg.f64 (fma.f64 z x z))) |
(/.f64 (+.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 (neg.f64 z) 3)) (+.f64 (pow.f64 (*.f64 z x) 2) (-.f64 (*.f64 (neg.f64 z) (neg.f64 z)) (*.f64 (*.f64 z x) (neg.f64 z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 (neg.f64 z) (neg.f64 z))) (-.f64 (*.f64 z x) (neg.f64 z))) |
(pow.f64 (-.f64 (*.f64 z x) z) 1) |
(pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 3) |
(pow.f64 (pow.f64 (-.f64 (*.f64 z x) z) 3) 1/3) |
(pow.f64 (sqrt.f64 (-.f64 (*.f64 z x) z)) 2) |
(sqrt.f64 (pow.f64 (-.f64 (*.f64 z x) z) 2)) |
(log.f64 (exp.f64 (-.f64 (*.f64 z x) z))) |
(cbrt.f64 (pow.f64 (-.f64 (*.f64 z x) z) 3)) |
(expm1.f64 (log1p.f64 (-.f64 (*.f64 z x) z))) |
(exp.f64 (log.f64 (-.f64 (*.f64 z x) z))) |
(log1p.f64 (expm1.f64 (-.f64 (*.f64 z x) z))) |
(fma.f64 z x (neg.f64 z)) |
(fma.f64 x z (neg.f64 z)) |
(fma.f64 1 (*.f64 z x) (neg.f64 z)) |
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 z x)) 2) (cbrt.f64 (*.f64 z x)) (neg.f64 z)) |
(fma.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 (*.f64 z x)) (neg.f64 z)) |
| 1× | egg-herbie |
| 1316× | fma-neg |
| 1028× | fma-def |
| 594× | distribute-lft-neg-in |
| 492× | distribute-rgt-neg-in |
| 456× | distribute-frac-neg |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 108 | 1226 |
| 1 | 280 | 1146 |
| 2 | 998 | 1146 |
| 3 | 4461 | 1036 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (-.f64 x 1) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 -1 z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 z x) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 z x) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(+.f64 (*.f64 z x) (neg.f64 z)) |
(+.f64 (*.f64 z x) (*.f64 (neg.f64 z) 1)) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 z) 1 z)) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z)) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 (sqrt.f64 z)) (sqrt.f64 z) z)) |
(+.f64 (neg.f64 z) (*.f64 z x)) |
(*.f64 z (-.f64 x 1)) |
(*.f64 (-.f64 (*.f64 z x) z) 1) |
(*.f64 1 (-.f64 (*.f64 z x) z)) |
(*.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 2)) |
(*.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 2) (cbrt.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (sqrt.f64 (-.f64 (*.f64 z x) z)) (sqrt.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))))) |
(*.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(*.f64 (+.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 z))) |
(/.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))) (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)))) |
(/.f64 1 (/.f64 (fma.f64 z x z) (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z)))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)) (fma.f64 z x z)) |
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))))) |
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z))) (neg.f64 (fma.f64 z x z))) |
(/.f64 (+.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 (neg.f64 z) 3)) (+.f64 (pow.f64 (*.f64 z x) 2) (-.f64 (*.f64 (neg.f64 z) (neg.f64 z)) (*.f64 (*.f64 z x) (neg.f64 z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 (neg.f64 z) (neg.f64 z))) (-.f64 (*.f64 z x) (neg.f64 z))) |
(pow.f64 (-.f64 (*.f64 z x) z) 1) |
(pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 3) |
(pow.f64 (pow.f64 (-.f64 (*.f64 z x) z) 3) 1/3) |
(pow.f64 (sqrt.f64 (-.f64 (*.f64 z x) z)) 2) |
(sqrt.f64 (pow.f64 (-.f64 (*.f64 z x) z) 2)) |
(log.f64 (exp.f64 (-.f64 (*.f64 z x) z))) |
(cbrt.f64 (pow.f64 (-.f64 (*.f64 z x) z) 3)) |
(expm1.f64 (log1p.f64 (-.f64 (*.f64 z x) z))) |
(exp.f64 (log.f64 (-.f64 (*.f64 z x) z))) |
(log1p.f64 (expm1.f64 (-.f64 (*.f64 z x) z))) |
(fma.f64 z x (neg.f64 z)) |
(fma.f64 x z (neg.f64 z)) |
(fma.f64 1 (*.f64 z x) (neg.f64 z)) |
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 z x)) 2) (cbrt.f64 (*.f64 z x)) (neg.f64 z)) |
(fma.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 (*.f64 z x)) (neg.f64 z)) |
| Outputs |
|---|
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 x 1) z) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 -1 (*.f64 z (+.f64 1 (*.f64 -1 x)))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 -1 z) |
(neg.f64 z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 z x) |
(*.f64 x z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 z x) |
(*.f64 x z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 -1 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 z x) (neg.f64 z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (*.f64 z x) (*.f64 (neg.f64 z) 1)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 z) 1 z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (-.f64 (*.f64 z x) z) (fma.f64 (neg.f64 (sqrt.f64 z)) (sqrt.f64 z) z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(+.f64 (neg.f64 z) (*.f64 z x)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 z (-.f64 x 1)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 (*.f64 z x) z) 1) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 1 (-.f64 (*.f64 z x) z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 2)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 2) (cbrt.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (sqrt.f64 (-.f64 (*.f64 z x) z)) (sqrt.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(*.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z (fma.f64 z x z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (fma.f64 z (fma.f64 x z z) (pow.f64 (*.f64 x z) 2))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (fma.f64 z z (*.f64 x (*.f64 z (fma.f64 x z z))))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (*.f64 z (+.f64 z (*.f64 x (fma.f64 x z z))))) |
(*.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (fma.f64 x z z)) |
(/.f64 (-.f64 z (*.f64 x z)) -1) |
(*.f64 (+.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 z))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(/.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))) (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z (fma.f64 z x z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (fma.f64 z (fma.f64 x z z) (pow.f64 (*.f64 x z) 2))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (fma.f64 z z (*.f64 x (*.f64 z (fma.f64 x z z))))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (*.f64 z (+.f64 z (*.f64 x (fma.f64 x z z))))) |
(/.f64 1 (/.f64 (fma.f64 z x z) (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (fma.f64 x z z)) |
(/.f64 (-.f64 z (*.f64 x z)) -1) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z)))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z (fma.f64 z x z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (fma.f64 z (fma.f64 x z z) (pow.f64 (*.f64 x z) 2))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (fma.f64 z z (*.f64 x (*.f64 z (fma.f64 x z z))))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (*.f64 z (+.f64 z (*.f64 x (fma.f64 x z z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z)) (fma.f64 z x z)) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (fma.f64 x z z)) |
(/.f64 (-.f64 z (*.f64 x z)) -1) |
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 z 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z (fma.f64 z x z))))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z (fma.f64 z x z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (fma.f64 z (fma.f64 x z z) (pow.f64 (*.f64 x z) 2))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (fma.f64 z z (*.f64 x (*.f64 z (fma.f64 x z z))))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (*.f64 z (+.f64 z (*.f64 x (fma.f64 x z z))))) |
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 z z))) (neg.f64 (fma.f64 z x z))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (fma.f64 x z z)) |
(/.f64 (-.f64 z (*.f64 x z)) -1) |
(/.f64 (+.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 (neg.f64 z) 3)) (+.f64 (pow.f64 (*.f64 z x) 2) (-.f64 (*.f64 (neg.f64 z) (neg.f64 z)) (*.f64 (*.f64 z x) (neg.f64 z))))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z (fma.f64 z x z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 3) (pow.f64 z 3)) (fma.f64 z (fma.f64 x z z) (pow.f64 (*.f64 x z) 2))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (fma.f64 z z (*.f64 x (*.f64 z (fma.f64 x z z))))) |
(/.f64 (*.f64 (pow.f64 z 3) (+.f64 (pow.f64 x 3) -1)) (*.f64 z (+.f64 z (*.f64 x (fma.f64 x z z))))) |
(/.f64 (-.f64 (pow.f64 (*.f64 z x) 2) (*.f64 (neg.f64 z) (neg.f64 z))) (-.f64 (*.f64 z x) (neg.f64 z))) |
(*.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z x z))) |
(/.f64 (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 z z)) (fma.f64 x z z)) |
(/.f64 (-.f64 z (*.f64 x z)) -1) |
(pow.f64 (-.f64 (*.f64 z x) z) 1) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(pow.f64 (cbrt.f64 (-.f64 (*.f64 z x) z)) 3) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(pow.f64 (pow.f64 (-.f64 (*.f64 z x) z) 3) 1/3) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(pow.f64 (sqrt.f64 (-.f64 (*.f64 z x) z)) 2) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(sqrt.f64 (pow.f64 (-.f64 (*.f64 z x) z) 2)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(log.f64 (exp.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(cbrt.f64 (pow.f64 (-.f64 (*.f64 z x) z) 3)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(expm1.f64 (log1p.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(exp.f64 (log.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(log1p.f64 (expm1.f64 (-.f64 (*.f64 z x) z))) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(fma.f64 z x (neg.f64 z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(fma.f64 x z (neg.f64 z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(fma.f64 1 (*.f64 z x) (neg.f64 z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 z x)) 2) (cbrt.f64 (*.f64 z x)) (neg.f64 z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
(fma.f64 (sqrt.f64 (*.f64 z x)) (sqrt.f64 (*.f64 z x)) (neg.f64 z)) |
(*.f64 (+.f64 x -1) z) |
(-.f64 (*.f64 x z) z) |
Compiled 624 to 237 computations (62% saved)
5 alts after pruning (2 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 52 | 2 | 54 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 1 | 1 |
| Total | 52 | 5 | 57 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 65.3% | (-.f64 (*.f64 z x) z) |
| ✓ | 78.0% | (-.f64 (*.f64 y x) z) |
| ✓ | 100.0% | (-.f64 (*.f64 x (+.f64 y z)) z) |
| ▶ | 25.8% | (*.f64 z x) |
| ▶ | 42.4% | (neg.f64 z) |
| ✓ | 65.3% | (-.f64 (*.f64 z x) z) |
| ✓ | 78.0% | (-.f64 (*.f64 y x) z) |
| ✓ | 100.0% | (-.f64 (*.f64 x (+.f64 y z)) z) |
| ▶ | 25.8% | (*.f64 z x) |
| ▶ | 42.4% | (neg.f64 z) |
Compiled 74 to 48 computations (35.1% saved)
Compiled 12 to 6 computations (50% saved)
Compiled 3 to 3 computations (0% saved)
5 alts after pruning (0 fresh and 5 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 0 | 0 | 0 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 3 | 3 |
| Total | 0 | 5 | 5 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 65.3% | (-.f64 (*.f64 z x) z) |
| ✓ | 78.0% | (-.f64 (*.f64 y x) z) |
| ✓ | 100.0% | (-.f64 (*.f64 x (+.f64 y z)) z) |
| ✓ | 25.8% | (*.f64 z x) |
| ✓ | 42.4% | (neg.f64 z) |
Compiled 71 to 40 computations (43.7% saved)
| Inputs |
|---|
(neg.f64 z) |
(*.f64 z x) |
(-.f64 (*.f64 y x) z) |
(-.f64 (*.f64 z x) z) |
(-.f64 (*.f64 x (+.f64 y z)) z) |
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z)) |
| Outputs |
|---|
(-.f64 (*.f64 x (+.f64 y z)) z) |
4 calls:
| 6.0ms | x |
| 6.0ms | (+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z)) |
| 4.0ms | y |
| 4.0ms | z |
| Accuracy | Segments | Branch |
|---|---|---|
| 100.0% | 1 | x |
| 100.0% | 1 | y |
| 100.0% | 1 | z |
| 100.0% | 1 | (+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z)) |
Compiled 58 to 33 computations (43.1% saved)
| Inputs |
|---|
(neg.f64 z) |
(*.f64 z x) |
(-.f64 (*.f64 y x) z) |
(-.f64 (*.f64 z x) z) |
| Outputs |
|---|
(-.f64 (*.f64 y x) z) |
(-.f64 (*.f64 z x) z) |
(-.f64 (*.f64 y x) z) |
3 calls:
| 29.0ms | x |
| 13.0ms | y |
| 10.0ms | z |
| Accuracy | Segments | Branch |
|---|---|---|
| 83.4% | 4 | x |
| 91.5% | 3 | y |
| 90.6% | 3 | z |
Compiled 30 to 17 computations (43.3% saved)
| Inputs |
|---|
(neg.f64 z) |
(*.f64 z x) |
(-.f64 (*.f64 y x) z) |
| Outputs |
|---|
(*.f64 z x) |
(-.f64 (*.f64 y x) z) |
(*.f64 z x) |
(-.f64 (*.f64 y x) z) |
3 calls:
| 13.0ms | x |
| 10.0ms | y |
| 3.0ms | z |
| Accuracy | Segments | Branch |
|---|---|---|
| 83.4% | 4 | x |
| 78.0% | 1 | z |
| 79.9% | 3 | y |
Compiled 25 to 16 computations (36% saved)
| Inputs |
|---|
(neg.f64 z) |
(*.f64 z x) |
| Outputs |
|---|
(*.f64 z x) |
(neg.f64 z) |
(*.f64 z x) |
3 calls:
| 14.0ms | y |
| 9.0ms | x |
| 8.0ms | z |
| Accuracy | Segments | Branch |
|---|---|---|
| 46.1% | 5 | y |
| 45.0% | 3 | z |
| 64.7% | 3 | x |
Compiled 20 to 14 computations (30% saved)
Total -0.0b remaining (-0%)
Threshold costs -0b (-0%)
| Inputs |
|---|
(neg.f64 z) |
| Outputs |
|---|
(neg.f64 z) |
1 calls:
| 3.0ms | x |
| Accuracy | Segments | Branch |
|---|---|---|
| 42.4% | 1 | x |
Compiled 9 to 7 computations (22.2% saved)
| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 11.0ms | 4.2905564805661306e+26 | 4.7991742208534525e+28 |
| 17.0ms | -2.0505057965485443e-124 | -1.6513855121802085e-136 |
| 22.0ms | 232× | body | 256 | valid |
| 4.0ms | 40× | body | 256 | infinite |
Compiled 324 to 217 computations (33% saved)
| 3× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 15.0ms | 2.0703873429345977e+113 | 4.1201960849365526e+120 |
| 10.0ms | 6.039429007087031e+89 | 9.553952178949385e+90 |
| 22.0ms | -2.594171845325791e+66 | -5.084886135554237e+64 |
| 23.0ms | 251× | body | 256 | valid |
| 20.0ms | 101× | body | 256 | infinite |
Compiled 370 to 255 computations (31.1% saved)
| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 16.0ms | 56.95280198374015 | 3433472269093053400.0 |
| 17.0ms | -232520221045.06958 | -3.1238924183232266e-6 |
| 30.0ms | 318× | body | 256 | valid |
| 0.0ms | 2× | body | 256 | infinite |
Compiled 278 to 213 computations (23.4% saved)
| 1× | egg-herbie |
| 10× | +-commutative |
| 8× | sub-neg |
| 8× | if-if-or-not |
| 8× | *-commutative |
| 4× | not-or |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 38 | 173 |
| 1 | 59 | 173 |
| 2 | 67 | 173 |
| 3 | 71 | 169 |
| 4 | 72 | 169 |
| 5 | 73 | 169 |
| 1× | done |
| 1× | saturated |
| Inputs |
|---|
(-.f64 (*.f64 x (+.f64 y z)) z) |
(if (<=.f64 y -3572557697657767/23817051317718446589520242536874132581700120107002038199303870846751188192899823151552628349788604516295066307994130118526061826166445047808) (-.f64 (*.f64 y x) z) (if (<=.f64 y 449999999999999978491609088) (-.f64 (*.f64 z x) z) (-.f64 (*.f64 y x) z))) |
(if (<=.f64 x -56000000000000004701547394123613228537714039310085284193600798720) (*.f64 z x) (if (<=.f64 x 860000000000000032238571494039916473248421665328571839560363629707285782358856455063339008) (-.f64 (*.f64 y x) z) (if (<=.f64 x 7500000000000000029205591979680845707111421392203106136146502117502755901704843518089270456387818928631020025586647040) (*.f64 z x) (-.f64 (*.f64 y x) z)))) |
(if (<=.f64 x -1) (*.f64 z x) (if (<=.f64 x 58) (neg.f64 z) (*.f64 z x))) |
(neg.f64 z) |
| Outputs |
|---|
(-.f64 (*.f64 x (+.f64 y z)) z) |
(if (<=.f64 y -3572557697657767/23817051317718446589520242536874132581700120107002038199303870846751188192899823151552628349788604516295066307994130118526061826166445047808) (-.f64 (*.f64 y x) z) (if (<=.f64 y 449999999999999978491609088) (-.f64 (*.f64 z x) z) (-.f64 (*.f64 y x) z))) |
(if (or (<=.f64 y -3572557697657767/23817051317718446589520242536874132581700120107002038199303870846751188192899823151552628349788604516295066307994130118526061826166445047808) (not (<=.f64 y 449999999999999978491609088))) (-.f64 (*.f64 x y) z) (-.f64 (*.f64 x z) z)) |
(if (<=.f64 x -56000000000000004701547394123613228537714039310085284193600798720) (*.f64 z x) (if (<=.f64 x 860000000000000032238571494039916473248421665328571839560363629707285782358856455063339008) (-.f64 (*.f64 y x) z) (if (<=.f64 x 7500000000000000029205591979680845707111421392203106136146502117502755901704843518089270456387818928631020025586647040) (*.f64 z x) (-.f64 (*.f64 y x) z)))) |
(if (<=.f64 x -56000000000000004701547394123613228537714039310085284193600798720) (*.f64 x z) (if (or (<=.f64 x 860000000000000032238571494039916473248421665328571839560363629707285782358856455063339008) (not (<=.f64 x 7500000000000000029205591979680845707111421392203106136146502117502755901704843518089270456387818928631020025586647040))) (-.f64 (*.f64 x y) z) (*.f64 x z))) |
(if (or (<=.f64 x -56000000000000004701547394123613228537714039310085284193600798720) (and (not (<=.f64 x 860000000000000032238571494039916473248421665328571839560363629707285782358856455063339008)) (<=.f64 x 7500000000000000029205591979680845707111421392203106136146502117502755901704843518089270456387818928631020025586647040))) (*.f64 x z) (-.f64 (*.f64 x y) z)) |
(if (<=.f64 x -1) (*.f64 z x) (if (<=.f64 x 58) (neg.f64 z) (*.f64 z x))) |
(if (<=.f64 x -1) (*.f64 x z) (if (<=.f64 x 58) (neg.f64 z) (*.f64 x z))) |
(neg.f64 z) |
Compiled 80 to 51 computations (36.3% saved)
| 1316× | fma-neg |
| 1062× | fma-def |
| 1028× | fma-def |
| 594× | distribute-lft-neg-in |
| 492× | distribute-rgt-neg-in |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 21 |
| 1 | 21 | 21 |
| 2 | 31 | 21 |
| 3 | 46 | 19 |
| 4 | 65 | 19 |
| 5 | 90 | 19 |
| 6 | 142 | 19 |
| 7 | 217 | 19 |
| 8 | 468 | 19 |
| 9 | 842 | 19 |
| 10 | 1123 | 19 |
| 11 | 1217 | 19 |
| 12 | 1222 | 19 |
| 0 | 108 | 1226 |
| 1 | 280 | 1146 |
| 2 | 998 | 1146 |
| 3 | 4461 | 1036 |
| 1× | node limit |
| 1× | saturated |
Compiled 100 to 43 computations (57% saved)
Compiled 160 to 84 computations (47.5% saved)
Loading profile data...