
Time bar (total: 1.2s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 0 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 1 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 2 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 3 |
| 50% | 49.9% | 49.9% | 0.1% | 0% | 0% | 0% | 4 |
| 50% | 49.9% | 49.9% | 0.1% | 0% | 0% | 0% | 5 |
| 50% | 49.9% | 49.9% | 0.1% | 0% | 0% | 0% | 6 |
| 75% | 74.9% | 25% | 0.1% | 0% | 0% | 0% | 7 |
| 75% | 74.9% | 25% | 0.1% | 0% | 0% | 0% | 8 |
| 75% | 74.9% | 25% | 0.1% | 0% | 0% | 0% | 9 |
| 87.5% | 87.4% | 12.5% | 0.1% | 0% | 0% | 0% | 10 |
| 87.5% | 87.4% | 12.5% | 0.1% | 0% | 0% | 0% | 11 |
| 87.5% | 87.4% | 12.5% | 0.1% | 0% | 0% | 0% | 12 |
Compiled 7 to 7 computations (0% saved)
| 474.0ms | 8 256× | 0 | valid |
ival-mult: 74.0ms (47.9% of total)ival-div: 71.0ms (46% of total)ival-true: 7.0ms (4.5% of total)ival-assert: 3.0ms (1.9% of total)| 1× | egg-herbie |
| 818× | times-frac |
| 190× | distribute-lft-in |
| 186× | associate-*r/ |
| 186× | associate-/r* |
| 180× | unsub-neg |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 21 | 56 |
| 1 | 59 | 48 |
| 2 | 146 | 48 |
| 3 | 490 | 48 |
| 4 | 1227 | 48 |
| 5 | 1922 | 48 |
| 6 | 1976 | 48 |
| 7 | 1994 | 48 |
| 8 | 2034 | 48 |
| 9 | 2058 | 48 |
| 0 | 5 | 5 |
| 0 | 7 | 5 |
| 1 | 10 | 5 |
| 2 | 13 | 5 |
| 3 | 14 | 5 |
| 0 | 14 | 5 |
| 1× | iter limit |
| 1× | saturated |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(/.f64 (*.f64 x y) z) |
| Outputs |
|---|
(/.f64 (*.f64 x y) z) |
(negabs z)
(negabs y)
(negabs x)
(sort x y)
| Ground Truth | Overpredictions | Example | Underpredictions | Example | Subexpression |
|---|---|---|---|---|---|
| 29 | 0 | - | 1 | (2.5929010748279164e-262 1.263691228749769e-52 6.680355804912071e-85) | (/.f64 (*.f64 x y) z) |
| 0 | 0 | - | 0 | - | y |
| 0 | 0 | - | 0 | - | z |
| 0 | 0 | - | 0 | - | (*.f64 x y) |
| 0 | 0 | - | 0 | - | x |
| Operator | Subexpression | Explanation | Count | |
|---|---|---|---|---|
/.f64 | (/.f64 (*.f64 x y) z) | o/n | 18 | 0 |
| ↳ | (*.f64 x y) | overflow | 37 | |
/.f64 | (/.f64 (*.f64 x y) z) | u/n | 10 | 0 |
| ↳ | (*.f64 x y) | underflow | 24 |
| Predicted + | Predicted - | |
|---|---|---|
| + | 28 | 1 |
| - | 0 | 227 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 28 | 0 | 1 |
| - | 0 | 0 | 227 |
| number | freq |
|---|---|
| 0 | 228 |
| 1 | 28 |
| Predicted + | Predicted Maybe | Predicted - | |
|---|---|---|---|
| + | 1 | 0 | 0 |
| - | 0 | 0 | 0 |
| 20.0ms | 512× | 0 | valid |
Compiled 42 to 24 computations (42.9% saved)
ival-mult: 4.0ms (53.1% of total)ival-div: 3.0ms (39.8% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)Compiled 3 to 3 computations (0% saved)
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 89.3% | (/.f64 (*.f64 x y) z) |
Compiled 8 to 5 computations (37.5% saved)
| 1× | egg-herbie |
Found 2 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | cost-diff | 0 | (*.f64 x y) |
| ✓ | cost-diff | 0 | (/.f64 (*.f64 x y) z) |
| 12× | lower-*.f32 |
| 10× | lower-*.f64 |
| 6× | *-commutative |
| 6× | lower-/.f32 |
| 4× | associate-/l* |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 11 |
| 0 | 7 | 11 |
| 1 | 10 | 11 |
| 2 | 13 | 11 |
| 3 | 14 | 11 |
| 0 | 14 | 11 |
| 1× | iter limit |
| 1× | saturated |
| 1× | iter limit |
| Inputs |
|---|
(/.f64 (*.f64 x y) z) |
(*.f64 x y) |
x |
y |
z |
| Outputs |
|---|
(/.f64 (*.f64 x y) z) |
(*.f64 x y) |
x |
y |
z |
Found 2 expressions of interest:
| New | Metric | Score | Program |
|---|---|---|---|
| ✓ | accuracy | 100.0% | (*.f64 x y) |
| ✓ | accuracy | 89.3% | (/.f64 (*.f64 x y) z) |
| 10.0ms | 256× | 0 | valid |
Compiled 13 to 7 computations (46.2% saved)
ival-div: 2.0ms (53.9% of total)ival-mult: 2.0ms (53.9% of total)ival-true: 0.0ms (0% of total)ival-assert: 0.0ms (0% of total)| Inputs |
|---|
#<alt (/.f64 (*.f64 x y) z)> |
#<alt (*.f64 x y)> |
| Outputs |
|---|
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (/ (* x y) z)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
#<alt (* x y)> |
15 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 6.0ms | z | @ | 0 | (/ (* x y) z) |
| 1.0ms | z | @ | inf | (/ (* x y) z) |
| 1.0ms | x | @ | inf | (* x y) |
| 1.0ms | y | @ | 0 | (/ (* x y) z) |
| 1.0ms | x | @ | 0 | (/ (* x y) z) |
| 1× | batch-egg-rewrite |
| 1 066× | lower-*.f32 |
| 1 064× | lower-*.f64 |
| 848× | lower-/.f32 |
| 846× | lower-/.f64 |
| 234× | times-frac |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 8 |
| 0 | 7 | 8 |
| 1 | 18 | 8 |
| 2 | 71 | 8 |
| 3 | 361 | 8 |
| 0 | 2367 | 8 |
| 1× | iter limit |
| 1× | iter limit |
| 1× | node limit |
| 1× | iter limit |
| Inputs |
|---|
(/.f64 (*.f64 x y) z) |
(*.f64 x y) |
| Outputs |
|---|
(+.f64 #s(literal 0 binary64) (/.f64 (*.f64 x y) z)) |
(+.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64)) (/.f64 (*.f64 x y) z)) |
(exp.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 z (*.f64 x y))))) |
(-.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(fma.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64) (/.f64 (*.f64 x y) z)) |
(neg.f64 (/.f64 (*.f64 y (neg.f64 x)) z)) |
(/.f64 x (/.f64 z y)) |
(/.f64 y (/.f64 z x)) |
(/.f64 (*.f64 x y) z) |
(/.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(/.f64 (*.f64 y (neg.f64 x)) (neg.f64 z)) |
(/.f64 #s(literal 1 binary64) (/.f64 z (*.f64 x y))) |
(/.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 #s(literal 1 binary64) (*.f64 x y))) |
(/.f64 (/.f64 y z) (/.f64 #s(literal 1 binary64) x)) |
(/.f64 #s(literal -1 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) |
(/.f64 (neg.f64 y) (/.f64 z (neg.f64 x))) |
(/.f64 (/.f64 #s(literal -1 binary64) z) (/.f64 #s(literal -1 binary64) (*.f64 x y))) |
(/.f64 (neg.f64 x) (/.f64 (neg.f64 z) y)) |
(/.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64)) |
(/.f64 (/.f64 x z) (/.f64 #s(literal 1 binary64) y)) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 (neg.f64 z) (*.f64 x y))) |
(/.f64 (-.f64 (*.f64 #s(literal 0 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) (neg.f64 z)) (*.f64 (neg.f64 z) (/.f64 z (*.f64 y (neg.f64 x))))) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 x y))) (*.f64 z z)) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 y (neg.f64 x)))) (*.f64 (neg.f64 z) z)) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal 1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) (neg.f64 z))) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal -1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) z)) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal 1 binary64)) (*.f64 (*.f64 x y) (neg.f64 z))) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal -1 binary64)) (*.f64 (*.f64 x y) z)) |
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x y))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 z (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 z (*.f64 x y))) |
(/.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (/.f64 z (neg.f64 x))) |
(/.f64 (*.f64 (neg.f64 x) #s(literal 1 binary64)) (/.f64 (neg.f64 z) y)) |
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z) (*.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))))) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z))) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x y)) |
(pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(pow.f64 (/.f64 z (*.f64 x y)) #s(literal -1 binary64)) |
(pow.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 2 binary64)) |
(pow.f64 (*.f64 (/.f64 z (*.f64 x y)) (/.f64 z (*.f64 x y))) #s(literal -1/2 binary64)) |
(pow.f64 (exp.f64 (log.f64 (/.f64 z (*.f64 x y)))) #s(literal -1 binary64)) |
(*.f64 x (/.f64 y z)) |
(*.f64 y (/.f64 x z)) |
(*.f64 (*.f64 x y) (/.f64 #s(literal 1 binary64) z)) |
(*.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(*.f64 (*.f64 y (neg.f64 x)) (/.f64 #s(literal -1 binary64) z)) |
(*.f64 #s(literal 1 binary64) (/.f64 (*.f64 x y) z)) |
(*.f64 (/.f64 #s(literal 1 binary64) z) (*.f64 x y)) |
(*.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 x (/.f64 #s(literal 1 binary64) y))) |
(*.f64 (/.f64 y z) x) |
(*.f64 (/.f64 y z) (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64))) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(*.f64 (neg.f64 y) (/.f64 x (neg.f64 z))) |
(*.f64 (/.f64 #s(literal -1 binary64) z) (*.f64 y (neg.f64 x))) |
(*.f64 (/.f64 #s(literal -1 binary64) z) (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64))) |
(*.f64 (neg.f64 x) (/.f64 y (neg.f64 z))) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64)) |
(*.f64 (/.f64 x z) y) |
(*.f64 (/.f64 x z) (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (/.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64))) |
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y)))) |
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 x y))) |
(*.f64 (/.f64 y (neg.f64 z)) (neg.f64 x)) |
(*.f64 (/.f64 x (neg.f64 z)) (neg.f64 y)) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)) (/.f64 x z)) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)) (/.f64 #s(literal -1 binary64) z)) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)) (/.f64 y z)) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) x) #s(literal -1 binary64)) (pow.f64 (/.f64 (neg.f64 z) y) #s(literal -1 binary64))) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) y) #s(literal -1 binary64)) (pow.f64 (/.f64 z (neg.f64 x)) #s(literal -1 binary64))) |
(*.f64 (/.f64 (pow.f64 z #s(literal -1/2 binary64)) #s(literal 1 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y)))) |
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z y)) (neg.f64 x)) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (/.f64 x (neg.f64 z))) |
(*.f64 (*.f64 (*.f64 x y) (pow.f64 z #s(literal -1/2 binary64))) (pow.f64 z #s(literal -1/2 binary64))) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (/.f64 y (neg.f64 z))) |
(*.f64 (*.f64 #s(literal 1 binary64) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) |
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 y)) (neg.f64 x)) |
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 x)) (neg.f64 y)) |
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z x)) (neg.f64 y)) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z (*.f64 z z)))) (*.f64 z z)) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z z))) z) |
(+.f64 (*.f64 x y) #s(literal 0 binary64)) |
(+.f64 #s(literal 0 binary64) (*.f64 x y)) |
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y))) #s(literal -1 binary64))) |
(-.f64 #s(literal 0 binary64) (*.f64 y (neg.f64 x))) |
(fma.f64 x y #s(literal 0 binary64)) |
(fma.f64 y x #s(literal 0 binary64)) |
(fma.f64 (*.f64 x y) #s(literal 1 binary64) #s(literal 0 binary64)) |
(fma.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64) #s(literal 0 binary64)) |
(fma.f64 #s(literal 1 binary64) (*.f64 x y) #s(literal 0 binary64)) |
(fma.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 y) (neg.f64 x) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 x) (neg.f64 y) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 0 binary64)) |
(fma.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) #s(literal 0 binary64)) |
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x) #s(literal 0 binary64)) |
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y) #s(literal 0 binary64)) |
(neg.f64 (*.f64 y (neg.f64 x))) |
(/.f64 (*.f64 x y) #s(literal 1 binary64)) |
(/.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64)) |
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (*.f64 x y))) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 y (neg.f64 x))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (+.f64 #s(literal 0 binary64) (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (+.f64 #s(literal 0 binary64) (-.f64 (*.f64 x (*.f64 y (*.f64 x y))) #s(literal 0 binary64)))) |
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (*.f64 y (neg.f64 x)) #s(literal 3 binary64))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(pow.f64 (*.f64 x y) #s(literal 1 binary64)) |
(pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1 binary64)) |
(*.f64 x y) |
(*.f64 y x) |
(*.f64 (*.f64 x y) #s(literal 1 binary64)) |
(*.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64)) |
(*.f64 #s(literal 1 binary64) (*.f64 x y)) |
(*.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x))) |
(*.f64 (neg.f64 y) (neg.f64 x)) |
(*.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64))) |
(*.f64 (neg.f64 x) (neg.f64 y)) |
(*.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64))) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64))) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x)) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y)) |
| 1× | egg-herbie |
| 12× | lower-*.f64 |
| 12× | lower-*.f32 |
| 6× | *-commutative |
| 6× | lower-/.f32 |
| 6× | lower-/.f64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 252 |
| 1 | 8 | 252 |
| 2 | 11 | 252 |
| 3 | 12 | 252 |
| 0 | 12 | 252 |
| 1× | iter limit |
| 1× | saturated |
| Inputs |
|---|
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(/ (* x y) z) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
(* x y) |
| Outputs |
|---|
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(/ (* x y) z) |
(/.f64 (*.f64 x y) z) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
(* x y) |
(*.f64 x y) |
| 1× | egg-herbie |
| 2× | 1-exp |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 251 | 1393 |
| 1 | 252 | 1393 |
| 0 | 252 | 1393 |
| 1× | saturated |
| 1× | saturated |
| Inputs |
|---|
(+.f64 #s(literal 0 binary64) (/.f64 (*.f64 x y) z)) |
(+.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64)) (/.f64 (*.f64 x y) z)) |
(exp.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 z (*.f64 x y))))) |
(-.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(fma.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64) (/.f64 (*.f64 x y) z)) |
(neg.f64 (/.f64 (*.f64 y (neg.f64 x)) z)) |
(/.f64 x (/.f64 z y)) |
(/.f64 y (/.f64 z x)) |
(/.f64 (*.f64 x y) z) |
(/.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(/.f64 (*.f64 y (neg.f64 x)) (neg.f64 z)) |
(/.f64 #s(literal 1 binary64) (/.f64 z (*.f64 x y))) |
(/.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 #s(literal 1 binary64) (*.f64 x y))) |
(/.f64 (/.f64 y z) (/.f64 #s(literal 1 binary64) x)) |
(/.f64 #s(literal -1 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) |
(/.f64 (neg.f64 y) (/.f64 z (neg.f64 x))) |
(/.f64 (/.f64 #s(literal -1 binary64) z) (/.f64 #s(literal -1 binary64) (*.f64 x y))) |
(/.f64 (neg.f64 x) (/.f64 (neg.f64 z) y)) |
(/.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64)) |
(/.f64 (/.f64 x z) (/.f64 #s(literal 1 binary64) y)) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 (neg.f64 z) (*.f64 x y))) |
(/.f64 (-.f64 (*.f64 #s(literal 0 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) (neg.f64 z)) (*.f64 (neg.f64 z) (/.f64 z (*.f64 y (neg.f64 x))))) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 x y))) (*.f64 z z)) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 y (neg.f64 x)))) (*.f64 (neg.f64 z) z)) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal 1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) (neg.f64 z))) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal -1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) z)) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal 1 binary64)) (*.f64 (*.f64 x y) (neg.f64 z))) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal -1 binary64)) (*.f64 (*.f64 x y) z)) |
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x y))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 z (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 z (*.f64 x y))) |
(/.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (/.f64 z (neg.f64 x))) |
(/.f64 (*.f64 (neg.f64 x) #s(literal 1 binary64)) (/.f64 (neg.f64 z) y)) |
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z) (*.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))))) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z))) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x y)) |
(pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(pow.f64 (/.f64 z (*.f64 x y)) #s(literal -1 binary64)) |
(pow.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 2 binary64)) |
(pow.f64 (*.f64 (/.f64 z (*.f64 x y)) (/.f64 z (*.f64 x y))) #s(literal -1/2 binary64)) |
(pow.f64 (exp.f64 (log.f64 (/.f64 z (*.f64 x y)))) #s(literal -1 binary64)) |
(*.f64 x (/.f64 y z)) |
(*.f64 y (/.f64 x z)) |
(*.f64 (*.f64 x y) (/.f64 #s(literal 1 binary64) z)) |
(*.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(*.f64 (*.f64 y (neg.f64 x)) (/.f64 #s(literal -1 binary64) z)) |
(*.f64 #s(literal 1 binary64) (/.f64 (*.f64 x y) z)) |
(*.f64 (/.f64 #s(literal 1 binary64) z) (*.f64 x y)) |
(*.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 x (/.f64 #s(literal 1 binary64) y))) |
(*.f64 (/.f64 y z) x) |
(*.f64 (/.f64 y z) (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64))) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(*.f64 (neg.f64 y) (/.f64 x (neg.f64 z))) |
(*.f64 (/.f64 #s(literal -1 binary64) z) (*.f64 y (neg.f64 x))) |
(*.f64 (/.f64 #s(literal -1 binary64) z) (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64))) |
(*.f64 (neg.f64 x) (/.f64 y (neg.f64 z))) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64)) |
(*.f64 (/.f64 x z) y) |
(*.f64 (/.f64 x z) (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (/.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64))) |
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y)))) |
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 x y))) |
(*.f64 (/.f64 y (neg.f64 z)) (neg.f64 x)) |
(*.f64 (/.f64 x (neg.f64 z)) (neg.f64 y)) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)) (/.f64 x z)) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)) (/.f64 #s(literal -1 binary64) z)) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)) (/.f64 y z)) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) x) #s(literal -1 binary64)) (pow.f64 (/.f64 (neg.f64 z) y) #s(literal -1 binary64))) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) y) #s(literal -1 binary64)) (pow.f64 (/.f64 z (neg.f64 x)) #s(literal -1 binary64))) |
(*.f64 (/.f64 (pow.f64 z #s(literal -1/2 binary64)) #s(literal 1 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y)))) |
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z y)) (neg.f64 x)) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (/.f64 x (neg.f64 z))) |
(*.f64 (*.f64 (*.f64 x y) (pow.f64 z #s(literal -1/2 binary64))) (pow.f64 z #s(literal -1/2 binary64))) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (/.f64 y (neg.f64 z))) |
(*.f64 (*.f64 #s(literal 1 binary64) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) |
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 y)) (neg.f64 x)) |
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 x)) (neg.f64 y)) |
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z x)) (neg.f64 y)) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z (*.f64 z z)))) (*.f64 z z)) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z z))) z) |
(+.f64 (*.f64 x y) #s(literal 0 binary64)) |
(+.f64 #s(literal 0 binary64) (*.f64 x y)) |
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y))) #s(literal -1 binary64))) |
(-.f64 #s(literal 0 binary64) (*.f64 y (neg.f64 x))) |
(fma.f64 x y #s(literal 0 binary64)) |
(fma.f64 y x #s(literal 0 binary64)) |
(fma.f64 (*.f64 x y) #s(literal 1 binary64) #s(literal 0 binary64)) |
(fma.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64) #s(literal 0 binary64)) |
(fma.f64 #s(literal 1 binary64) (*.f64 x y) #s(literal 0 binary64)) |
(fma.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 y) (neg.f64 x) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 x) (neg.f64 y) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 0 binary64)) |
(fma.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) #s(literal 0 binary64)) |
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x) #s(literal 0 binary64)) |
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y) #s(literal 0 binary64)) |
(neg.f64 (*.f64 y (neg.f64 x))) |
(/.f64 (*.f64 x y) #s(literal 1 binary64)) |
(/.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64)) |
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (*.f64 x y))) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 y (neg.f64 x))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (+.f64 #s(literal 0 binary64) (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (+.f64 #s(literal 0 binary64) (-.f64 (*.f64 x (*.f64 y (*.f64 x y))) #s(literal 0 binary64)))) |
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (*.f64 y (neg.f64 x)) #s(literal 3 binary64))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(pow.f64 (*.f64 x y) #s(literal 1 binary64)) |
(pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1 binary64)) |
(*.f64 x y) |
(*.f64 y x) |
(*.f64 (*.f64 x y) #s(literal 1 binary64)) |
(*.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64)) |
(*.f64 #s(literal 1 binary64) (*.f64 x y)) |
(*.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x))) |
(*.f64 (neg.f64 y) (neg.f64 x)) |
(*.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64))) |
(*.f64 (neg.f64 x) (neg.f64 y)) |
(*.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64))) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64))) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x)) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y)) |
| Outputs |
|---|
(+.f64 #s(literal 0 binary64) (/.f64 (*.f64 x y) z)) |
(+.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64)) (/.f64 (*.f64 x y) z)) |
(exp.f64 (*.f64 #s(literal -1 binary64) (log.f64 (/.f64 z (*.f64 x y))))) |
(-.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(fma.f64 (/.f64 #s(literal -1 binary64) z) #s(literal 0 binary64) (/.f64 (*.f64 x y) z)) |
(neg.f64 (/.f64 (*.f64 y (neg.f64 x)) z)) |
(/.f64 x (/.f64 z y)) |
(/.f64 y (/.f64 z x)) |
(/.f64 (*.f64 x y) z) |
(/.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(/.f64 (*.f64 y (neg.f64 x)) (neg.f64 z)) |
(/.f64 #s(literal 1 binary64) (/.f64 z (*.f64 x y))) |
(/.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 #s(literal 1 binary64) (*.f64 x y))) |
(/.f64 (/.f64 y z) (/.f64 #s(literal 1 binary64) x)) |
(/.f64 #s(literal -1 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) |
(/.f64 (neg.f64 y) (/.f64 z (neg.f64 x))) |
(/.f64 (/.f64 #s(literal -1 binary64) z) (/.f64 #s(literal -1 binary64) (*.f64 x y))) |
(/.f64 (neg.f64 x) (/.f64 (neg.f64 z) y)) |
(/.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64)) |
(/.f64 (/.f64 x z) (/.f64 #s(literal 1 binary64) y)) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 (neg.f64 z) (*.f64 x y))) |
(/.f64 (-.f64 (*.f64 #s(literal 0 binary64) (/.f64 z (*.f64 y (neg.f64 x)))) (neg.f64 z)) (*.f64 (neg.f64 z) (/.f64 z (*.f64 y (neg.f64 x))))) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 x y))) (*.f64 z z)) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (neg.f64 z) (*.f64 y (neg.f64 x)))) (*.f64 (neg.f64 z) z)) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal 1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) (neg.f64 z))) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) #s(literal -1 binary64)) (*.f64 (*.f64 x (*.f64 y (*.f64 x y))) z)) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal 1 binary64)) (*.f64 (*.f64 x y) (neg.f64 z))) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) #s(literal -1 binary64)) (*.f64 (*.f64 x y) z)) |
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 (neg.f64 z) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (*.f64 #s(literal 1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 (neg.f64 z) (*.f64 x y))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 z (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 z (*.f64 x y))) |
(/.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (/.f64 z (neg.f64 x))) |
(/.f64 (*.f64 (neg.f64 x) #s(literal 1 binary64)) (/.f64 (neg.f64 z) y)) |
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal 3 binary64))) (+.f64 #s(literal 0 binary64) (fma.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z) (*.f64 #s(literal 0 binary64) (/.f64 (*.f64 y (neg.f64 x)) z))))) |
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) (/.f64 (*.f64 y (neg.f64 x)) z))) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 (/.f64 #s(literal -1 binary64) z) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (*.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (/.f64 #s(literal -1 binary64) z)) (*.f64 x y)) |
(pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(pow.f64 (/.f64 z (*.f64 x y)) #s(literal -1 binary64)) |
(pow.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 2 binary64)) |
(pow.f64 (*.f64 (/.f64 z (*.f64 x y)) (/.f64 z (*.f64 x y))) #s(literal -1/2 binary64)) |
(pow.f64 (exp.f64 (log.f64 (/.f64 z (*.f64 x y)))) #s(literal -1 binary64)) |
(*.f64 x (/.f64 y z)) |
(*.f64 y (/.f64 x z)) |
(*.f64 (*.f64 x y) (/.f64 #s(literal 1 binary64) z)) |
(*.f64 (/.f64 (*.f64 x y) z) #s(literal 1 binary64)) |
(*.f64 (*.f64 y (neg.f64 x)) (/.f64 #s(literal -1 binary64) z)) |
(*.f64 #s(literal 1 binary64) (/.f64 (*.f64 x y) z)) |
(*.f64 (/.f64 #s(literal 1 binary64) z) (*.f64 x y)) |
(*.f64 (/.f64 #s(literal 1 binary64) z) (/.f64 x (/.f64 #s(literal 1 binary64) y))) |
(*.f64 (/.f64 y z) x) |
(*.f64 (/.f64 y z) (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64))) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y (neg.f64 x)) z)) |
(*.f64 (neg.f64 y) (/.f64 x (neg.f64 z))) |
(*.f64 (/.f64 #s(literal -1 binary64) z) (*.f64 y (neg.f64 x))) |
(*.f64 (/.f64 #s(literal -1 binary64) z) (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64))) |
(*.f64 (neg.f64 x) (/.f64 y (neg.f64 z))) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) z) #s(literal -1 binary64)) |
(*.f64 (/.f64 x z) y) |
(*.f64 (/.f64 x z) (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64))) |
(*.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) (/.f64 (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64)) #s(literal 1 binary64))) |
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y)))) |
(*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 (pow.f64 z #s(literal -1/2 binary64)) (*.f64 x y))) |
(*.f64 (/.f64 y (neg.f64 z)) (neg.f64 x)) |
(*.f64 (/.f64 x (neg.f64 z)) (neg.f64 y)) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) y) #s(literal -1 binary64)) (/.f64 x z)) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) (*.f64 x y)) #s(literal -1 binary64)) (/.f64 #s(literal -1 binary64) z)) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1 binary64)) (/.f64 y z)) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) x) #s(literal -1 binary64)) (pow.f64 (/.f64 (neg.f64 z) y) #s(literal -1 binary64))) |
(*.f64 (pow.f64 (/.f64 #s(literal -1 binary64) y) #s(literal -1 binary64)) (pow.f64 (/.f64 z (neg.f64 x)) #s(literal -1 binary64))) |
(*.f64 (/.f64 (pow.f64 z #s(literal -1/2 binary64)) #s(literal 1 binary64)) (/.f64 (pow.f64 z #s(literal -1/2 binary64)) (/.f64 #s(literal 1 binary64) (*.f64 x y)))) |
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z y)) (neg.f64 x)) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (/.f64 x (neg.f64 z))) |
(*.f64 (*.f64 (*.f64 x y) (pow.f64 z #s(literal -1/2 binary64))) (pow.f64 z #s(literal -1/2 binary64))) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (/.f64 y (neg.f64 z))) |
(*.f64 (*.f64 #s(literal 1 binary64) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) (pow.f64 (/.f64 (*.f64 x y) z) #s(literal 1/2 binary64))) |
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 y)) (neg.f64 x)) |
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) z) (neg.f64 x)) (neg.f64 y)) |
(*.f64 (/.f64 #s(literal -1 binary64) (/.f64 z x)) (neg.f64 y)) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z (*.f64 z z)))) (*.f64 z z)) |
(*.f64 (/.f64 (*.f64 y (neg.f64 x)) (neg.f64 (*.f64 z z))) z) |
(+.f64 (*.f64 x y) #s(literal 0 binary64)) |
(+.f64 #s(literal 0 binary64) (*.f64 x y)) |
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y))) #s(literal -1 binary64))) |
(-.f64 #s(literal 0 binary64) (*.f64 y (neg.f64 x))) |
(fma.f64 x y #s(literal 0 binary64)) |
(fma.f64 y x #s(literal 0 binary64)) |
(fma.f64 (*.f64 x y) #s(literal 1 binary64) #s(literal 0 binary64)) |
(fma.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64) #s(literal 0 binary64)) |
(fma.f64 #s(literal 1 binary64) (*.f64 x y) #s(literal 0 binary64)) |
(fma.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x)) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 y) (neg.f64 x) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64)) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 x) (neg.f64 y) #s(literal 0 binary64)) |
(fma.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 0 binary64)) |
(fma.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) #s(literal 0 binary64)) |
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x) #s(literal 0 binary64)) |
(fma.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y) #s(literal 0 binary64)) |
(neg.f64 (*.f64 y (neg.f64 x))) |
(/.f64 (*.f64 x y) #s(literal 1 binary64)) |
(/.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64)) |
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (*.f64 x y))) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (*.f64 x y))))) |
(/.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y)))) (*.f64 y (neg.f64 x))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (*.f64 #s(literal -1 binary64) (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y)))))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(/.f64 (neg.f64 (neg.f64 (*.f64 x (*.f64 y (*.f64 x y))))) (*.f64 x y)) |
(/.f64 (+.f64 #s(literal 0 binary64) (*.f64 (*.f64 x y) (*.f64 x (*.f64 y (*.f64 x y))))) (+.f64 #s(literal 0 binary64) (-.f64 (*.f64 x (*.f64 y (*.f64 x y))) #s(literal 0 binary64)))) |
(/.f64 (-.f64 #s(literal 0 binary64) (pow.f64 (*.f64 y (neg.f64 x)) #s(literal 3 binary64))) (*.f64 x (*.f64 y (*.f64 x y)))) |
(pow.f64 (*.f64 x y) #s(literal 1 binary64)) |
(pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1 binary64)) |
(*.f64 x y) |
(*.f64 y x) |
(*.f64 (*.f64 x y) #s(literal 1 binary64)) |
(*.f64 (*.f64 y (neg.f64 x)) #s(literal -1 binary64)) |
(*.f64 #s(literal 1 binary64) (*.f64 x y)) |
(*.f64 #s(literal -1 binary64) (*.f64 y (neg.f64 x))) |
(*.f64 (neg.f64 y) (neg.f64 x)) |
(*.f64 (neg.f64 y) (*.f64 (neg.f64 x) #s(literal 1 binary64))) |
(*.f64 (neg.f64 x) (neg.f64 y)) |
(*.f64 (neg.f64 x) (*.f64 (neg.f64 y) #s(literal 1 binary64))) |
(*.f64 (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64)) (pow.f64 (/.f64 #s(literal 1 binary64) (*.f64 x y)) #s(literal -1/2 binary64))) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 y)) (neg.f64 x)) |
(*.f64 (*.f64 #s(literal 1 binary64) (neg.f64 x)) (neg.f64 y)) |
Compiled 603 to 5 computations (99.2% saved)
1 alts after pruning (0 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 120 | 0 | 120 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 120 | 1 | 121 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 89.3% | (/.f64 (*.f64 x y) z) |
Compiled 16 to 10 computations (37.5% saved)
| 1× | egg-herbie |
| 2× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 5 |
| 1 | 6 | 5 |
| 1× | saturated |
| Inputs |
|---|
(/.f64 (*.f64 x y) z) |
| Outputs |
|---|
(/.f64 (*.f64 x y) z) |
| 1× | done |
Compiled 8 to 5 computations (37.5% saved)
(sort x y)
(negabs x)
(negabs y)
(negabs z)
Compiled 212 to 130 computations (38.7% saved)
Loading profile data...