Time bar (total: 10.0s)
| 1× | search |
| True | Other | False | Iter |
|---|---|---|---|
| 0% | 99.9% | 0.1% | 0 |
| 0% | 99.9% | 0.1% | 1 |
| 0% | 99.9% | 0.1% | 2 |
| 0% | 99.9% | 0.1% | 3 |
| 0% | 99.9% | 0.1% | 4 |
| 0% | 99.9% | 0.1% | 5 |
| 0% | 99.9% | 0.1% | 6 |
| 25% | 74.9% | 0.1% | 7 |
| 37.4% | 62.4% | 0.1% | 8 |
| 37.4% | 62.4% | 0.1% | 9 |
| 56.2% | 43.7% | 0.1% | 10 |
| 65.5% | 34.3% | 0.1% | 11 |
| 65.5% | 34.3% | 0.1% | 12 |
Compiled 13 to 9 computations (30.8% saved)
| 1.1s | 1940× | body | 1024 | valid |
| 1.0s | 5314× | body | 256 | valid |
| 327.0ms | 997× | body | 512 | valid |
| 4.0ms | 5× | body | 2048 | valid |
| 2× | egg-herbie |
| 16× | fma-def_binary64 |
| 8× | *-commutative_binary64 |
| 4× | +-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 22 | 48 |
| 1 | 38 | 48 |
| 2 | 50 | 48 |
| 0 | 3 | 3 |
| 1× | saturated |
| 1× | saturated |
| Inputs |
|---|
0 |
1 |
2 |
| Outputs |
|---|
0 |
1 |
2 |
| Inputs |
|---|
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 y (sin.f64 x)) (*.f64 z (cos.f64 x))) |
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 z)) (*.f64 y (cos.f64 z))) |
| Outputs |
|---|
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 y (sin.f64 x)) (*.f64 z (cos.f64 x))) |
(fma.f64 y (sin.f64 x) (*.f64 z (cos.f64 x))) |
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) |
(fma.f64 z (sin.f64 y) (*.f64 x (cos.f64 y))) |
(fma.f64 x (cos.f64 y) (*.f64 (sin.f64 y) z)) |
(+.f64 (*.f64 x (sin.f64 z)) (*.f64 y (cos.f64 z))) |
(fma.f64 x (sin.f64 z) (*.f64 y (cos.f64 z))) |
Compiled 15 to 11 computations (26.7% saved)
| 1× | egg-herbie |
| 4× | fma-def_binary64 |
| 2× | *-commutative_binary64 |
| 1× | +-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 12 |
| 1 | 13 | 12 |
| 2 | 16 | 12 |
| 1× | saturated |
| Inputs |
|---|
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
| Outputs |
|---|
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y))) |
Compiled 20 to 9 computations (55% saved)
2 alts after pruning (2 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 1 | 1 | 2 |
| Fresh | 0 | 1 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 0 | 0 |
| Total | 1 | 2 | 3 |
| Status | Error | Program |
|---|---|---|
| ▶ | 0.2b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
Compiled 12 to 8 computations (33.3% saved)
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.1b | (*.f64 x (sin.f64 y)) |
| ✓ | 0.1b | (*.f64 z (cos.f64 y)) |
Compiled 27 to 8 computations (70.4% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | y | @ | 0 | (*.f64 x (sin.f64 y)) |
| 1.0ms | z | @ | 0 | (*.f64 z (cos.f64 y)) |
| 1.0ms | y | @ | 0 | (*.f64 z (cos.f64 y)) |
| 1.0ms | x | @ | 0 | (*.f64 x (sin.f64 y)) |
| 1.0ms | z | @ | inf | (*.f64 z (cos.f64 y)) |
| 1× | batch-egg-rewrite |
| 740× | pow1_binary64 |
| 673× | add-log-exp_binary64 |
| 673× | log1p-expm1-u_binary64 |
| 673× | expm1-log1p-u_binary64 |
| 657× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 12 |
| 1 | 155 | 12 |
| 2 | 1836 | 12 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 z (cos.f64 y)) |
(*.f64 x (sin.f64 y)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (cos.f64 y)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (sin.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sin.f64 y)))))))) |
| 1× | egg-herbie |
| 1987× | fma-def_binary64 |
| 682× | sqr-pow_binary64 |
| 443× | pow-sqr_binary64 |
| 420× | *-commutative_binary64 |
| 376× | cube-prod_binary64 |
Useful iterations: 8 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 49 | 336 |
| 1 | 129 | 329 |
| 2 | 359 | 314 |
| 3 | 1204 | 313 |
| 4 | 1950 | 313 |
| 5 | 2861 | 313 |
| 6 | 2999 | 313 |
| 7 | 3216 | 313 |
| 8 | 3430 | 305 |
| 9 | 5384 | 305 |
| 10 | 5803 | 305 |
| 11 | 6309 | 305 |
| 12 | 6910 | 305 |
| 13 | 7615 | 305 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
z |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 y x) |
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
| Outputs |
|---|
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
z |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) |
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) z) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(*.f64 z (fma.f64 (*.f64 y -1/2) y 1)) |
(*.f64 z (fma.f64 y (*.f64 y -1/2) 1)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))) |
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4)))) |
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z)) |
(*.f64 z (+.f64 (*.f64 -1/2 (*.f64 y y)) (fma.f64 1/24 (pow.f64 y 4) 1))) |
(*.f64 z (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 (*.f64 y -1/2) y 1))) |
(fma.f64 (*.f64 y (*.f64 y z)) (fma.f64 y (*.f64 y 1/24) -1/2) z) |
(fma.f64 z (*.f64 y (fma.f64 y -1/2 (*.f64 1/24 (pow.f64 y 3)))) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (+.f64 z (*.f64 1/24 (*.f64 z (pow.f64 y 4)))))) |
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 z (*.f64 1/24 (pow.f64 y 4)) z)) |
(*.f64 z (+.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))))) |
(*.f64 z (fma.f64 y (fma.f64 -1/720 (pow.f64 y 5) (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) 1))) |
(*.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1)))) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 y x) |
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))) |
(fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))) |
(*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))) |
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y)) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))) |
(*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y))) |
(*.f64 x (+.f64 (*.f64 1/120 (pow.f64 y 5)) (fma.f64 -1/6 (pow.f64 y 3) y))) |
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y))) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/5040 (*.f64 x (pow.f64 y 7)) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7)))))) |
(*.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7))) (fma.f64 1/120 (pow.f64 y 5) y))) |
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/5040 (pow.f64 y 7) (fma.f64 1/120 (pow.f64 y 5) y)))) |
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/5040 (pow.f64 y 7) y)))) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
Compiled 595 to 263 computations (55.8% saved)
10 alts after pruning (9 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 33 | 9 | 42 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 33 | 10 | 43 |
| Status | Error | Program |
|---|---|---|
| 18.7b | (+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) (*.f64 z (cos.f64 y))) | |
| 31.9b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) | |
| ▶ | 30.1b | (+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) (*.f64 z (cos.f64 y))) |
| ▶ | 13.8b | (+.f64 (*.f64 x (sin.f64 y)) z) |
| ▶ | 0.6b | (+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) (*.f64 z (cos.f64 y))) |
| ✓ | 0.2b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
| 22.7b | (+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) | |
| 26.2b | (+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) (*.f64 z (cos.f64 y))) | |
| ▶ | 0.9b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)) |
| ▶ | 25.7b | (+.f64 (*.f64 x (sin.f64 y)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)) |
Compiled 270 to 194 computations (28.1% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.1b | (*.f64 x (sin.f64 y)) | |
| 0.1b | (*.f64 z (cos.f64 y)) | |
| ✓ | 0.6b | (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) |
| ✓ | 8.0b | (cbrt.f64 (*.f64 x (sin.f64 y))) |
Compiled 43 to 14 computations (67.4% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 58.0ms | x | @ | -inf | (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) |
| 2.0ms | y | @ | -inf | (cbrt.f64 (*.f64 x (sin.f64 y))) |
| 2.0ms | y | @ | inf | (cbrt.f64 (*.f64 x (sin.f64 y))) |
| 1.0ms | y | @ | 0 | (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) |
| 1.0ms | y | @ | inf | (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) |
| 1× | batch-egg-rewrite |
| 638× | pow1_binary64 |
| 596× | add-log-exp_binary64 |
| 596× | log1p-expm1-u_binary64 |
| 596× | expm1-log1p-u_binary64 |
| 581× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 14 |
| 1 | 166 | 14 |
| 2 | 1669 | 14 |
| 1× | node limit |
| Inputs |
|---|
(cbrt.f64 (*.f64 x (sin.f64 y))) |
(pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 x (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) 2) (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) (pow.f64 (*.f64 x (sin.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1/3) (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sin.f64 y)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 x (sin.f64 y))))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) (*.f64 (sqrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) 2) 3) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) 3) (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (sin.f64 y)) 2)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 1) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (cbrt.f64 x)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (pow.f64 (*.f64 x (sin.f64 y)) 1/6)) (pow.f64 (*.f64 x (sin.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sin.f64 y)))))))) |
| 1× | egg-herbie |
| 1290× | sqr-pow_binary64 |
| 666× | pow-sqr_binary64 |
| 625× | cube-prod_binary64 |
| 559× | fabs-mul_binary64 |
| 373× | unpow3_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 136 |
| 1 | 26 | 112 |
| 2 | 40 | 112 |
| 3 | 51 | 112 |
| 4 | 75 | 112 |
| 5 | 169 | 112 |
| 6 | 541 | 112 |
| 7 | 1207 | 112 |
| 8 | 1299 | 112 |
| 9 | 1437 | 112 |
| 10 | 1600 | 112 |
| 11 | 1839 | 112 |
| 12 | 2166 | 112 |
| 13 | 2594 | 112 |
| 14 | 3100 | 112 |
| 15 | 3706 | 112 |
| 16 | 4429 | 112 |
| 17 | 4750 | 112 |
| 18 | 5034 | 112 |
| 19 | 5258 | 112 |
| 20 | 5438 | 112 |
| 21 | 5522 | 112 |
| 22 | 6465 | 112 |
| 23 | 7442 | 112 |
| 24 | 7908 | 112 |
| 1× | node limit |
| Inputs |
|---|
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
| Outputs |
|---|
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(pow.f64 (*.f64 (sin.f64 y) x) 1/3) |
(cbrt.f64 (*.f64 (sin.f64 y) x)) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x)) |
(*.f64 (*.f64 (sin.f64 y) x) 1) |
(*.f64 (sin.f64 y) x) |
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.1b | (*.f64 x (sin.f64 y)) |
Compiled 18 to 6 computations (66.7% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (*.f64 x (sin.f64 y)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)) |
| ✓ | 0.0b | (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
| 0.1b | (*.f64 x (sin.f64 y)) | |
| ✓ | 6.3b | (*.f64 (pow.f64 y 2) z) |
Compiled 52 to 30 computations (42.3% saved)
21 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | y | @ | 0 | (*.f64 (pow.f64 y 2) z) |
| 1.0ms | z | @ | 0 | (*.f64 (pow.f64 y 2) z) |
| 1.0ms | z | @ | inf | (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
| 1.0ms | x | @ | 0 | (+.f64 (*.f64 x (sin.f64 y)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)) |
| 1.0ms | y | @ | inf | (*.f64 (pow.f64 y 2) z) |
| 1× | batch-egg-rewrite |
| 686× | log-prod_binary64 |
| 647× | fma-def_binary64 |
| 367× | pow2_binary64 |
| 347× | fma-neg_binary64 |
| 253× | pow1/3_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 13 | 35 |
| 1 | 288 | 35 |
| 2 | 3850 | 35 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (pow.f64 y 2) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 x (sin.f64 y)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 y (*.f64 y z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 z 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 z 3) (pow.f64 (*.f64 y y) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 y (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (*.f64 y y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 y (*.f64 y z))) 1)))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4) (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1))) (/.f64 (*.f64 z z) (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (fma.f64 (*.f64 y y) -1/2 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 2) (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) -1/8 (pow.f64 z 3)) (/.f64 1 (fma.f64 z (-.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))) (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4 (*.f64 (neg.f64 z) z)) (/.f64 1 (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 y y) -1/2 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 z (-.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))) (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)) (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) -1/8 (pow.f64 z 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1)) (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4 (*.f64 (neg.f64 z) z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) -1/8 (pow.f64 z 3)) (fma.f64 z (-.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))) (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) -1/8 (pow.f64 z 3)) (fma.f64 z z (-.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4) (*.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4 (*.f64 (neg.f64 z) z)) (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) -1/8 (pow.f64 z 3))) (neg.f64 (fma.f64 z (-.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))) (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4 (*.f64 (neg.f64 z) z))) (neg.f64 (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 z z) (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)) (-.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 z (-.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))) (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)) (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) -1/8 (pow.f64 z 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1)) (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4 (*.f64 (neg.f64 z) z))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 z)) (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 z) (+.f64 1 (expm1.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 z)) (+.f64 1 (expm1.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2)))) (exp.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2)))) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z 1 (*.f64 (*.f64 y y) (*.f64 z -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (*.f64 (*.f64 y y) -1/2) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (*.f64 y z)) -1/2 z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1/2 (*.f64 y (*.f64 y z)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2)) 1 z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 z (*.f64 (*.f64 y y) (*.f64 z -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (*.f64 y y) (*.f64 z -1/2)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2))) (cbrt.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)) (cbrt.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2))) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 z) (pow.f64 (cbrt.f64 z) 2) (*.f64 (*.f64 y y) (*.f64 z -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (cbrt.f64 z) (*.f64 (*.f64 y y) (*.f64 z -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2)) (*.f64 (cbrt.f64 (*.f64 y (*.f64 y z))) -1/2) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 -1/2)) (*.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 -1/2)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (sqrt.f64 z) (*.f64 (*.f64 y y) (*.f64 z -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 z)) (*.f64 (*.f64 y (sqrt.f64 z)) -1/2) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y y) -1/2) z z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 z) (*.f64 y y) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 (cbrt.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2))) (cbrt.f64 (*.f64 y (*.f64 y z))) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 (*.f64 y (sqrt.f64 z))) (*.f64 y (sqrt.f64 z)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) 1) z z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) (sqrt.f64 z)) (sqrt.f64 z) z))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (fma.f64 x (sin.f64 y) (neg.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))) (/.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2) (fma.f64 x (sin.f64 y) (neg.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) (pow.f64 (cbrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) 2) (cbrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) (sqrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3)) (/.f64 1 (fma.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (-.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2)) (/.f64 1 (fma.f64 x (sin.f64 y) (neg.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (-.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 2)) (+.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x (sin.f64 y) (neg.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) (-.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3)) (fma.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (-.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3)) (+.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2) (-.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (*.f64 (sin.f64 y) (*.f64 x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2)) (fma.f64 x (sin.f64 y) (neg.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3))) (neg.f64 (fma.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (-.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2))) (neg.f64 (fma.f64 x (sin.f64 y) (neg.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))) 2) (-.f64 (*.f64 z z) (*.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))) z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2) (pow.f64 (*.f64 x (sin.f64 y)) 2)) (-.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))) 2) (*.f64 z z)) (-.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))) z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (-.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 2)) (+.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x (sin.f64 y) (neg.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) (-.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 z) (exp.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 z)) (exp.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 z) (*.f64 (pow.f64 (exp.f64 x) (sin.f64 y)) (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 z)) (*.f64 (pow.f64 (exp.f64 x) (sin.f64 y)) (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) (pow.f64 (exp.f64 x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (+.f64 1 (expm1.f64 (*.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) (+.f64 1 (expm1.f64 (*.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x (sin.f64 y)))) (exp.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 x) (sin.f64 y)) (+.f64 1 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x (sin.f64 y)))) (+.f64 1 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 x) (sin.f64 y)) (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2)) (exp.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2)))) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 x) (sin.f64 y)) (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2)) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z 1 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (*.f64 (*.f64 y y) -1/2) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (fma.f64 (*.f64 y y) -1/2 1) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2)) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (*.f64 y z)) -1/2 (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1/2 (*.f64 y (*.f64 y z)) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2)) 1 (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) 1 (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (sin.f64 y) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 y) x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sin.f64 y)) 1 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 z (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (*.f64 y y) (*.f64 z -1/2)) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x (sin.f64 y)) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (sin.f64 y) 2)) (*.f64 (cbrt.f64 (sin.f64 y)) x) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2))) (cbrt.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4)) (cbrt.f64 (*.f64 (*.f64 y y) (*.f64 z -1/2))) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 z) (pow.f64 (cbrt.f64 z) 2) (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (cbrt.f64 z) (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (cbrt.f64 (*.f64 x (sin.f64 y))) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 2) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) 2) (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2)) (*.f64 (cbrt.f64 (*.f64 y (*.f64 y z))) -1/2) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sin.f64 y)) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 y)) (*.f64 (sqrt.f64 (sin.f64 y)) x) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 -1/2)) (*.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 -1/2)) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (sqrt.f64 z) (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (sqrt.f64 (*.f64 x (sin.f64 y))) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 z)) (*.f64 (*.f64 y (sqrt.f64 z)) -1/2) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sin.f64 y)) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 3) -1/8 (pow.f64 z 3)) (/.f64 1 (fma.f64 z (-.f64 z (*.f64 (*.f64 y y) (*.f64 z -1/2))) (*.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4))) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2) 1/4 (*.f64 (neg.f64 z) z)) (/.f64 1 (*.f64 z (fma.f64 (*.f64 y y) -1/2 -1))) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y y) -1/2) z (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2))) 1 z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2)))) 2) (cbrt.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2)))) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2)))) (sqrt.f64 (fma.f64 x (sin.f64 y) (*.f64 (*.f64 y y) (*.f64 z -1/2)))) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (*.f64 y y) -1/2 1) z (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 z) (*.f64 y y) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 (cbrt.f64 (pow.f64 (*.f64 y (*.f64 y z)) 2))) (cbrt.f64 (*.f64 y (*.f64 y z))) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 (*.f64 y (sqrt.f64 z))) (*.f64 y (sqrt.f64 z)) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) 1) z (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 z (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (cbrt.f64 (pow.f64 (sin.f64 y) 2))) (cbrt.f64 (sin.f64 y)) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x) (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))))) |
| 1× | egg-herbie |
| 653× | distribute-lft-out_binary64 |
| 595× | distribute-rgt-neg-in_binary64 |
| 589× | fma-neg_binary64 |
| 471× | fma-def_binary64 |
| 459× | distribute-lft-neg-in_binary64 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 37 | 758 |
| 1 | 94 | 678 |
| 2 | 231 | 678 |
| 3 | 632 | 675 |
| 4 | 2135 | 674 |
| 5 | 4472 | 674 |
| 1× | node limit |
| Inputs |
|---|
z |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))) |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x)) |
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x)) |
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x)) |
| Outputs |
|---|
z |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(*.f64 -1/2 (*.f64 z (*.f64 y y))) |
(*.f64 z (*.f64 -1/2 (*.f64 y y))) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(*.f64 -1/2 (*.f64 z (*.f64 y y))) |
(*.f64 z (*.f64 -1/2 (*.f64 y y))) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
z |
(+.f64 (*.f64 y x) z) |
(fma.f64 y x z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x z)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 y x z)) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 y x)) |
(fma.f64 y (+.f64 x (*.f64 y (*.f64 z -1/2))) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z))) |
(fma.f64 y x (fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) z))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z)) |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(*.f64 -1/2 (*.f64 z (*.f64 y y))) |
(*.f64 z (*.f64 -1/2 (*.f64 y y))) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
(*.f64 -1/2 (*.f64 z (*.f64 y y))) |
(*.f64 z (*.f64 -1/2 (*.f64 y y))) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) |
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z) |
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z) |
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z)) |
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.1b | (*.f64 x (sin.f64 y)) | |
| 0.1b | (*.f64 z (cos.f64 y)) | |
| ✓ | 0.6b | (cbrt.f64 (*.f64 z (cos.f64 y))) |
| ✓ | 0.8b | (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) |
Compiled 43 to 14 computations (67.4% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 11.0ms | y | @ | 0 | (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) |
| 4.0ms | y | @ | inf | (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) |
| 4.0ms | y | @ | -inf | (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) |
| 2.0ms | z | @ | -inf | (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) |
| 2.0ms | z | @ | inf | (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) |
| 1× | batch-egg-rewrite |
| 638× | pow1_binary64 |
| 596× | add-log-exp_binary64 |
| 596× | log1p-expm1-u_binary64 |
| 596× | expm1-log1p-u_binary64 |
| 581× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 14 |
| 1 | 166 | 14 |
| 2 | 1669 | 14 |
| 1× | node limit |
| Inputs |
|---|
(pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 (cos.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/6) (*.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/6) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (*.f64 (sqrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) 2) 3) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/6) 3) (pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) 1) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (cbrt.f64 z)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (pow.f64 (*.f64 z (cos.f64 y)) 1/6)) (pow.f64 (*.f64 z (cos.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (cos.f64 y)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 z (cos.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) 2) (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/6) (pow.f64 (*.f64 z (cos.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 1/3) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (cos.f64 y)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 z (cos.f64 y))))))))) |
| 1× | egg-herbie |
| 694× | associate-*r*_binary64 |
| 686× | associate-*l*_binary64 |
| 551× | fma-def_binary64 |
| 428× | distribute-rgt-out_binary64 |
| 229× | distribute-rgt-in_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 89 | 496 |
| 1 | 286 | 453 |
| 2 | 979 | 401 |
| 3 | 5892 | 392 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (pow.f64 1 1/3) z) |
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (*.f64 (pow.f64 1 1/3) z)) |
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z))) |
(+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (*.f64 -1/9 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3))))) (*.f64 -1/9 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (pow.f64 y 6)) (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z)))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(pow.f64 z 1/3) |
(+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))) |
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))) |
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
| Outputs |
|---|
(*.f64 (pow.f64 1 1/3) z) |
z |
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (*.f64 (pow.f64 1 1/3) z)) |
(fma.f64 (*.f64 z -1/2) (*.f64 y y) z) |
(fma.f64 z (*.f64 (*.f64 y y) -1/2) z) |
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z))) |
(fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (+.f64 (*.f64 1/3 (*.f64 z -1/24)) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z)) |
(fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (fma.f64 1/3 (*.f64 z -1/24) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 z (*.f64 -1/24 (cbrt.f64 (/.f64 1 z)))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z)) |
(fma.f64 (fma.f64 z 1/18 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z -1/72))) (pow.f64 y 4) (fma.f64 z (*.f64 (*.f64 y y) -1/2) z)) |
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/24)) (pow.f64 y 4) (fma.f64 z (*.f64 (*.f64 y y) -1/2) z)) |
(+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (*.f64 -1/9 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3))))) (*.f64 -1/9 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (pow.f64 y 6)) (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z)))) |
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 z)) (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24))))) (*.f64 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) -1/9)) (+.f64 (*.f64 1/3 (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24))))) (fma.f64 -1/6 (*.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z))))) (*.f64 -1/9 (*.f64 z -1/24))))) (pow.f64 y 6) (fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (+.f64 (*.f64 1/3 (*.f64 z -1/24)) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z))) |
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 z)) (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72))) (*.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 (*.f64 -1/9 z) -1/24))) (fma.f64 1/3 (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72)) (fma.f64 (*.f64 -1/6 (cbrt.f64 z)) (fma.f64 2/3 (*.f64 z (*.f64 -1/24 (cbrt.f64 (/.f64 1 z)))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 (*.f64 -1/9 z) -1/24)))) (pow.f64 y 6) (fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (fma.f64 1/3 (*.f64 z -1/24) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 z (*.f64 -1/24 (cbrt.f64 (/.f64 1 z)))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z))) |
(fma.f64 z (*.f64 (*.f64 y y) -1/2) (fma.f64 (fma.f64 1/3 (*.f64 z -23/2160) (fma.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 (/.f64 1 z)) (+.f64 (*.f64 2/3 (*.f64 z -23/2160)) (*.f64 z 1/216))) (fma.f64 (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 -1/6 (cbrt.f64 z)) (*.f64 z 1/216)))) (pow.f64 y 6) (fma.f64 (fma.f64 z 1/18 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z -1/72))) (pow.f64 y 4) z))) |
(fma.f64 z (*.f64 (*.f64 y y) -1/2) (fma.f64 (+.f64 (*.f64 (cbrt.f64 z) (+.f64 (*.f64 (cbrt.f64 (/.f64 1 z)) (+.f64 (*.f64 2/3 (*.f64 z -23/2160)) (*.f64 z 1/216))) (*.f64 -1/6 (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z))))))) (fma.f64 1/3 (*.f64 z -23/2160) (*.f64 z 1/216))) (pow.f64 y 6) (fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/24)) (pow.f64 y 4) z))) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) |
(*.f64 z (cos.f64 y)) |
(pow.f64 z 1/3) |
(cbrt.f64 z) |
(+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))) |
(+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)))) |
(fma.f64 -1/6 (*.f64 y (*.f64 y (cbrt.f64 z))) (cbrt.f64 z)) |
(fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z)) |
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))) |
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/24) (pow.f64 y 4))) (+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z))))) |
(fma.f64 1/3 (*.f64 (*.f64 z -1/24) (*.f64 (pow.f64 y 4) (cbrt.f64 (/.f64 1 (*.f64 z z))))) (fma.f64 -1/6 (*.f64 y (*.f64 y (cbrt.f64 z))) (cbrt.f64 z))) |
(fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (fma.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/72) (pow.f64 y 4)) (cbrt.f64 z))) |
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))))) |
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24)))) (pow.f64 y 6))) (fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/24) (pow.f64 y 4))) (+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)))))) |
(+.f64 (fma.f64 -1/6 (*.f64 y (*.f64 y (cbrt.f64 z))) (cbrt.f64 z)) (*.f64 (*.f64 1/3 (cbrt.f64 (/.f64 1 (*.f64 z z)))) (+.f64 (*.f64 (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72)) (pow.f64 y 6)) (*.f64 z (*.f64 -1/24 (pow.f64 y 4)))))) |
(fma.f64 (*.f64 1/3 (cbrt.f64 (/.f64 1 (*.f64 z z)))) (fma.f64 (*.f64 z -23/2160) (pow.f64 y 6) (*.f64 z (*.f64 (pow.f64 y 4) -1/24))) (fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
(pow.f64 (*.f64 (cos.f64 y) z) 1/3) |
(cbrt.f64 (*.f64 z (cos.f64 y))) |
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.1b | (*.f64 x (sin.f64 y)) | |
| 0.1b | (*.f64 z (cos.f64 y)) | |
| ✓ | 0.2b | (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) |
| ✓ | 7.5b | (sqrt.f64 (*.f64 x (sin.f64 y))) |
Compiled 43 to 14 computations (67.4% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 2.0ms | x | @ | 0 | (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) |
| 1.0ms | x | @ | inf | (sqrt.f64 (*.f64 x (sin.f64 y))) |
| 1.0ms | y | @ | 0 | (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) |
| 1.0ms | x | @ | -inf | (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) |
| 1.0ms | x | @ | 0 | (sqrt.f64 (*.f64 x (sin.f64 y))) |
| 1× | batch-egg-rewrite |
| 613× | pow1_binary64 |
| 565× | add-log-exp_binary64 |
| 565× | log1p-expm1-u_binary64 |
| 565× | expm1-log1p-u_binary64 |
| 551× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 14 |
| 1 | 163 | 14 |
| 2 | 1592 | 14 |
| 1× | node limit |
| Inputs |
|---|
(sqrt.f64 (*.f64 x (sin.f64 y))) |
(pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 x (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) (pow.f64 (*.f64 x (sin.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sin.f64 y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 x (sin.f64 y))))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))) (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) (*.f64 (sqrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 1/4)) (pow.f64 (*.f64 x (sin.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (sin.f64 y)) 2)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (cbrt.f64 (*.f64 x (sin.f64 y)))) (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (sqrt.f64 x)) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sin.f64 y)))))))) |
| 1× | egg-herbie |
| 1× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 6 | 112 |
| 1 | 7 | 112 |
| 1× | saturated |
| Inputs |
|---|
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
| Outputs |
|---|
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(sqrt.f64 (*.f64 (sin.f64 y) x)) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
Compiled 10037 to 4271 computations (57.4% saved)
23 alts after pruning (21 fresh and 2 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 525 | 19 | 544 |
| Fresh | 2 | 2 | 4 |
| Picked | 1 | 0 | 1 |
| Done | 3 | 2 | 5 |
| Total | 531 | 23 | 554 |
| Status | Error | Program |
|---|---|---|
| 30.2b | (+.f64 (pow.f64 (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) 2) 2) (*.f64 z (cos.f64 y))) | |
| 41.2b | (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) | |
| 14.3b | (+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z) | |
| 32.7b | (+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y))) | |
| 37.3b | (+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) z) | |
| 48.6b | (+.f64 (pow.f64 (*.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 x)) 2) (*.f64 z (cos.f64 y))) | |
| ▶ | 30.8b | (+.f64 (*.f64 y x) z) |
| ▶ | 31.9b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) |
| 1.0b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3)) | |
| 31.9b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))) | |
| 30.8b | (fma.f64 y x z) | |
| ▶ | 14.6b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 36.3b | (*.f64 (sin.f64 y) x) | |
| 26.2b | (+.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))) 3) (*.f64 z (cos.f64 y))) | |
| ✓ | 0.2b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
| 0.8b | (+.f64 (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 x)) 3) (*.f64 z (cos.f64 y))) | |
| 23.3b | (+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)) | |
| 22.7b | (+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) | |
| ▶ | 0.4b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
| ▶ | 29.9b | (+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) z) |
| 0.9b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))) | |
| 37.5b | (+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z) | |
| ✓ | 13.8b | (+.f64 (*.f64 x (sin.f64 y)) z) |
Compiled 615 to 432 computations (29.8% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.1b | (*.f64 x (sin.f64 y)) | |
| ✓ | 0.1b | (*.f64 (cbrt.f64 (cos.f64 y)) z) |
| ✓ | 0.3b | (pow.f64 (cbrt.f64 (cos.f64 y)) 2) |
| ✓ | 0.3b | (cbrt.f64 (cos.f64 y)) |
Compiled 55 to 18 computations (67.3% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 4.0ms | y | @ | -inf | (*.f64 (cbrt.f64 (cos.f64 y)) z) |
| 2.0ms | z | @ | 0 | (*.f64 (cbrt.f64 (cos.f64 y)) z) |
| 2.0ms | y | @ | inf | (*.f64 (cbrt.f64 (cos.f64 y)) z) |
| 2.0ms | y | @ | inf | (cbrt.f64 (cos.f64 y)) |
| 2.0ms | y | @ | -inf | (cbrt.f64 (cos.f64 y)) |
| 1× | batch-egg-rewrite |
| 659× | pow1_binary64 |
| 607× | add-log-exp_binary64 |
| 607× | log1p-expm1-u_binary64 |
| 607× | expm1-log1p-u_binary64 |
| 592× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 21 |
| 1 | 159 | 21 |
| 2 | 1730 | 21 |
| 1× | node limit |
| Inputs |
|---|
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cbrt.f64 (cos.f64 y)) 2) |
(*.f64 (cbrt.f64 (cos.f64 y)) z) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 1/6) (pow.f64 (cos.f64 y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 4))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 1/3) (pow.f64 (sqrt.f64 (cos.f64 y)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (cos.f64 y)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (pow.f64 (cos.f64 y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 1/6) (*.f64 (pow.f64 (cos.f64 y) 1/6) (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2)) (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 (cos.f64 y))))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (cbrt.f64 (cos.f64 y)) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (cos.f64 y) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 z 3) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cbrt.f64 (cos.f64 y)) z))))))) |
| 1× | egg-herbie |
| 1201× | fma-def_binary64 |
| 703× | sqr-pow_binary64 |
| 671× | cube-prod_binary64 |
| 407× | unpow3_binary64 |
| 402× | fabs-mul_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 50 | 432 |
| 1 | 128 | 423 |
| 2 | 328 | 414 |
| 3 | 1012 | 411 |
| 4 | 2280 | 411 |
| 5 | 2865 | 411 |
| 6 | 3010 | 411 |
| 7 | 3201 | 411 |
| 8 | 3416 | 411 |
| 9 | 3695 | 411 |
| 10 | 4476 | 411 |
| 11 | 4956 | 411 |
| 12 | 5535 | 411 |
| 13 | 6217 | 411 |
| 14 | 6552 | 411 |
| 15 | 6885 | 411 |
| 16 | 7211 | 411 |
| 17 | 7515 | 411 |
| 18 | 7753 | 411 |
| 1× | node limit |
| Inputs |
|---|
1 |
(+.f64 1 (*.f64 -1/6 (pow.f64 y 2))) |
(+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))) |
(+.f64 (*.f64 -23/6480 (pow.f64 y 6)) (+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2))))) |
(pow.f64 (cos.f64 y) 1/3) |
(pow.f64 (cos.f64 y) 1/3) |
(pow.f64 (cos.f64 y) 1/3) |
(pow.f64 (cos.f64 y) 1/3) |
(pow.f64 (cos.f64 y) 1/3) |
(pow.f64 (cos.f64 y) 1/3) |
(pow.f64 (cos.f64 y) 1/3) |
(pow.f64 (cos.f64 y) 1/3) |
1 |
(+.f64 1 (*.f64 -1/3 (pow.f64 y 2))) |
(+.f64 1 (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6)))) |
(+.f64 1 (+.f64 (*.f64 -1/1701 (pow.f64 y 8)) (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6))))) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
z |
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)) |
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -23/6480 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
| Outputs |
|---|
1 |
(+.f64 1 (*.f64 -1/6 (pow.f64 y 2))) |
(+.f64 1 (*.f64 -1/6 (*.f64 y y))) |
(fma.f64 -1/6 (*.f64 y y) 1) |
(+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))) |
(fma.f64 -1/72 (pow.f64 y 4) (+.f64 1 (*.f64 -1/6 (*.f64 y y)))) |
(fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -1/6 (*.f64 y y) 1)) |
(fma.f64 -1/6 (*.f64 y y) (fma.f64 -1/72 (pow.f64 y 4) 1)) |
(+.f64 (*.f64 -23/6480 (pow.f64 y 6)) (+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2))))) |
(fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/72 (pow.f64 y 4) (+.f64 1 (*.f64 -1/6 (*.f64 y y))))) |
(fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -1/6 (*.f64 y y) 1))) |
(fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/6 (*.f64 y y) 1))) |
(fma.f64 -1/6 (*.f64 y y) (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -23/6480 (pow.f64 y 6) 1))) |
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/72) -1/6) (fma.f64 -23/6480 (pow.f64 y 6) 1)) |
(fma.f64 -1/6 (*.f64 y y) (fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/72 (pow.f64 y 4) 1))) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
(pow.f64 (cos.f64 y) 1/3) |
(cbrt.f64 (cos.f64 y)) |
1 |
(+.f64 1 (*.f64 -1/3 (pow.f64 y 2))) |
(+.f64 1 (*.f64 (*.f64 y y) -1/3)) |
(fma.f64 (*.f64 y y) -1/3 1) |
(fma.f64 y (*.f64 y -1/3) 1) |
(+.f64 1 (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6)))) |
(+.f64 1 (fma.f64 -1/3 (*.f64 y y) (*.f64 (pow.f64 y 6) -1/405))) |
(+.f64 1 (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3)))) |
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 1)) |
(+.f64 1 (+.f64 (*.f64 -1/1701 (pow.f64 y 8)) (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6))))) |
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (*.f64 (pow.f64 y 6) -1/405)))) |
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3))))) |
(fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 1))) |
(fma.f64 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) (fma.f64 -1/1701 (pow.f64 y 8) 1))) |
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 -1/1701 (pow.f64 y 8) 1))) |
(fma.f64 (pow.f64 y 6) (fma.f64 (*.f64 y y) -1/1701 -1/405) (fma.f64 (*.f64 y y) -1/3 1)) |
(fma.f64 (*.f64 y y) (fma.f64 (pow.f64 y 6) -1/1701 -1/3) (fma.f64 (pow.f64 y 6) -1/405 1)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
z |
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z) |
(fma.f64 -1/6 (*.f64 (*.f64 y y) z) z) |
(*.f64 (fma.f64 -1/6 (*.f64 y y) 1) z) |
(fma.f64 y (*.f64 -1/6 (*.f64 y z)) z) |
(fma.f64 y (*.f64 z (*.f64 -1/6 y)) z) |
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)) |
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (fma.f64 -1/6 (*.f64 (*.f64 y y) z) z)) |
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (*.f64 (fma.f64 -1/6 (*.f64 y y) 1) z)) |
(fma.f64 z (fma.f64 -1/6 (*.f64 y y) (*.f64 -1/72 (pow.f64 y 4))) z) |
(fma.f64 z (*.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/72) -1/6)) z) |
(*.f64 (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -1/6 (*.f64 y y) 1)) z) |
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -23/6480 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z))) |
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (fma.f64 -23/6480 (*.f64 (pow.f64 y 6) z) (fma.f64 -1/6 (*.f64 (*.f64 y y) z) z))) |
(+.f64 (*.f64 (fma.f64 -1/6 (*.f64 y y) 1) z) (*.f64 z (fma.f64 -23/6480 (pow.f64 y 6) (*.f64 -1/72 (pow.f64 y 4))))) |
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (fma.f64 z (fma.f64 -1/6 (*.f64 y y) (*.f64 -23/6480 (pow.f64 y 6))) z)) |
(fma.f64 z (fma.f64 -1/6 (*.f64 y y) (fma.f64 -1/72 (pow.f64 y 4) (*.f64 -23/6480 (pow.f64 y 6)))) z) |
(*.f64 z (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/72) -1/6) (fma.f64 -23/6480 (pow.f64 y 6) 1))) |
(fma.f64 z (*.f64 (*.f64 y y) (fma.f64 y (fma.f64 -23/6480 (pow.f64 y 3) (*.f64 y -1/72)) -1/6)) z) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z) |
(*.f64 z (cbrt.f64 (cos.f64 y))) |
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (*.f64 y x) z) |
Compiled 14 to 5 computations (64.3% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | y | @ | 0 | (+.f64 (*.f64 y x) z) |
| 0.0ms | y | @ | inf | (+.f64 (*.f64 y x) z) |
| 0.0ms | x | @ | inf | (+.f64 (*.f64 y x) z) |
| 0.0ms | x | @ | -inf | (+.f64 (*.f64 y x) z) |
| 0.0ms | y | @ | -inf | (+.f64 (*.f64 y x) z) |
| 1× | batch-egg-rewrite |
| 707× | pow1_binary64 |
| 655× | add-log-exp_binary64 |
| 655× | log1p-expm1-u_binary64 |
| 655× | expm1-log1p-u_binary64 |
| 640× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 6 | 5 |
| 1 | 129 | 5 |
| 2 | 1775 | 5 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 (*.f64 y x) z) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 y x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 y x) 2) (-.f64 (*.f64 y x) z)) (/.f64 (*.f64 z z) (-.f64 (*.f64 y x) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 y x z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 y x z)) (pow.f64 (cbrt.f64 (fma.f64 y x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 y x z)) 2) (cbrt.f64 (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 y x z)) (sqrt.f64 (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z (-.f64 z (*.f64 y x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z z)) (/.f64 1 (-.f64 (*.f64 y x) z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z (-.f64 z (*.f64 y x)))) (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 z 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 y x) z) (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z (-.f64 z (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 z 3)) (+.f64 (*.f64 z z) (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 y (*.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z z)) (-.f64 (*.f64 y x) z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 z 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z (-.f64 z (*.f64 y x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z z))) (neg.f64 (-.f64 (*.f64 y x) z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 z z) (pow.f64 (*.f64 y x) 2)) (-.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 y x z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 y x z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 y x z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 y x z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 y x z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 y x z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y x) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 z (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (cbrt.f64 z) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (cbrt.f64 (*.f64 y x)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (sqrt.f64 z) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y x)) z))))) |
| 1× | egg-herbie |
| 1× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 5 | 24 |
| 1 | 6 | 24 |
| 1× | saturated |
| Inputs |
|---|
z |
(*.f64 y x) |
(*.f64 y x) |
z |
(*.f64 y x) |
(*.f64 y x) |
(*.f64 y x) |
z |
z |
| Outputs |
|---|
z |
(*.f64 y x) |
(*.f64 y x) |
z |
(*.f64 y x) |
(*.f64 y x) |
(*.f64 y x) |
z |
z |
Found 3 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.1b | (*.f64 x (sin.f64 y)) | |
| ✓ | 0.2b | (pow.f64 (*.f64 x (sin.f64 y)) 3) |
| ✓ | 34.0b | (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) |
Compiled 35 to 15 computations (57.1% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 8.0ms | y | @ | inf | (pow.f64 (*.f64 x (sin.f64 y)) 3) |
| 6.0ms | y | @ | 0 | (pow.f64 (*.f64 x (sin.f64 y)) 3) |
| 2.0ms | x | @ | -inf | (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) |
| 1.0ms | y | @ | -inf | (pow.f64 (*.f64 x (sin.f64 y)) 3) |
| 1.0ms | x | @ | -inf | (pow.f64 (*.f64 x (sin.f64 y)) 3) |
| 1× | batch-egg-rewrite |
| 645× | pow1_binary64 |
| 603× | add-log-exp_binary64 |
| 603× | log1p-expm1-u_binary64 |
| 603× | expm1-log1p-u_binary64 |
| 586× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 15 |
| 1 | 168 | 15 |
| 2 | 1728 | 15 |
| 1× | node limit |
| Inputs |
|---|
(cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) |
(pow.f64 (*.f64 x (sin.f64 y)) 3) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) (*.f64 (sqrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) 1/3) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3/2) 1/3) (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (sin.f64 y)) 2)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sin.f64 y)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 x (sin.f64 y)) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (sin.f64 y) (pow.f64 (*.f64 x (sin.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) (*.f64 x (pow.f64 (*.f64 x (sin.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 x (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 x (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) (*.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (*.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) (pow.f64 (sin.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3/2) (pow.f64 (*.f64 x (sin.f64 y)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 3) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 3) (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) 1) (*.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2)) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 2) (sqrt.f64 (*.f64 x (sin.f64 y)))) (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (*.f64 x (sin.f64 y))))))))) |
| 1× | egg-herbie |
| 708× | fma-def_binary64 |
| 486× | associate-*l*_binary64 |
| 460× | distribute-rgt-out_binary64 |
| 452× | associate-*r*_binary64 |
| 425× | distribute-rgt-in_binary64 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 73 | 632 |
| 1 | 229 | 617 |
| 2 | 872 | 572 |
| 3 | 4541 | 568 |
| 4 | 7031 | 565 |
| 5 | 7155 | 565 |
| 6 | 7291 | 565 |
| 7 | 7445 | 565 |
| 8 | 7633 | 565 |
| 9 | 7823 | 565 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(*.f64 y x) |
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 y 3) (pow.f64 x 3)) |
(+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3))) |
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3)))) |
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (+.f64 (*.f64 (pow.f64 y 3) (pow.f64 x 3)) (*.f64 (pow.f64 y 9) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x)) (+.f64 (*.f64 -1/360 (pow.f64 x 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/2520 (pow.f64 x 2)) (*.f64 -1/360 (pow.f64 x 2))) x) (*.f64 -1/5040 (pow.f64 x 3))))))))) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
| Outputs |
|---|
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1))) |
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1))) |
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1)))) |
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 x))) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1))) |
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1))) |
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1)))) |
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 x))) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1))) |
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1))) |
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1)))) |
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 x))) |
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x))) |
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1))) |
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1))) |
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1)))) |
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 x))) |
(*.f64 y x) |
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))) |
(fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))) |
(*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))) |
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y)) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))) |
(*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y))) |
(*.f64 x (+.f64 (*.f64 1/120 (pow.f64 y 5)) (fma.f64 -1/6 (pow.f64 y 3) y))) |
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/5040 (*.f64 x (pow.f64 y 7)) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))) |
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7)))))) |
(*.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7))) (fma.f64 1/120 (pow.f64 y 5) y))) |
(*.f64 x (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 -1/5040 (pow.f64 y 7) (*.f64 -1/6 (pow.f64 y 3))))) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (sin.f64 y) x) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 y 3) (pow.f64 x 3)) |
(pow.f64 (*.f64 y x) 3) |
(+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3))) |
(fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (*.f64 (pow.f64 y 3) (pow.f64 x 3))) |
(fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2))) |
(*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2))) |
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3)))) |
(fma.f64 (pow.f64 y 7) (fma.f64 (*.f64 (*.f64 x x) 2/45) x (*.f64 (pow.f64 x 3) 23/360)) (fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (*.f64 (pow.f64 y 3) (pow.f64 x 3)))) |
(fma.f64 (pow.f64 y 7) (fma.f64 (pow.f64 x 3) 23/360 (*.f64 (pow.f64 x 3) 2/45)) (fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2)))) |
(fma.f64 (pow.f64 y 7) (*.f64 (pow.f64 x 3) 13/120) (*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2)))) |
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (+.f64 (*.f64 (pow.f64 y 3) (pow.f64 x 3)) (*.f64 (pow.f64 y 9) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x)) (+.f64 (*.f64 -1/360 (pow.f64 x 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/2520 (pow.f64 x 2)) (*.f64 -1/360 (pow.f64 x 2))) x) (*.f64 -1/5040 (pow.f64 x 3))))))))) |
(fma.f64 (pow.f64 y 7) (fma.f64 (*.f64 (*.f64 x x) 2/45) x (*.f64 (pow.f64 x 3) 23/360)) (fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 9) (fma.f64 -1/6 (*.f64 x (*.f64 (*.f64 x x) 2/45)) (fma.f64 -1/360 (pow.f64 x 3) (fma.f64 (*.f64 (*.f64 x x) -1/315) x (*.f64 -1/5040 (pow.f64 x 3))))))))) |
(fma.f64 (pow.f64 y 7) (fma.f64 (pow.f64 x 3) 23/360 (*.f64 (pow.f64 x 3) 2/45)) (fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 9) (fma.f64 -1/6 (*.f64 (pow.f64 x 3) 2/45) (fma.f64 (pow.f64 x 3) -1/360 (fma.f64 -1/5040 (pow.f64 x 3) (*.f64 (pow.f64 x 3) -1/315)))))))) |
(fma.f64 (pow.f64 y 7) (*.f64 (pow.f64 x 3) 13/120) (fma.f64 (pow.f64 y 9) (+.f64 (*.f64 (pow.f64 x 3) -1/135) (fma.f64 -1/5040 (pow.f64 x 3) (*.f64 (pow.f64 x 3) -1/168))) (*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2))))) |
(fma.f64 (pow.f64 y 7) (*.f64 (pow.f64 x 3) 13/120) (fma.f64 (pow.f64 y 9) (+.f64 (*.f64 (pow.f64 x 3) -1/168) (*.f64 x (*.f64 (*.f64 x x) -23/3024))) (*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2))))) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) |
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (sqrt.f64 (*.f64 z (cos.f64 y))) |
| 0.1b | (*.f64 x (sin.f64 y)) | |
| 0.1b | (*.f64 z (cos.f64 y)) | |
| ✓ | 0.2b | (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2) |
Compiled 43 to 14 computations (67.4% saved)
12 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 4.0ms | z | @ | 0 | (sqrt.f64 (*.f64 z (cos.f64 y))) |
| 2.0ms | z | @ | 0 | (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2) |
| 2.0ms | z | @ | -inf | (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2) |
| 2.0ms | y | @ | 0 | (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2) |
| 1.0ms | z | @ | inf | (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2) |
| 1× | batch-egg-rewrite |
| 613× | pow1_binary64 |
| 565× | add-log-exp_binary64 |
| 565× | log1p-expm1-u_binary64 |
| 565× | expm1-log1p-u_binary64 |
| 551× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 14 |
| 1 | 163 | 14 |
| 2 | 1592 | 14 |
| 1× | node limit |
| Inputs |
|---|
(pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2) |
(sqrt.f64 (*.f64 z (cos.f64 y))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))) (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) (*.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (*.f64 (sqrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (pow.f64 (*.f64 z (cos.f64 y)) 1/4)) (pow.f64 (*.f64 z (cos.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (cbrt.f64 (*.f64 z (cos.f64 y)))) (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (sqrt.f64 z)) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (cos.f64 y)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 z (cos.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) (pow.f64 (*.f64 z (cos.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (cos.f64 y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 z (cos.f64 y))))))))) |
| 1× | egg-herbie |
| 398× | *-commutative_binary64 |
| 389× | distribute-rgt-in_binary64 |
| 382× | distribute-lft-in_binary64 |
| 316× | distribute-lft-out_binary64 |
| 307× | unswap-sqr_binary64 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 53 | 293 |
| 1 | 144 | 289 |
| 2 | 411 | 241 |
| 3 | 1786 | 214 |
| 4 | 5193 | 213 |
| 1× | node limit |
| Inputs |
|---|
z |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(sqrt.f64 z) |
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))) |
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))) |
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))) |
| Outputs |
|---|
z |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(*.f64 z (fma.f64 (*.f64 -1/2 y) y 1)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z)) |
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z)) |
(*.f64 z (+.f64 (fma.f64 (*.f64 -1/2 y) y 1) (*.f64 (pow.f64 y 4) 1/24))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z)) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(sqrt.f64 z) |
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))) |
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)))) |
(fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z)) |
(*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)) |
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))) |
(+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))) |
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2))) |
(fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))) |
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (pow.f64 y 4) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 1/2 (*.f64 z -1/48))))) |
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 4) (*.f64 1/2 (*.f64 z -1/48))))) |
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))) |
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 6) (+.f64 (*.f64 z -1/720) (*.f64 1/4 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)))))) (+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)))))) |
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2))) (fma.f64 1/2 (*.f64 (fma.f64 z -1/720 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) 1/4)) (*.f64 (pow.f64 y 6) (sqrt.f64 (/.f64 1 z)))) (sqrt.f64 z))) |
(fma.f64 (pow.f64 y 6) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (fma.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) 1/4 (*.f64 z -1/720)))) (fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)))) |
(+.f64 (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)) (*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 z))) (+.f64 (*.f64 (pow.f64 y 6) (fma.f64 z -1/720 (*.f64 -1/4 (*.f64 z 1/48)))) (*.f64 (pow.f64 y 4) (*.f64 z -1/48))))) |
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.1b | (sqrt.f64 (cos.f64 y)) |
| ✓ | 0.1b | (*.f64 z (sqrt.f64 (cos.f64 y))) |
| ✓ | 0.1b | (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) |
| 0.1b | (*.f64 x (sin.f64 y)) |
Compiled 45 to 10 computations (77.8% saved)
15 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | z | @ | 0 | (*.f64 z (sqrt.f64 (cos.f64 y))) |
| 1.0ms | y | @ | inf | (*.f64 z (sqrt.f64 (cos.f64 y))) |
| 1.0ms | y | @ | -inf | (*.f64 z (sqrt.f64 (cos.f64 y))) |
| 1.0ms | z | @ | -inf | (*.f64 z (sqrt.f64 (cos.f64 y))) |
| 1.0ms | z | @ | 0 | (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) |
| 1× | batch-egg-rewrite |
| 641× | pow1_binary64 |
| 588× | add-log-exp_binary64 |
| 588× | log1p-expm1-u_binary64 |
| 588× | expm1-log1p-u_binary64 |
| 573× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 19 |
| 1 | 138 | 19 |
| 2 | 1640 | 19 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(sqrt.f64 (cos.f64 y)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (cos.f64 y)))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (sqrt.f64 (cos.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (cos.f64 y) (*.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (sqrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (sqrt.f64 (cos.f64 y))))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 (sqrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 1/4) (pow.f64 (cos.f64 y) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (sqrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 1/2) (pow.f64 (cbrt.f64 (cos.f64 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 y) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (cos.f64 y)))))))) |
| 1× | egg-herbie |
| 1013× | fma-def_binary64 |
| 950× | distribute-rgt-out_binary64 |
| 761× | distribute-lft-out_binary64 |
| 654× | associate-*l*_binary64 |
| 487× | associate-*r*_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 48 | 402 |
| 1 | 119 | 392 |
| 2 | 318 | 379 |
| 3 | 1042 | 374 |
| 4 | 4130 | 374 |
| 5 | 7361 | 374 |
| 6 | 7708 | 374 |
| 7 | 7938 | 374 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
z |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 z (cos.f64 y)) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
z |
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z)))) |
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))) |
1 |
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1) |
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4)))) |
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6))))) |
| Outputs |
|---|
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
(*.f64 (cos.f64 y) z) |
z |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) |
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) z) |
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1)) |
(fma.f64 (*.f64 y z) (*.f64 y -1/2) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))) |
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4)))) |
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z)) |
(*.f64 z (+.f64 (*.f64 y (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) 1))) |
(*.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) 1))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (+.f64 z (*.f64 1/24 (*.f64 z (pow.f64 y 4)))))) |
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))) |
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (*.f64 z (fma.f64 1/24 (pow.f64 y 4) 1))) |
(*.f64 z (+.f64 (*.f64 y (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1)))) |
(*.f64 z (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 y (*.f64 y -1/2) (fma.f64 -1/720 (pow.f64 y 6) 1)))) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(*.f64 (cos.f64 y) z) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
(*.f64 (sqrt.f64 (cos.f64 y)) z) |
(*.f64 z (sqrt.f64 (cos.f64 y))) |
z |
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z) |
(fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) |
(*.f64 (fma.f64 (*.f64 y y) -1/4 1) z) |
(*.f64 z (fma.f64 y (*.f64 y -1/4) 1)) |
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z)))) |
(+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 (*.f64 z (pow.f64 y 4)) -1/96)) |
(fma.f64 (*.f64 y (*.f64 y z)) -1/4 (fma.f64 (*.f64 z (pow.f64 y 4)) -1/96 z)) |
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 1))) |
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))) |
(fma.f64 -19/5760 (*.f64 z (pow.f64 y 6)) (+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 (*.f64 z (pow.f64 y 4)) -1/96))) |
(fma.f64 (*.f64 z (pow.f64 y 6)) -19/5760 (fma.f64 (*.f64 y (*.f64 y z)) -1/4 (fma.f64 (*.f64 z (pow.f64 y 4)) -1/96 z))) |
(+.f64 z (*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 6) -19/5760 (*.f64 (pow.f64 y 4) -1/96))))) |
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 (fma.f64 (pow.f64 y 6) -19/5760 1)))) |
(*.f64 z (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/96) -1/4) (fma.f64 (pow.f64 y 6) -19/5760 1))) |
1 |
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1) |
(fma.f64 -1/4 (*.f64 y y) 1) |
(fma.f64 (*.f64 y y) -1/4 1) |
(fma.f64 y (*.f64 y -1/4) 1) |
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4)))) |
(+.f64 (fma.f64 -1/4 (*.f64 y y) 1) (*.f64 (pow.f64 y 4) -1/96)) |
(fma.f64 (*.f64 y y) -1/4 (fma.f64 (pow.f64 y 4) -1/96 1)) |
(fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 1)) |
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6))))) |
(+.f64 (fma.f64 -1/4 (*.f64 y y) 1) (fma.f64 -1/96 (pow.f64 y 4) (*.f64 (pow.f64 y 6) -19/5760))) |
(+.f64 (fma.f64 (*.f64 y y) -1/4 1) (fma.f64 (pow.f64 y 4) -1/96 (*.f64 (pow.f64 y 6) -19/5760))) |
(fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 (fma.f64 (pow.f64 y 6) -19/5760 1))) |
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/96) -1/4) (fma.f64 (pow.f64 y 6) -19/5760 1)) |
Compiled 8224 to 3415 computations (58.5% saved)
28 alts after pruning (24 fresh and 4 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 458 | 13 | 471 |
| Fresh | 5 | 11 | 16 |
| Picked | 1 | 0 | 1 |
| Done | 2 | 4 | 6 |
| Total | 466 | 28 | 494 |
| Status | Error | Program |
|---|---|---|
| 14.3b | (+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z) | |
| 32.7b | (+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y))) | |
| ▶ | 52.9b | (*.f64 y x) |
| 14.3b | (+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) z) | |
| 23.3b | (+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)) | |
| 39.6b | z | |
| ✓ | 29.9b | (+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) z) |
| ▶ | 27.1b | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 30.8b | (fma.f64 y x z) | |
| 37.3b | (+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) z) | |
| ✓ | 30.8b | (+.f64 (*.f64 y x) z) |
| 38.0b | (+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) z) | |
| ✓ | 31.9b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) |
| 1.0b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3)) | |
| 37.5b | (+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z) | |
| 14.3b | (+.f64 (*.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x)) z) | |
| ▶ | 42.6b | (+.f64 (*.f64 y x) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) |
| 0.9b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))) | |
| 39.3b | (+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) z) | |
| 31.9b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))) | |
| 26.2b | (+.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))) 3) (*.f64 z (cos.f64 y))) | |
| ✓ | 0.2b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
| 36.3b | (*.f64 (sin.f64 y) x) | |
| ▶ | 41.2b | (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
| 41.0b | (-.f64 (+.f64 1 (fma.f64 y x z)) 1) | |
| 22.7b | (+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) | |
| 22.9b | (+.f64 (*.f64 y x) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))) | |
| ▶ | 0.5b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
Compiled 707 to 470 computations (33.5% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.2b | (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))) |
| ✓ | 0.2b | (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) |
| ✓ | 0.3b | (cbrt.f64 (cbrt.f64 (cos.f64 y))) |
| 0.3b | (cbrt.f64 (cos.f64 y)) |
Compiled 103 to 25 computations (75.7% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 60.0ms | y | @ | inf | (cbrt.f64 (cbrt.f64 (cos.f64 y))) |
| 16.0ms | y | @ | -inf | (cbrt.f64 (cbrt.f64 (cos.f64 y))) |
| 2.0ms | y | @ | inf | (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))) |
| 2.0ms | y | @ | -inf | (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))) |
| 1.0ms | y | @ | 0 | (cbrt.f64 (cbrt.f64 (cos.f64 y))) |
| 1× | batch-egg-rewrite |
| 654× | pow1_binary64 |
| 606× | add-log-exp_binary64 |
| 606× | log1p-expm1-u_binary64 |
| 606× | expm1-log1p-u_binary64 |
| 589× | add-exp-log_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 29 |
| 1 | 181 | 25 |
| 2 | 1952 | 25 |
| 1× | node limit |
| Inputs |
|---|
(cbrt.f64 (cbrt.f64 (cos.f64 y))) |
(pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) |
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 2) (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 1/6) (pow.f64 (cbrt.f64 (cos.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 4))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cos.f64 y) 1/6) 1/3) (pow.f64 (pow.f64 (cos.f64 y) 1/6) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 1/6) (pow.f64 (cos.f64 y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 1/6) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 1/6) (cbrt.f64 (cbrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 1/6) (pow.f64 (cbrt.f64 (cos.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 4)) 2)) (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))) 2)) (cbrt.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y)))))))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (cos.f64 y) (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))))) |
| 1× | egg-herbie |
| 652× | fma-def_binary64 |
| 581× | associate-*l*_binary64 |
| 524× | distribute-rgt-out_binary64 |
| 461× | unswap-sqr_binary64 |
| 461× | sqr-pow_binary64 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 52 | 492 |
| 1 | 126 | 486 |
| 2 | 293 | 476 |
| 3 | 885 | 474 |
| 4 | 3442 | 370 |
| 5 | 5580 | 370 |
| 6 | 6787 | 370 |
| 7 | 7259 | 370 |
| 8 | 7705 | 370 |
| 1× | node limit |
| Inputs |
|---|
1 |
(+.f64 1 (*.f64 -1/18 (pow.f64 y 2))) |
(+.f64 1 (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2)))) |
(+.f64 1 (+.f64 (*.f64 -347/174960 (pow.f64 y 6)) (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2))))) |
(pow.f64 (cos.f64 y) 1/9) |
(pow.f64 (cos.f64 y) 1/9) |
(pow.f64 (cos.f64 y) 1/9) |
(pow.f64 (cos.f64 y) 1/9) |
(pow.f64 (cos.f64 y) 1/9) |
(pow.f64 (cos.f64 y) 1/9) |
(pow.f64 (cos.f64 y) 1/9) |
(pow.f64 (cos.f64 y) 1/9) |
1 |
(+.f64 1 (*.f64 -1/9 (pow.f64 y 2))) |
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (*.f64 -1/81 (pow.f64 y 4)))) |
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (+.f64 (*.f64 -1/81 (pow.f64 y 4)) (*.f64 -34/10935 (pow.f64 y 6))))) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
1 |
(+.f64 1 (*.f64 -1/3 (pow.f64 y 2))) |
(+.f64 1 (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6)))) |
(+.f64 1 (+.f64 (*.f64 -1/1701 (pow.f64 y 8)) (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6))))) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
| Outputs |
|---|
1 |
(+.f64 1 (*.f64 -1/18 (pow.f64 y 2))) |
(+.f64 1 (*.f64 -1/18 (*.f64 y y))) |
(fma.f64 -1/18 (*.f64 y y) 1) |
(+.f64 1 (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2)))) |
(+.f64 1 (fma.f64 -5/648 (pow.f64 y 4) (*.f64 -1/18 (*.f64 y y)))) |
(+.f64 (fma.f64 -1/18 (*.f64 y y) 1) (*.f64 -5/648 (pow.f64 y 4))) |
(fma.f64 -1/18 (*.f64 y y) (fma.f64 -5/648 (pow.f64 y 4) 1)) |
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -5/648) -1/18) 1) |
(+.f64 1 (+.f64 (*.f64 -347/174960 (pow.f64 y 6)) (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2))))) |
(+.f64 1 (fma.f64 -347/174960 (pow.f64 y 6) (fma.f64 -5/648 (pow.f64 y 4) (*.f64 -1/18 (*.f64 y y))))) |
(+.f64 (fma.f64 -347/174960 (pow.f64 y 6) (*.f64 -5/648 (pow.f64 y 4))) (fma.f64 -1/18 (*.f64 y y) 1)) |
(fma.f64 -347/174960 (pow.f64 y 6) (fma.f64 -1/18 (*.f64 y y) (fma.f64 -5/648 (pow.f64 y 4) 1))) |
(fma.f64 -1/18 (*.f64 y y) (fma.f64 -5/648 (pow.f64 y 4) (fma.f64 -347/174960 (pow.f64 y 6) 1))) |
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -5/648) -1/18) (fma.f64 -347/174960 (pow.f64 y 6) 1)) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
(pow.f64 (cos.f64 y) 1/9) |
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18)) |
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4) |
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8) |
1 |
(+.f64 1 (*.f64 -1/9 (pow.f64 y 2))) |
(+.f64 1 (*.f64 (*.f64 y y) -1/9)) |
(fma.f64 (*.f64 y y) -1/9 1) |
(fma.f64 y (*.f64 y -1/9) 1) |
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (*.f64 -1/81 (pow.f64 y 4)))) |
(+.f64 1 (fma.f64 -1/9 (*.f64 y y) (*.f64 (pow.f64 y 4) -1/81))) |
(+.f64 1 (fma.f64 (pow.f64 y 4) -1/81 (*.f64 y (*.f64 y -1/9)))) |
(fma.f64 (pow.f64 y 4) -1/81 (fma.f64 y (*.f64 y -1/9) 1)) |
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/81) -1/9) 1) |
(fma.f64 y (*.f64 y -1/9) (fma.f64 (pow.f64 y 4) -1/81 1)) |
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (+.f64 (*.f64 -1/81 (pow.f64 y 4)) (*.f64 -34/10935 (pow.f64 y 6))))) |
(+.f64 1 (fma.f64 -1/9 (*.f64 y y) (fma.f64 -1/81 (pow.f64 y 4) (*.f64 (pow.f64 y 6) -34/10935)))) |
(+.f64 (fma.f64 (*.f64 y y) -1/9 1) (fma.f64 (pow.f64 y 4) -1/81 (*.f64 (pow.f64 y 6) -34/10935))) |
(+.f64 1 (fma.f64 y (*.f64 y -1/9) (fma.f64 (pow.f64 y 4) -1/81 (*.f64 (pow.f64 y 6) -34/10935)))) |
(fma.f64 y (*.f64 y -1/9) (fma.f64 (pow.f64 y 4) -1/81 (fma.f64 (pow.f64 y 6) -34/10935 1))) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9) |
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18)) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4) |
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8) |
1 |
(+.f64 1 (*.f64 -1/3 (pow.f64 y 2))) |
(+.f64 1 (*.f64 (*.f64 y y) -1/3)) |
(fma.f64 (*.f64 y y) -1/3 1) |
(fma.f64 y (*.f64 y -1/3) 1) |
(+.f64 1 (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6)))) |
(+.f64 1 (fma.f64 -1/3 (*.f64 y y) (*.f64 (pow.f64 y 6) -1/405))) |
(+.f64 1 (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3)))) |
(fma.f64 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) 1)) |
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 1)) |
(+.f64 1 (+.f64 (*.f64 -1/1701 (pow.f64 y 8)) (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6))))) |
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (*.f64 (pow.f64 y 6) -1/405)))) |
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3))))) |
(fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) 1))) |
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 -1/1701 (pow.f64 y 8) 1))) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) |
(cbrt.f64 (pow.f64 (cos.f64 y) 2)) |
Compiled 8 to 4 computations (50% saved)
Found 3 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
| 0.0b | (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) | |
| 6.3b | (*.f64 (pow.f64 y 2) z) |
Compiled 31 to 21 computations (32.3% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | y | @ | 0 | (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
| 0.0ms | y | @ | inf | (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
| 0.0ms | z | @ | 0 | (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
| 0.0ms | y | @ | -inf | (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
| 0.0ms | z | @ | inf | (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
| 1× | batch-egg-rewrite |
| 690× | pow1_binary64 |
| 636× | add-log-exp_binary64 |
| 636× | log1p-expm1-u_binary64 |
| 636× | expm1-log1p-u_binary64 |
| 623× | add-exp-log_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 10 |
| 1 | 165 | 10 |
| 2 | 1791 | 10 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (*.f64 (*.f64 -1/2 y) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (*.f64 (*.f64 -1/2 y) y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 -1/2) (*.f64 y (sqrt.f64 z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/4 (*.f64 (pow.f64 y 4) (*.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 (*.f64 -1/2 y) y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (*.f64 (*.f64 -1/2 y) y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (*.f64 (*.f64 -1/2 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (*.f64 (*.f64 -1/2 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (*.f64 (*.f64 -1/2 y) y)))))))) |
| 1× | egg-herbie |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 0 | 0 |
| 1× | saturated |
| Inputs |
|---|
| Outputs |
|---|
Found 3 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.0b | (sqrt.f64 (*.f64 z (cos.f64 y))) | |
| 0.1b | (*.f64 z (cos.f64 y)) | |
| 0.2b | (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2) |
Compiled 39 to 13 computations (66.7% saved)
Found 4 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 0.1b | (sqrt.f64 (cos.f64 y)) | |
| 0.1b | (*.f64 z (sqrt.f64 (cos.f64 y))) | |
| 0.1b | (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) |
Compiled 41 to 9 computations (78% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 2.0ms | x | @ | 0 | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 0.0ms | y | @ | 0 | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 0.0ms | y | @ | inf | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 0.0ms | z | @ | -inf | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 0.0ms | y | @ | -inf | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 1× | batch-egg-rewrite |
| 555× | log-prod_binary64 |
| 416× | pow-prod-down_binary64 |
| 391× | exp-prod_binary64 |
| 375× | fma-def_binary64 |
| 275× | pow2_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 10 |
| 1 | 209 | 10 |
| 2 | 2795 | 10 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 y x) 2) (fma.f64 y x (*.f64 (neg.f64 z) (cos.f64 y)))) (/.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (fma.f64 y x (*.f64 (neg.f64 z) (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 z (cos.f64 y) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) (pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) 2) (cbrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) (sqrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3)) (/.f64 1 (fma.f64 (*.f64 z (cos.f64 y)) (fma.f64 z (cos.f64 y) (neg.f64 (*.f64 y x))) (pow.f64 (*.f64 y x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2)) (/.f64 1 (fma.f64 y x (*.f64 (neg.f64 z) (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 z (cos.f64 y)) (fma.f64 z (cos.f64 y) (neg.f64 (*.f64 y x))) (pow.f64 (*.f64 y x) 2)) (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 y x (*.f64 (neg.f64 z) (cos.f64 y))) (-.f64 (pow.f64 (*.f64 y x) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3)) (fma.f64 (*.f64 z (cos.f64 y)) (fma.f64 z (cos.f64 y) (neg.f64 (*.f64 y x))) (pow.f64 (*.f64 y x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3)) (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 (*.f64 (*.f64 y x) z) (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2)) (fma.f64 y x (*.f64 (neg.f64 z) (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3))) (neg.f64 (fma.f64 (*.f64 z (cos.f64 y)) (fma.f64 z (cos.f64 y) (neg.f64 (*.f64 y x))) (pow.f64 (*.f64 y x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2))) (neg.f64 (fma.f64 y x (*.f64 (neg.f64 z) (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (pow.f64 (*.f64 y x) 2)) (fma.f64 z (cos.f64 y) (neg.f64 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 z (cos.f64 y)) (fma.f64 z (cos.f64 y) (neg.f64 (*.f64 y x))) (pow.f64 (*.f64 y x) 2)) (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 y x (*.f64 (neg.f64 z) (cos.f64 y))) (-.f64 (pow.f64 (*.f64 y x) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))) 2)) (cbrt.f64 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))) (sqrt.f64 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 y x))) (pow.f64 (exp.f64 z) (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 y x)) (+.f64 1 (expm1.f64 (*.f64 z (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 y x))) (+.f64 1 (expm1.f64 (*.f64 z (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z (cos.f64 y)))) (exp.f64 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 z) (cos.f64 y)) (+.f64 1 (expm1.f64 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z (cos.f64 y)))) (+.f64 1 (expm1.f64 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 z (cos.f64 y) (*.f64 y x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 z (cos.f64 y) (*.f64 y x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y x) 1 (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (cos.f64 y) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 y) z (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cos.f64 y)) (*.f64 z (sqrt.f64 (cos.f64 y))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (cos.f64 y)) 1 (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y x) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z (cos.f64 y)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (cos.f64 y) (*.f64 z z))) (*.f64 (cbrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) (sqrt.f64 (cos.f64 y))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y y)) (*.f64 (cbrt.f64 y) x) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (cbrt.f64 (*.f64 z (cos.f64 y))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (cos.f64 y)) (*.f64 (pow.f64 (cos.f64 y) 1/6) (*.f64 z (sqrt.f64 (cos.f64 y)))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y x)) (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (cbrt.f64 (*.f64 y x)) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) (pow.f64 (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (cos.f64 y)) 1/2) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (cos.f64 y)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (sqrt.f64 (*.f64 z (cos.f64 y))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cos.f64 y) 1/4) (*.f64 (pow.f64 (cos.f64 y) 1/4) (*.f64 z (sqrt.f64 (cos.f64 y)))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y x)) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (cos.f64 y)) (cbrt.f64 (*.f64 (cos.f64 y) (*.f64 z z)))) (cbrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (cos.f64 y) (*.f64 z (sqrt.f64 (cos.f64 y)))) 1/2) (sqrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y))) (pow.f64 (cos.f64 y) 1/6) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (pow.f64 (cos.f64 y) 1/4)) (pow.f64 (cos.f64 y) 1/4) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (cbrt.f64 (*.f64 y y))) (cbrt.f64 y) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 z (cos.f64 y))))))) |
| 1× | egg-herbie |
| 902× | fma-def_binary64 |
| 671× | sqr-pow_binary64 |
| 476× | distribute-lft-out_binary64 |
| 444× | cube-prod_binary64 |
| 432× | *-commutative_binary64 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 26 | 326 |
| 1 | 58 | 324 |
| 2 | 133 | 323 |
| 3 | 356 | 321 |
| 4 | 1215 | 318 |
| 5 | 2715 | 318 |
| 6 | 3881 | 318 |
| 7 | 3962 | 318 |
| 8 | 4085 | 318 |
| 9 | 4240 | 318 |
| 10 | 4504 | 318 |
| 11 | 4761 | 318 |
| 12 | 5118 | 318 |
| 13 | 5492 | 318 |
| 14 | 5985 | 318 |
| 15 | 6572 | 318 |
| 16 | 7288 | 318 |
| 17 | 7616 | 318 |
| 18 | 7880 | 318 |
| 1× | node limit |
| Inputs |
|---|
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(*.f64 z (cos.f64 y)) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(*.f64 (cos.f64 y) z) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(*.f64 (cos.f64 y) z) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
| Outputs |
|---|
z |
(+.f64 (*.f64 y x) z) |
(fma.f64 y x z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z)) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x z)) |
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 y x z)) |
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z) |
(fma.f64 y (fma.f64 y (*.f64 z -1/2) x) z) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))) |
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))) |
(fma.f64 y x (*.f64 z (+.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (*.f64 y (*.f64 y -1/2))))) |
(fma.f64 z (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/2 (*.f64 y y))) (fma.f64 y x z)) |
(fma.f64 z (*.f64 y (fma.f64 1/24 (pow.f64 y 3) (*.f64 y -1/2))) (fma.f64 y x z)) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(*.f64 z (cos.f64 y)) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(*.f64 (cos.f64 y) z) |
(*.f64 z (cos.f64 y)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x)) |
(fma.f64 z (cos.f64 y) (*.f64 y x)) |
Compiled 12055 to 4358 computations (63.8% saved)
30 alts after pruning (23 fresh and 7 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 574 | 11 | 585 |
| Fresh | 7 | 12 | 19 |
| Picked | 0 | 1 | 1 |
| Done | 2 | 6 | 8 |
| Total | 583 | 30 | 613 |
| Status | Error | Program |
|---|---|---|
| 14.3b | (+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z) | |
| 32.7b | (+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y))) | |
| 22.9b | (+.f64 (*.f64 y x) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))) | |
| ✓ | 52.9b | (*.f64 y x) |
| 14.3b | (+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) z) | |
| 37.1b | (fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 y x)) | |
| 39.6b | z | |
| 23.3b | (+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)) | |
| ✓ | 27.1b | (+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
| 62.5b | (*.f64 y (*.f64 y (*.f64 z -1/2))) | |
| ✓ | 29.9b | (+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) z) |
| 37.3b | (+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) z) | |
| ✓ | 30.8b | (+.f64 (*.f64 y x) z) |
| 38.0b | (+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) z) | |
| ✓ | 31.9b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) |
| 41.1b | (+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z) | |
| 1.0b | (+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3)) | |
| 37.5b | (+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z) | |
| 14.3b | (+.f64 (*.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x)) z) | |
| ✓ | 42.6b | (+.f64 (*.f64 y x) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) |
| 0.9b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))) | |
| 43.5b | (+.f64 (*.f64 y x) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))) | |
| 39.3b | (+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) z) | |
| 26.7b | (*.f64 (cos.f64 y) z) | |
| 26.2b | (+.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))) 3) (*.f64 z (cos.f64 y))) | |
| 41.2b | (*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2))) | |
| ✓ | 0.2b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
| 36.3b | (*.f64 (sin.f64 y) x) | |
| 41.1b | (+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z) | |
| 0.3b | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 (sqrt.f64 (*.f64 (cos.f64 y) (cbrt.f64 (cos.f64 y)))) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
Compiled 404 to 274 computations (32.2% saved)
| Inputs |
|---|
z |
z |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2))) |
(+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z) |
(+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z) |
(*.f64 (cos.f64 y) z) |
(fma.f64 y x z) |
(fma.f64 y x z) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 x (sin.f64 y)) z) |
(-.f64 (+.f64 1 (fma.f64 y x z)) 1) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 y)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)) |
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z) |
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) z) |
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z) |
(+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) z) |
(+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)) |
(+.f64 (*.f64 y x) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) |
(+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)) |
(+.f64 (*.f64 y x) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))) |
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) z) |
(+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) z) |
(+.f64 (*.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x)) z) |
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)) |
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) (*.f64 z (cos.f64 y))) |
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)) |
(fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 y x)) |
(+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))) |
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) z) |
(+.f64 (pow.f64 (*.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 x)) 2) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3)) |
(+.f64 (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 x)) 3) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))) |
(+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 y x) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))) |
(+.f64 (*.f64 y x) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
(+.f64 (pow.f64 (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) 2) 2) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
(+.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))) 3) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (sqrt.f64 (*.f64 (cos.f64 y) (cbrt.f64 (cos.f64 y)))) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))) (*.f64 (cbrt.f64 (cos.f64 y)) z))) |
| Outputs |
|---|
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
4 calls:
| 77.0ms | z |
| 65.0ms | y |
| 44.0ms | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
| 43.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 0.2b | 1 | x |
| 0.2b | 1 | y |
| 0.2b | 1 | z |
| 0.2b | 1 | (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
Compiled 608 to 226 computations (62.8% saved)
| Inputs |
|---|
z |
z |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2))) |
(+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z) |
(+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z) |
(*.f64 (cos.f64 y) z) |
(fma.f64 y x z) |
(fma.f64 y x z) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 x (sin.f64 y)) z) |
(-.f64 (+.f64 1 (fma.f64 y x z)) 1) |
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z) |
| Outputs |
|---|
(*.f64 (cos.f64 y) z) |
(+.f64 (*.f64 x (sin.f64 y)) z) |
(*.f64 (cos.f64 y) z) |
(+.f64 (*.f64 x (sin.f64 y)) z) |
(*.f64 (cos.f64 y) z) |
3 calls:
| 165.0ms | y |
| 119.0ms | z |
| 75.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 7.2b | 3 | x |
| 10.5b | 5 | y |
| 7.0b | 5 | z |
Compiled 112 to 59 computations (47.3% saved)
| 4× | binary-search |
| Time | Left | Right |
|---|---|---|
| 122.0ms | 6.1808399442153046e+47 | 1.5470975288538274e+56 |
| 122.0ms | -9.071300668515432e-14 | -1.1576661129978958e-20 |
| 140.0ms | -6.1218348465704036e+41 | -5.001972212645505e+39 |
| 91.0ms | -8.069696018579312e+196 | -1.2582800421291595e+194 |
Compiled 18 to 13 computations (27.8% saved)
| Inputs |
|---|
z |
z |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2))) |
(+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z) |
(+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z) |
(*.f64 (cos.f64 y) z) |
(fma.f64 y x z) |
(fma.f64 y x z) |
(*.f64 (sin.f64 y) x) |
| Outputs |
|---|
(*.f64 (sin.f64 y) x) |
(*.f64 (cos.f64 y) z) |
(*.f64 (sin.f64 y) x) |
(*.f64 (cos.f64 y) z) |
(*.f64 (sin.f64 y) x) |
(+.f64 (*.f64 y x) z) |
(*.f64 (sin.f64 y) x) |
3 calls:
| 91.0ms | y |
| 75.0ms | z |
| 70.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 13.7b | 3 | x |
| 11.1b | 7 | y |
| 14.3b | 5 | z |
Compiled 81 to 45 computations (44.4% saved)
| 6× | binary-search |
| Time | Left | Right |
|---|---|---|
| 68.0ms | 0.08839147709823608 | 6.904028969813479 |
| 46.0ms | -10604636.769083364 | -5.025292739923839e-8 |
| 141.0ms | -7.58325743152806e+89 | -2.0759025492798803e+86 |
| 134.0ms | -1.6551753127859233e+187 | -1.3670252685500282e+187 |
| 117.0ms | -7.73123433079739e+213 | -4.010715378716946e+212 |
| 127.0ms | -4.467235781468881e+269 | -2.0671629876694233e+263 |
Compiled 18 to 13 computations (27.8% saved)
| Inputs |
|---|
z |
z |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2))) |
(+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z) |
(+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z) |
(*.f64 (cos.f64 y) z) |
(fma.f64 y x z) |
(fma.f64 y x z) |
| Outputs |
|---|
(*.f64 (cos.f64 y) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 (cos.f64 y) z) |
3 calls:
| 126.0ms | y |
| 27.0ms | x |
| 22.0ms | z |
| Error | Segments | Branch |
|---|---|---|
| 20.8b | 3 | x |
| 17.4b | 3 | y |
| 20.6b | 3 | z |
Compiled 77 to 43 computations (44.2% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 75.0ms | 9.789299162384845e-16 | 0.00012028864921560288 |
| 41.0ms | -6.22550385717427e+34 | -1.0562257270902327e+29 |
Compiled 18 to 13 computations (27.8% saved)
| Inputs |
|---|
z |
z |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(*.f64 y (*.f64 y (*.f64 z -1/2))) |
(*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2))) |
(+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z) |
(+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z) |
| Outputs |
|---|
(+.f64 (*.f64 y x) z) |
3 calls:
| 7.0ms | z |
| 5.0ms | x |
| 5.0ms | y |
| Error | Segments | Branch |
|---|---|---|
| 30.8b | 1 | x |
| 30.8b | 1 | y |
| 30.8b | 1 | z |
Compiled 65 to 40 computations (38.5% saved)
| Inputs |
|---|
z |
z |
(*.f64 y x) |
| Outputs |
|---|
(*.f64 y x) |
z |
(*.f64 y x) |
3 calls:
| 14.0ms | z |
| 14.0ms | x |
| 4.0ms | y |
| Error | Segments | Branch |
|---|---|---|
| 35.2b | 3 | x |
| 39.6b | 1 | y |
| 35.9b | 3 | z |
Compiled 20 to 13 computations (35% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 57.0ms | 3.840291792634429e+77 | 4.09667594258213e+77 |
| 141.0ms | -1.1660026554212445e+118 | -3.447416757579016e+117 |
Compiled 18 to 13 computations (27.8% saved)
Total -0.0b remaining (-0%)
Threshold costs -0.0b (-0%)
| Inputs |
|---|
z |
z |
| Outputs |
|---|
z |
3 calls:
| 3.0ms | z |
| 3.0ms | y |
| 3.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 39.6b | 1 | x |
| 39.6b | 1 | y |
| 39.6b | 1 | z |
Compiled 17 to 12 computations (29.4% saved)
| 1× | egg-herbie |
| 3× | +-commutative_binary64 |
| 3× | *-commutative_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 57 | 213 |
| 1 | 63 | 213 |
| 1× | fuel |
| 1× | saturated |
| Inputs |
|---|
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
(if (<=.f64 z -80696960185793117418418492977943268870327980530031957292705086622062209663580833948103109400334086037599137240729993820671848948351896946650531956240498468189405212503048376602193895137110378151936) (*.f64 (cos.f64 y) z) (if (<=.f64 z -612183484657040359748470836321241335332864) (+.f64 (*.f64 x (sin.f64 y)) z) (if (<=.f64 z -7187024835808954/79228162514264337593543950336) (*.f64 (cos.f64 y) z) (if (<=.f64 z 618083994421530457890804952986795969439573475328) (+.f64 (*.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z))))) |
(if (<=.f64 y -446723578146888114905140502667146732167601747351298119695531847089882952548351902617787805633893631460850862461808944845057217030705896779865475445174598980258804229209968375653309685925463450623550841136980775993004810489436698548930166270757722892775689647464013365248) (*.f64 (sin.f64 y) x) (if (<=.f64 y -7731234330797390218459609206827994840741265724685444951773957676317046720286916913926377078902197716610308268486969771806984420191009229451277907086238106523464731719125073814660069823715934527296640503825882415104) (*.f64 (cos.f64 y) z) (if (<=.f64 y -16551753127859232648373331454702849988017578769505670130453150669975857257508069702555482865846186819758165656356366190825881307899974270540330659143572912015832896776043317328714305372160) (*.f64 (sin.f64 y) x) (if (<=.f64 y -758325743152806013951705039971629235505177337563619300967984824736736194982359030959177728) (*.f64 (cos.f64 y) z) (if (<=.f64 y -45546568109172152/4294967296) (*.f64 (sin.f64 y) x) (if (<=.f64 y 1630534956328320000/18446744073709551616) (+.f64 (*.f64 y x) z) (*.f64 (sin.f64 y) x))))))) |
(if (<=.f64 y -62255038571742699602444550194331648) (*.f64 (cos.f64 y) z) (if (<=.f64 y 4963764383604341/5070602400912917605986812821504) (+.f64 (*.f64 y x) z) (*.f64 (cos.f64 y) z))) |
(+.f64 (*.f64 y x) z) |
(if (<=.f64 x -11660026554212444966310322289247636812736516650732823046703759746481582299734702514426936352305076677752168269922435072) (*.f64 y x) (if (<=.f64 x 384029179263442900427246529109638289548696076289593884072852399416155970732032) z (*.f64 y x))) |
z |
| Outputs |
|---|
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))) |
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 x (sin.f64 y))) |
(if (<=.f64 z -80696960185793117418418492977943268870327980530031957292705086622062209663580833948103109400334086037599137240729993820671848948351896946650531956240498468189405212503048376602193895137110378151936) (*.f64 (cos.f64 y) z) (if (<=.f64 z -612183484657040359748470836321241335332864) (+.f64 (*.f64 x (sin.f64 y)) z) (if (<=.f64 z -7187024835808954/79228162514264337593543950336) (*.f64 (cos.f64 y) z) (if (<=.f64 z 618083994421530457890804952986795969439573475328) (+.f64 (*.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z))))) |
(if (<=.f64 z -80696960185793117418418492977943268870327980530031957292705086622062209663580833948103109400334086037599137240729993820671848948351896946650531956240498468189405212503048376602193895137110378151936) (*.f64 z (cos.f64 y)) (if (<=.f64 z -612183484657040359748470836321241335332864) (+.f64 z (*.f64 x (sin.f64 y))) (if (<=.f64 z -3593512417904477/39614081257132168796771975168) (*.f64 z (cos.f64 y)) (if (<=.f64 z 618083994421530457890804952986795969439573475328) (+.f64 z (*.f64 x (sin.f64 y))) (*.f64 z (cos.f64 y)))))) |
(if (<=.f64 y -446723578146888114905140502667146732167601747351298119695531847089882952548351902617787805633893631460850862461808944845057217030705896779865475445174598980258804229209968375653309685925463450623550841136980775993004810489436698548930166270757722892775689647464013365248) (*.f64 (sin.f64 y) x) (if (<=.f64 y -7731234330797390218459609206827994840741265724685444951773957676317046720286916913926377078902197716610308268486969771806984420191009229451277907086238106523464731719125073814660069823715934527296640503825882415104) (*.f64 (cos.f64 y) z) (if (<=.f64 y -16551753127859232648373331454702849988017578769505670130453150669975857257508069702555482865846186819758165656356366190825881307899974270540330659143572912015832896776043317328714305372160) (*.f64 (sin.f64 y) x) (if (<=.f64 y -758325743152806013951705039971629235505177337563619300967984824736736194982359030959177728) (*.f64 (cos.f64 y) z) (if (<=.f64 y -45546568109172152/4294967296) (*.f64 (sin.f64 y) x) (if (<=.f64 y 1630534956328320000/18446744073709551616) (+.f64 (*.f64 y x) z) (*.f64 (sin.f64 y) x))))))) |
(if (<=.f64 y -446723578146888114905140502667146732167601747351298119695531847089882952548351902617787805633893631460850862461808944845057217030705896779865475445174598980258804229209968375653309685925463450623550841136980775993004810489436698548930166270757722892775689647464013365248) (*.f64 x (sin.f64 y)) (if (<=.f64 y -7731234330797390218459609206827994840741265724685444951773957676317046720286916913926377078902197716610308268486969771806984420191009229451277907086238106523464731719125073814660069823715934527296640503825882415104) (*.f64 z (cos.f64 y)) (if (<=.f64 y -16551753127859232648373331454702849988017578769505670130453150669975857257508069702555482865846186819758165656356366190825881307899974270540330659143572912015832896776043317328714305372160) (*.f64 x (sin.f64 y)) (if (<=.f64 y -758325743152806013951705039971629235505177337563619300967984824736736194982359030959177728) (*.f64 z (cos.f64 y)) (if (<=.f64 y -5693321013646519/536870912) (*.f64 x (sin.f64 y)) (if (<=.f64 y 1592319293289375/18014398509481984) (+.f64 z (*.f64 x y)) (*.f64 x (sin.f64 y)))))))) |
(if (<=.f64 y -62255038571742699602444550194331648) (*.f64 (cos.f64 y) z) (if (<=.f64 y 4963764383604341/5070602400912917605986812821504) (+.f64 (*.f64 y x) z) (*.f64 (cos.f64 y) z))) |
(if (<=.f64 y -62255038571742699602444550194331648) (*.f64 z (cos.f64 y)) (if (<=.f64 y 4963764383604341/5070602400912917605986812821504) (+.f64 z (*.f64 x y)) (*.f64 z (cos.f64 y)))) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 x y)) |
(if (<=.f64 x -11660026554212444966310322289247636812736516650732823046703759746481582299734702514426936352305076677752168269922435072) (*.f64 y x) (if (<=.f64 x 384029179263442900427246529109638289548696076289593884072852399416155970732032) z (*.f64 y x))) |
(if (<=.f64 x -11660026554212444966310322289247636812736516650732823046703759746481582299734702514426936352305076677752168269922435072) (*.f64 x y) (if (<=.f64 x 384029179263442900427246529109638289548696076289593884072852399416155970732032) z (*.f64 x y))) |
z |
Compiled 165 to 86 computations (47.9% saved)
Compiled 147 to 53 computations (63.9% saved)
Loading profile data...