Details

Time bar (total: 7.5s)

analyze52.0ms (0.7%)

Algorithm
search
Search
TrueOtherFalseIter
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
25%74.9%0.1%5
37.5%62.4%0.1%6
43.7%43.7%12.6%7
53.1%34.3%12.6%8
57.8%23.4%18.8%9
63.2%18%18.8%10
66%12.1%22%11
68.9%9.2%22%12
Compiler

Compiled 10 to 7 computations (30% saved)

sample1.2s (15.4%)

Results
1.1s8256×body256valid
48.0ms331×body256invalid

preprocess34.0ms (0.5%)

Algorithm
egg-herbie
Rules
30×associate-*l*_binary64
22×associate-*r*_binary64
11×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
12420
25220
38620
48620
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 (*.f64 x 3) y) y)
(*.f64 (*.f64 (*.f64 y 3) x) x)
Outputs
(*.f64 (*.f64 (*.f64 x 3) y) y)
(*.f64 (*.f64 x 3) (*.f64 y y))
(*.f64 x (*.f64 3 (*.f64 y y)))
(*.f64 3 (*.f64 (*.f64 x y) y))
(*.f64 3 (*.f64 y (*.f64 x y)))
(*.f64 (*.f64 (*.f64 y 3) x) x)
(*.f64 x (*.f64 (*.f64 x 3) y))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 3 (*.f64 x (*.f64 x y)))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify16.0ms (0.2%)

Algorithm
egg-herbie
Rules
12×associate-*l*_binary64
11×associate-*r*_binary64
10×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
11410
22910
34610
44610
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 x 3) y) y)
Outputs
(*.f64 (*.f64 (*.f64 x 3) y) y)
(*.f64 (*.f64 x 3) (*.f64 y y))
(*.f64 x (*.f64 3 (*.f64 y y)))

eval1.0ms (0%)

Compiler

Compiled 16 to 10 computations (37.5% saved)

prune3.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.2b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
9.5b
(*.f64 x (*.f64 3 (*.f64 y y)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

localize16.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 3 (*.f64 y y))
9.2b
(*.f64 x (*.f64 3 (*.f64 y y)))
Compiler

Compiled 20 to 9 computations (55% saved)

series11.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
2.0ms
x
@0
(*.f64 x (*.f64 3 (*.f64 y y)))
2.0ms
y
@0
(*.f64 x (*.f64 3 (*.f64 y y)))
1.0ms
x
@inf
(*.f64 x (*.f64 3 (*.f64 y y)))
1.0ms
y
@inf
(*.f64 x (*.f64 3 (*.f64 y y)))
1.0ms
y
@inf
(*.f64 3 (*.f64 y y))

rewrite78.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
644×pow1_binary64
593×add-log-exp_binary64
593×log1p-expm1-u_binary64
593×expm1-log1p-u_binary64
580×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
114317
2167017
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 x (*.f64 3 (*.f64 y y)))
(*.f64 3 (*.f64 y y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 9 (pow.f64 y 4)) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 3) (*.f64 y y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 y y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 9 (pow.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 y y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 y y))))))))

simplify222.0ms (3%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
638×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09324
118324
239324
390324
4246324
5825324
61076324
71490324
81590324
91725324
101894324
112137324
122450324
132822324
143282324
153867324
164575324
175435324
185859324
196173324
206481324
216563324
226599324
Stop Event
node limit
Counts
58 → 26
Calls
Call 1
Inputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
Outputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))

localize16.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 (*.f64 x 3) y) y)
0.2b
(*.f64 (*.f64 x 3) y)
Compiler

Compiled 20 to 12 computations (40% saved)

series11.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
3.0ms
x
@inf
(*.f64 (*.f64 x 3) y)
1.0ms
x
@0
(*.f64 (*.f64 x 3) y)
1.0ms
y
@0
(*.f64 (*.f64 x 3) y)
1.0ms
y
@inf
(*.f64 (*.f64 x 3) y)
1.0ms
x
@-inf
(*.f64 (*.f64 x 3) y)

rewrite82.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
661×pow1_binary64
608×add-log-exp_binary64
608×log1p-expm1-u_binary64
608×expm1-log1p-u_binary64
596×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
114217
2167017
Stop Event
node limit
Counts
2 → 26
Calls
Call 1
Inputs
(*.f64 (*.f64 x 3) y)
(*.f64 (*.f64 (*.f64 x 3) y) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x 3) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 x 3) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 x (*.f64 3 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))))

simplify242.0ms (3.2%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
642×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010408
123408
245408
384408
4245408
5820408
61059408
71473408
81573408
91708408
101880408
112125408
122440408
132810408
143269408
153852408
164558408
175420408
185850408
196168408
206472408
216552408
226588408
Stop Event
node limit
Counts
74 → 30
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))

eval23.0ms (0.3%)

Compiler

Compiled 526 to 335 computations (36.3% saved)

prune25.0ms (0.3%)

Pruning

12 alts after pruning (10 fresh and 2 done)

PrunedKeptTotal
New461056
Fresh000
Picked011
Done011
Total461258
Error
0.0b
Counts
58 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
30.5b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
0.3b
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
23.5b
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
9.9b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 3)
18.9b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
9.6b
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
0.9b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3) y)
0.3b
(*.f64 (*.f64 y x) (*.f64 3 y))
9.4b
(*.f64 3 (*.f64 (pow.f64 y 2) x))
9.5b
(*.f64 x (*.f64 3 (*.f64 y y)))
Compiler

Compiled 228 to 168 computations (26.3% saved)

localize12.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
0.2b
(*.f64 x (*.f64 3 y))
Compiler

Compiled 30 to 20 computations (33.3% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
x
@0
(*.f64 x (*.f64 3 y))
0.0ms
x
@0
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
0.0ms
y
@inf
(*.f64 x (*.f64 3 y))
0.0ms
x
@inf
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
0.0ms
y
@inf
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)

rewrite62.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
706×pow1_binary64
651×add-log-exp_binary64
651×log1p-expm1-u_binary64
651×expm1-log1p-u_binary64
638×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
116617
2180617
Stop Event
node limit
Counts
2 → 27
Calls
Call 1
Inputs
(*.f64 x (*.f64 3 y))
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 x 3)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 x 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 x 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 x 3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 x 3)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 x 3)) y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 x 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 x 3))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 y (*.f64 x 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 y (*.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 y (*.f64 x 3))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 y (*.f64 x 3)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 y (*.f64 x 3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 y (*.f64 x 3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 (*.f64 x 3)) y) y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 y (*.f64 x 3))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 y (*.f64 x 3)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 x 3)) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 y (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 y (*.f64 x 3)))))))))

simplify192.0ms (2.6%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
642×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010408
123408
245408
384408
4245408
5820408
61059408
71473408
81573408
91708408
101880408
112125408
122440408
132810408
143269408
153852408
164558408
175420408
185850408
196168408
206472408
216552408
226588408
Stop Event
node limit
Counts
75 → 31
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 3 (*.f64 y x)) y)
0.3b
(*.f64 3 (*.f64 y x))
Compiler

Compiled 20 to 9 computations (55% saved)

series3.0ms (0%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
0.0ms
y
@0
(*.f64 3 (*.f64 y x))
0.0ms
y
@inf
(*.f64 3 (*.f64 y x))
0.0ms
x
@-inf
(*.f64 3 (*.f64 y x))
0.0ms
y
@-inf
(*.f64 3 (*.f64 y x))
0.0ms
y
@0
(*.f64 (*.f64 3 (*.f64 y x)) y)

rewrite57.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
677×pow1_binary64
623×add-log-exp_binary64
623×log1p-expm1-u_binary64
623×expm1-log1p-u_binary64
610×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
114317
2170517
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 (*.f64 y x)) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (*.f64 y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (*.f64 y x) 2) 9))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 y x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 3 (*.f64 y x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 3 (*.f64 y x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 3 (*.f64 y x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (pow.f64 (exp.f64 x) y) 3) y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 3 (*.f64 y x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 3 (*.f64 y x)))))))))

simplify173.0ms (2.3%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
640×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
383240
4223240
5736240
6997240
71411240
81511240
91646240
101818240
112061240
122374240
132744240
143202240
153791240
164499240
175361240
185787240
196103240
206411240
216489240
226523240
Stop Event
node limit
Counts
48 → 26
Calls
Call 1
Inputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))

localize26.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 3 (*.f64 (pow.f64 y 2) x))
9.1b
(*.f64 (pow.f64 y 2) x)
Compiler

Compiled 21 to 14 computations (33.3% saved)

series4.0ms (0%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
0.0ms
x
@-inf
(*.f64 (pow.f64 y 2) x)
0.0ms
y
@inf
(*.f64 (pow.f64 y 2) x)
0.0ms
y
@0
(*.f64 (pow.f64 y 2) x)
0.0ms
y
@inf
(*.f64 3 (*.f64 (pow.f64 y 2) x))
0.0ms
y
@-inf
(*.f64 (pow.f64 y 2) x)

rewrite54.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
679×pow1_binary64
626×add-log-exp_binary64
625×log1p-expm1-u_binary64
625×expm1-log1p-u_binary64
613×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
116517
2178917
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(*.f64 (pow.f64 y 2) x)
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 y y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 y x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 (*.f64 y y) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 (*.f64 y y) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (*.f64 y y) 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 (*.f64 y y) 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 9))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 y (*.f64 y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 (*.f64 y y) 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 (*.f64 y y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 (*.f64 y y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 (*.f64 y y) 3))))))))

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
24 → 24
Calls
Call 1
Inputs
Outputs

localize142.0ms (1.9%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f64 (*.f64 x 3))
0.1b
(*.f64 (sqrt.f64 (*.f64 x 3)) y)
0.1b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
Compiler

Compiled 27 to 19 computations (29.6% saved)

series12.0ms (0.2%)

Counts
3 → 24
Calls

15 calls:

TimeVariablePointExpression
3.0ms
y
@0
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
2.0ms
x
@0
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
1.0ms
x
@-inf
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
1.0ms
x
@inf
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
1.0ms
y
@inf
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)

rewrite68.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
749×pow1_binary64
693×add-log-exp_binary64
692×log1p-expm1-u_binary64
692×expm1-log1p-u_binary64
675×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0927
118725
2204225
Stop Event
node limit
Counts
3 → 59
Calls
Call 1
Inputs
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
(*.f64 (sqrt.f64 (*.f64 x 3)) y)
(sqrt.f64 (*.f64 x 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 x 3) (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 3) (*.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x 3)) (*.f64 y (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 (sqrt.f64 (*.f64 x 3)) (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) (*.f64 (sqrt.f64 (*.f64 x 3)) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (*.f64 x 3) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y y) (*.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 4)) (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) (*.f64 (cbrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)) (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)) (*.f64 (sqrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)) (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) (sqrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y))) (sqrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) (sqrt.f64 (*.f64 x 3))) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) y) (sqrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y)))) (cbrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 x 3) (*.f64 y y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 x 3) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 x 3) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 x 3) (*.f64 y y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (sqrt.f64 (*.f64 x 3)) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x 3) (*.f64 y y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sqrt.f64 (*.f64 x 3))) y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x 3) 3/2) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 x 3) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 x 3))) (cbrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x 3)) (cbrt.f64 (sqrt.f64 (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x 3) 1/4) (pow.f64 (*.f64 x 3) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 3) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (*.f64 x 3) 2))) (sqrt.f64 (cbrt.f64 (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (*.f64 x 3) 2)) 1/2) (pow.f64 (cbrt.f64 (*.f64 x 3)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x 3) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x 3) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 x 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x 3) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x 3) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 x 3))))))))

simplify201.0ms (2.7%)

Algorithm
egg-herbie
Rules
771×fabs-mul_binary64
763×sqr-pow_binary64
759×cube-prod_binary64
662×pow-sqr_binary64
565×unswap-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013312
129252
266252
3188252
4859252
51264252
62162252
72267252
82423252
92605252
102813252
113092252
123458252
133888252
144463252
155200252
166113252
176637252
187099252
197519252
207769252
217809252
Stop Event
node limit
Counts
83 → 63
Calls
Call 1
Inputs
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
Outputs
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 x)))

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
0.2b
(*.f64 x (*.f64 3 y))
0.3b
(pow.f64 (*.f64 x (*.f64 3 y)) 3)
28.6b
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3))
Compiler

Compiled 38 to 26 computations (31.6% saved)

series147.0ms (2%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
132.0ms
y
@0
(pow.f64 (*.f64 x (*.f64 3 y)) 3)
4.0ms
y
@-inf
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
2.0ms
x
@-inf
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3))
2.0ms
y
@-inf
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3))
1.0ms
x
@0
(pow.f64 (*.f64 x (*.f64 3 y)) 3)

rewrite70.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
773×pow1_binary64
721×add-log-exp_binary64
721×log1p-expm1-u_binary64
721×expm1-log1p-u_binary64
702×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0927
119227
2207227
Stop Event
node limit
Counts
3 → 77
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3))
(pow.f64 (*.f64 x (*.f64 3 y)) 3)
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 3 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 9 (*.f64 y y))) (*.f64 (cbrt.f64 (*.f64 3 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) (pow.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 2) (cbrt.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 y)) (*.f64 (sqrt.f64 (*.f64 3 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) (sqrt.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 3) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) 1/3) (cbrt.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (*.f64 x (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3/2) 1/3) (pow.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x y) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (cbrt.f64 (*.f64 9 (*.f64 y y)))) (cbrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) (sqrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 y) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) 1) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) (cbrt.f64 (*.f64 y y))) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (*.f64 3 y) (pow.f64 (*.f64 x (*.f64 3 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 y) (*.f64 x (pow.f64 (*.f64 x (*.f64 3 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 3 y)) (pow.f64 (*.f64 x (*.f64 3 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 x (*.f64 3 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) (*.f64 x (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 2) (*.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) (pow.f64 (*.f64 x (*.f64 3 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) (*.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) (pow.f64 (*.f64 x (*.f64 3 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) (*.f64 27 (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 27 (pow.f64 y 3)) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3/2) (pow.f64 (*.f64 x (*.f64 3 y)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 3) (*.f64 y (pow.f64 (*.f64 x (*.f64 3 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 2) 3) (*.f64 x (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) 3) (pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x 3) 3) (pow.f64 y 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) x) (*.f64 3 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) (*.f64 3 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) 1) (*.f64 x (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 2)) (cbrt.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) (sqrt.f64 (*.f64 x (*.f64 3 y)))) (sqrt.f64 (*.f64 x (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 2) (*.f64 x 3)) y)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (*.f64 x (*.f64 3 y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 x 3) (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x 3) (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 x 3) (*.f64 y y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (*.f64 x 3) (*.f64 y y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) (*.f64 3 y)) y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 x 3) (*.f64 y y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 x (*.f64 3 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 x 3) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 x 3) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 x 3) (*.f64 y y))))))))

simplify136.0ms (1.8%)

Algorithm
egg-herbie
Rules
944×unswap-sqr_binary64
515×distribute-rgt-neg-in_binary64
333×neg-sub0_binary64
329×fma-def_binary64
329×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
026784
173784
2214784
3646784
4990784
51650784
62020784
72339784
82941784
93248784
103565784
115265784
126492784
Stop Event
node limit
Counts
149 → 86
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 x (cbrt.f64 -27))))
(*.f64 (*.f64 (neg.f64 y) x) (cbrt.f64 -27))
(*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27)))
(*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 27 (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 x (*.f64 y y)) (cbrt.f64 -27)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 (*.f64 y x) (neg.f64 (cbrt.f64 -27))))
(*.f64 y (*.f64 x (*.f64 y (neg.f64 (cbrt.f64 -27)))))
(*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))

eval122.0ms (1.6%)

Compiler

Compiled 2835 to 1940 computations (31.6% saved)

prune178.0ms (2.4%)

Pruning

13 alts after pruning (8 fresh and 5 done)

PrunedKeptTotal
New2397246
Fresh415
Picked011
Done246
Total24513258
Error
0b
Counts
258 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
23.5b
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
0.3b
(*.f64 (*.f64 (*.f64 3 y) x) y)
9.4b
(*.f64 (*.f64 y y) (*.f64 x 3))
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
30.5b
(pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)
30.5b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
0.6b
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
18.9b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
9.6b
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
0.3b
(*.f64 3 (*.f64 y (*.f64 y x)))
9.9b
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
9.5b
(*.f64 x (*.f64 3 (*.f64 y y)))
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
Compiler

Compiled 213 to 155 computations (27.2% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 (*.f64 3 y) x) y)
0.2b
(*.f64 (*.f64 3 y) x)
Compiler

Compiled 20 to 12 computations (40% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
y
@0
(*.f64 (*.f64 3 y) x)
0.0ms
y
@inf
(*.f64 (*.f64 3 y) x)
0.0ms
x
@inf
(*.f64 (*.f64 3 y) x)
0.0ms
y
@-inf
(*.f64 (*.f64 3 y) x)
0.0ms
y
@0
(*.f64 (*.f64 (*.f64 3 y) x) y)

rewrite63.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
675×pow1_binary64
622×add-log-exp_binary64
622×log1p-expm1-u_binary64
622×expm1-log1p-u_binary64
608×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
114317
2172817
Stop Event
node limit
Counts
2 → 26
Calls
Call 1
Inputs
(*.f64 (*.f64 3 y) x)
(*.f64 (*.f64 (*.f64 3 y) x) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (*.f64 y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 y x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 y (*.f64 y x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y (*.f64 y x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (*.f64 y (*.f64 y x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 3) y) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 3 (*.f64 y x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 y (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 y (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 y (*.f64 y x)))))))))

simplify194.0ms (2.6%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
642×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010408
123408
245408
384408
4245408
5820408
61059408
71473408
81573408
91708408
101880408
112125408
122440408
132810408
143269408
153852408
164558408
175420408
185850408
196168408
206472408
216552408
226588408
Stop Event
node limit
Counts
74 → 30
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 y x) (*.f64 3 y))

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 y (*.f64 y x))
0.2b
(*.f64 3 (*.f64 y (*.f64 y x)))
Compiler

Compiled 20 to 7 computations (65% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
y
@0
(*.f64 3 (*.f64 y (*.f64 y x)))
0.0ms
y
@inf
(*.f64 3 (*.f64 y (*.f64 y x)))
0.0ms
x
@inf
(*.f64 3 (*.f64 y (*.f64 y x)))
0.0ms
x
@0
(*.f64 3 (*.f64 y (*.f64 y x)))
0.0ms
y
@-inf
(*.f64 3 (*.f64 y (*.f64 y x)))

rewrite194.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
663×pow1_binary64
610×add-log-exp_binary64
610×log1p-expm1-u_binary64
610×expm1-log1p-u_binary64
598×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
114217
2167317
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 y (*.f64 y x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y (*.f64 y x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 y) (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 y (*.f64 y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 y (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 y (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 y (*.f64 y x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 y x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 y x))))))))

simplify215.0ms (2.9%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
640×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08408
117408
237408
383408
4223408
5736408
6997408
71411408
81511408
91646408
101818408
112061408
122374408
132744408
143202408
153791408
164499408
175361408
185787408
196103408
206411408
216489408
226523408
Stop Event
node limit
Counts
72 → 28
Calls
Call 1
Inputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
Outputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
0.2b
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
1.0b
(cbrt.f64 -27)
Compiler

Compiled 31 to 23 computations (25.8% saved)

series7.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@0
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
1.0ms
x
@0
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
1.0ms
x
@0
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
1.0ms
y
@0
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
0.0ms
x
@inf
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))

rewrite390.0ms (5.2%)

Algorithm
egg-rewrite-iter-limit
egg-rewrite
batch-egg-rewrite
Rules
569×fma-def_binary64
368×expm1-udef_binary64
367×log1p-udef_binary64
312×fma-neg_binary64
229×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0928
118528
2228128
033
1593
25983
359353
0811
116411
2201811
0811
0914
118514
2228114
0914
Stop Event
iter limit
unsound
iter limit
unsound
node limit
unsound
Counts
3 → 57
Calls
Call 1
Inputs
(cbrt.f64 -27)
(*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (cbrt.f64 -27) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 -27))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cbrt.f64 -27))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cbrt.f64 -27)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 -27)))) (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 -27)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 -27) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 -27) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 -27))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 -27)) (cbrt.f64 (cbrt.f64 729)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 729)) (cbrt.f64 (cbrt.f64 -27)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 -27 1/6) (pow.f64 -27 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 729))) (*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 -27))) (cbrt.f64 (cbrt.f64 729))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 531441))) (*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 729))) (cbrt.f64 (cbrt.f64 -27))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 -27) 1/6) (*.f64 (pow.f64 (cbrt.f64 -27) 1/6) (cbrt.f64 (cbrt.f64 729))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 -27 1/12) (pow.f64 -27 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 -27 1/12) (*.f64 (pow.f64 -27 1/12) (pow.f64 -27 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 -27 1/4) (pow.f64 -27 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 -27)) 5)) (pow.f64 (cbrt.f64 -27) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 -27 1/6) (cbrt.f64 (cbrt.f64 -27))) (pow.f64 (cbrt.f64 -27) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (cbrt.f64 -27)) (cbrt.f64 (cbrt.f64 (cbrt.f64 531441)))) (cbrt.f64 (cbrt.f64 (cbrt.f64 729))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (cbrt.f64 729)) (cbrt.f64 (cbrt.f64 (cbrt.f64 729)))) (cbrt.f64 (cbrt.f64 (cbrt.f64 -27))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (cbrt.f64 729)) (pow.f64 (cbrt.f64 -27) 1/6)) (pow.f64 (cbrt.f64 -27) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 (cbrt.f64 -27) 1) 3) 1) (fma.f64 (+.f64 (cbrt.f64 -27) 1) (+.f64 (cbrt.f64 -27) 1) (+.f64 1 (+.f64 (cbrt.f64 -27) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (+.f64 (cbrt.f64 -27) 1) (+.f64 (cbrt.f64 -27) 1) -1) (+.f64 (+.f64 (cbrt.f64 -27) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 -27 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 -27) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 729 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 729) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 -27)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 -27 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/3) (log.f64 -27))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (cbrt.f64 -27)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 -27)))) (sqrt.f64 (log.f64 (cbrt.f64 -27))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 -27))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 -27))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 729))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 -27))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 -27)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 -27)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 -27)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 -27)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 -27))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/6 (log.f64 -27)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (cbrt.f64 -27) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (cbrt.f64 -27) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 (cbrt.f64 -27) 1)) (cbrt.f64 (+.f64 (cbrt.f64 -27) 1))) (cbrt.f64 (+.f64 (cbrt.f64 -27) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (hypot.f64 1 (pow.f64 -27 1/6)) (hypot.f64 1 (pow.f64 -27 1/6)) -1)))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))) (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))))))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27))))) (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))) (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))))))))))

simplify258.0ms (3.4%)

Algorithm
egg-herbie
Rules
805×distribute-rgt-neg-in_binary64
803×distribute-lft-neg-in_binary64
741×fma-def_binary64
684×unswap-sqr_binary64
600×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
016600
140600
2116600
3255600
4692600
51170600
61823600
72508600
83773600
95313600
Stop Event
node limit
Counts
105 → 62
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
Outputs
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 y (*.f64 (cbrt.f64 -27) x)))
(*.f64 (*.f64 y (cbrt.f64 -27)) (neg.f64 x))
(*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x)))
(*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y)))
(*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 x (cbrt.f64 -27))))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -27) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -27) x) (*.f64 y y)))
(*.f64 (*.f64 y (*.f64 y x)) (neg.f64 (cbrt.f64 -27)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -27) (neg.f64 x))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 x (neg.f64 y))))
(*.f64 y (*.f64 (cbrt.f64 -27) (*.f64 y (neg.f64 x))))
(*.f64 (cbrt.f64 -27) (*.f64 y (*.f64 y (neg.f64 x))))

localize22.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
0.2b
(*.f64 x (*.f64 3 y))
2.8b
(exp.f64 (log.f64 (*.f64 x (*.f64 3 y))))
9.2b
(log.f64 (*.f64 x (*.f64 3 y)))
Compiler

Compiled 35 to 23 computations (34.3% saved)

series302.0ms (4%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
180.0ms
y
@-inf
(log.f64 (*.f64 x (*.f64 3 y)))
44.0ms
x
@0
(log.f64 (*.f64 x (*.f64 3 y)))
43.0ms
y
@0
(log.f64 (*.f64 x (*.f64 3 y)))
15.0ms
x
@-inf
(log.f64 (*.f64 x (*.f64 3 y)))
8.0ms
x
@inf
(log.f64 (*.f64 x (*.f64 3 y)))

rewrite73.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
742×pow1_binary64
682×add-log-exp_binary64
682×log1p-expm1-u_binary64
682×expm1-log1p-u_binary64
668×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0926
116626
2186626
Stop Event
node limit
Counts
3 → 74
Calls
Call 1
Inputs
(log.f64 (*.f64 x (*.f64 3 y)))
(exp.f64 (log.f64 (*.f64 x (*.f64 3 y))))
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 3 y)) (log.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 x) (log.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y x))) 2)) (log.f64 (cbrt.f64 (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 x 3)) (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (*.f64 3 (*.f64 y x)))) (log.f64 (sqrt.f64 (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (*.f64 3 (*.f64 y x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (*.f64 3 (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))) (pow.f64 (cbrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))) 2) (cbrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))) (sqrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 (*.f64 3 y)) 3)) (+.f64 (*.f64 (log.f64 x) (log.f64 x)) (-.f64 (*.f64 (log.f64 (*.f64 3 y)) (log.f64 (*.f64 3 y))) (*.f64 (log.f64 x) (log.f64 (*.f64 3 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (log.f64 x) (log.f64 x)) (*.f64 (log.f64 (*.f64 3 y)) (log.f64 (*.f64 3 y)))) (-.f64 (log.f64 x) (log.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (*.f64 3 (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (*.f64 3 (*.f64 y x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (*.f64 3 (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (*.f64 3 (*.f64 y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (*.f64 3 (*.f64 y x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (*.f64 3 (*.f64 y x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (*.f64 3 (*.f64 y x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 3 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 3 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 3 (*.f64 y x))) (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y x))) 2) (cbrt.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 3 y)) 2) (*.f64 (cbrt.f64 (*.f64 3 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 (*.f64 y x))) (sqrt.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 y)) (*.f64 (sqrt.f64 (*.f64 3 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 3) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x y) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (*.f64 3 y)) 2)) (cbrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) (sqrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 y) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) 1) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (*.f64 y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 3 (*.f64 y x))))) (sqrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))) 2)) (cbrt.f64 (log.f64 (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 3) y) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 y x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 3 (*.f64 y x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 3 (*.f64 y x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 3 (*.f64 y x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 3 (*.f64 y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 3 (*.f64 y x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 (*.f64 y x)) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 3 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 3 (*.f64 y x)))))))))

simplify129.0ms (1.7%)

Algorithm
egg-herbie
Rules
683×fma-def_binary64
542×fma-neg_binary64
330×unsub-neg_binary64
329×distribute-neg-in_binary64
304×associate-*l*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
041712
188696
2144696
3377696
41115696
52849696
65505696
77557696
Stop Event
node limit
Counts
146 → 82
Calls
Call 1
Inputs
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 3 y)) (*.f64 -1 (log.f64 (/.f64 1 x))))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 (*.f64 -3 y)) (*.f64 -1 (log.f64 (/.f64 -1 x))))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 3 x)))
(+.f64 (log.f64 (*.f64 3 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -3 x)))
(+.f64 (log.f64 (*.f64 y -3)) (neg.f64 (log.f64 (/.f64 -1 x))))
(-.f64 (log.f64 (*.f64 y -3)) (log.f64 (/.f64 -1 x)))
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 y x))
(*.f64 (*.f64 3 y) x)
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 (*.f64 3 y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))

localize13.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)
0.2b
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
0.3b
(*.f64 y (sqrt.f64 3))
Compiler

Compiled 30 to 20 computations (33.3% saved)

series7.0ms (0.1%)

Counts
3 → 12
Calls

15 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)
1.0ms
x
@-inf
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
0.0ms
y
@-inf
(*.f64 y (sqrt.f64 3))
0.0ms
x
@inf
(pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)
0.0ms
x
@inf
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))

rewrite211.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
833×pow1_binary64
770×add-log-exp_binary64
769×log1p-expm1-u_binary64
769×expm1-log1p-u_binary64
749×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01031
120725
2227225
Stop Event
node limit
Counts
3 → 54
Calls
Call 1
Inputs
(*.f64 y (sqrt.f64 3))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (sqrt.f64 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (sqrt.f64 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (sqrt.f64 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (sqrt.f64 3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 3 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (sqrt.f64 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (sqrt.f64 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (*.f64 3 (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 3 (sqrt.f64 3)) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (sqrt.f64 3))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (sqrt.f64 (*.f64 3 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (sqrt.f64 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y (sqrt.f64 3)) 3) (pow.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3/2) (pow.f64 (*.f64 y (sqrt.f64 3)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 (sqrt.f64 (*.f64 3 x)) (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (sqrt.f64 3)) (*.f64 (sqrt.f64 x) (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 3 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (*.f64 y (sqrt.f64 3)) (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) (*.f64 y (sqrt.f64 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (*.f64 y y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y y) (*.f64 (sqrt.f64 (*.f64 3 x)) (sqrt.f64 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y y) (pow.f64 (sqrt.f64 (*.f64 3 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) (cbrt.f64 (pow.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) (*.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))) (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) 4)) (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))) (*.f64 (sqrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))) (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) (sqrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))))) (sqrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) y) (sqrt.f64 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) (*.f64 y (sqrt.f64 3))) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) (sqrt.f64 x)) (*.f64 y (sqrt.f64 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (sqrt.f64 (*.f64 3 x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 3 (*.f64 y y))) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))))

simplify171.0ms (2.3%)

Algorithm
egg-herbie
Rules
1147×sqr-pow_binary64
777×fabs-mul_binary64
753×cube-prod_binary64
655×pow-sqr_binary64
430×unswap-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
010180
122120
253120
3150120
4595120
5900120
61630120
71735120
81885120
92046120
102243120
112515120
122888120
133316120
143889120
154628120
165547120
176071120
186533120
196957120
207213120
217257120
Stop Event
node limit
Counts
66 → 56
Calls
Call 1
Inputs
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
Outputs
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 (*.f64 y 3) (*.f64 y x))
(*.f64 y (*.f64 3 (*.f64 y x)))

eval263.0ms (3.5%)

Compiler

Compiled 3314 to 2249 computations (32.1% saved)

prune46.0ms (0.6%)

Pruning

13 alts after pruning (3 fresh and 10 done)

PrunedKeptTotal
New2740274
Fresh033
Picked011
Done099
Total27413287
Error
0b
Counts
287 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
23.5b
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
0.3b
(*.f64 (*.f64 (*.f64 3 y) x) y)
9.4b
(*.f64 (*.f64 y y) (*.f64 x 3))
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
30.5b
(pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)
30.5b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
0.6b
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
18.9b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
9.6b
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
0.3b
(*.f64 3 (*.f64 y (*.f64 y x)))
9.9b
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
9.5b
(*.f64 x (*.f64 3 (*.f64 y y)))
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
Compiler

Compiled 131 to 95 computations (27.5% saved)

localize14.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(pow.f64 (*.f64 y (sqrt.f64 3)) 2)
0.3b
(*.f64 y (sqrt.f64 3))
9.2b
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
Compiler

Compiled 26 to 20 computations (23.1% saved)

series6.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
1.0ms
y
@0
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
1.0ms
x
@inf
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
1.0ms
y
@inf
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
1.0ms
y
@-inf
(pow.f64 (*.f64 y (sqrt.f64 3)) 2)

rewrite100.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
742×pow1_binary64
685×add-log-exp_binary64
684×log1p-expm1-u_binary64
684×expm1-log1p-u_binary64
668×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0921
118617
2201517
Stop Event
node limit
Counts
2 → 35
Calls
Call 1
Inputs
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
(pow.f64 (*.f64 y (sqrt.f64 3)) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 (*.f64 y y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 (*.f64 y y)) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 (sqrt.f64 3) (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 3) (*.f64 y (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (sqrt.f64 3)) (*.f64 y (sqrt.f64 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 3 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y y) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 y (sqrt.f64 3)) 4)) (cbrt.f64 (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 3 (*.f64 y y))) (cbrt.f64 (pow.f64 (*.f64 y (sqrt.f64 3)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 3 (*.f64 y y))) (*.f64 (cbrt.f64 (*.f64 y (sqrt.f64 3))) (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y (sqrt.f64 3))) (*.f64 (sqrt.f64 (*.f64 y (sqrt.f64 3))) (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 (*.f64 y (sqrt.f64 3)))) (sqrt.f64 (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 3)) y) (sqrt.f64 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 3)) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (cbrt.f64 (*.f64 3 (*.f64 y y)))) (cbrt.f64 (*.f64 y (sqrt.f64 3))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (sqrt.f64 3)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 y y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 y y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 y y))))))))

simplify204.0ms (2.7%)

Algorithm
egg-herbie
Rules
775×fabs-mul_binary64
763×sqr-pow_binary64
759×cube-prod_binary64
662×pow-sqr_binary64
618×unswap-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
011504
123324
259324
3184324
4820324
51230324
62188324
72293324
82449324
92628324
102834324
113113324
123466324
133901324
144474324
155211324
166128324
176648324
187108324
197530324
207786324
217834324
Stop Event
node limit
Counts
71 → 38
Calls
Call 1
Inputs
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
Outputs
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (*.f64 y y) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)
(*.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 3) 2))
(*.f64 (*.f64 y y) (pow.f64 (sqrt.f64 3) 2))
(*.f64 y (*.f64 y 3))
(*.f64 (*.f64 y y) 3)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
9.2b
(*.f64 (*.f64 y y) (*.f64 x 3))
Compiler

Compiled 18 to 9 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
y
@0
(*.f64 (*.f64 y y) (*.f64 x 3))
0.0ms
y
@inf
(*.f64 (*.f64 y y) (*.f64 x 3))
0.0ms
x
@0
(*.f64 (*.f64 y y) (*.f64 x 3))
0.0ms
y
@-inf
(*.f64 (*.f64 y y) (*.f64 x 3))
0.0ms
x
@inf
(*.f64 (*.f64 y y) (*.f64 x 3))

rewrite93.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
648×pow1_binary64
597×add-log-exp_binary64
597×log1p-expm1-u_binary64
597×expm1-log1p-u_binary64
582×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
114310
2168310
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (*.f64 y y) (*.f64 x 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 (*.f64 y x) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 (*.f64 y x) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 (*.f64 y x) 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 (*.f64 y x) 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 (*.f64 x 3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 9 (*.f64 x x)) (pow.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 3) x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 (*.f64 y x) 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 (*.f64 y x) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 (*.f64 y x) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 (*.f64 y x) 3))))))))

simplify185.0ms (2.5%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
640×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
383240
4223240
5736240
6997240
71411240
81511240
91646240
101818240
112061240
122374240
132744240
143202240
153791240
164499240
175361240
185787240
196103240
206411240
216489240
226523240
Stop Event
node limit
Counts
35 → 13
Calls
Call 1
Inputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.5b
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
9.2b
(*.f64 (*.f64 x 3) (*.f64 y y))
20.5b
(cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y)))
Compiler

Compiled 36 to 19 computations (47.2% saved)

series16.0ms (0.2%)

Counts
3 → 24
Calls

18 calls:

TimeVariablePointExpression
3.0ms
x
@0
(cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y)))
1.0ms
x
@0
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
1.0ms
x
@-inf
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
1.0ms
x
@-inf
(cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y)))
1.0ms
x
@inf
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)

rewrite78.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
746×pow1_binary64
696×add-log-exp_binary64
696×log1p-expm1-u_binary64
696×expm1-log1p-u_binary64
677×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
119032
2200632
Stop Event
node limit
Counts
3 → 81
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y)))
(*.f64 (*.f64 x 3) (*.f64 y y))
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) (pow.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) 2) (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (pow.f64 (*.f64 3 (*.f64 y y)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x 3)) (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))) (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 3 (*.f64 x y))) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y (sqrt.f64 (*.f64 x 3))) 1/3) (pow.f64 (*.f64 y (sqrt.f64 (*.f64 x 3))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 3 (*.f64 x y)) 1/3) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 (*.f64 x 3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x 3) 3) (pow.f64 (*.f64 y y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 (*.f64 x 3) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 3 (*.f64 y y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 3 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 x (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 3) (*.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 3 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y y) (*.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 y 4)) (*.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x 3)) (*.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x 3)) 2) (*.f64 (cbrt.f64 (*.f64 x 3)) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))) (*.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))) (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (sqrt.f64 (*.f64 x 3))) (*.f64 y (sqrt.f64 (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x 3)) (*.f64 (sqrt.f64 (*.f64 x 3)) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (*.f64 y y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (*.f64 x y)) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) 2) 3) (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))) 3) (pow.f64 (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 3) (cbrt.f64 (pow.f64 y 4))) (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y y) x) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y y) (pow.f64 (cbrt.f64 (*.f64 x 3)) 2)) (cbrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y y) (sqrt.f64 (*.f64 x 3))) (sqrt.f64 (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) 1) (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) (cbrt.f64 (*.f64 x 3))) (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9))) (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3))))) (cbrt.f64 (*.f64 y (sqrt.f64 (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 (*.f64 x y)) 1) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 (*.f64 x y)) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 (*.f64 x y)) (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 x x) 9)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 3 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 (*.f64 y y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x 3) 3) (pow.f64 (*.f64 y y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 (*.f64 x 3) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 (*.f64 y y)))))))))

simplify179.0ms (2.4%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
640×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
383240
4223240
5736240
6997240
71411240
81511240
91646240
101818240
112061240
122374240
132744240
143202240
153791240
164499240
175361240
185787240
196103240
206411240
216489240
226523240
Stop Event
node limit
Counts
105 → 74
Calls
Call 1
Inputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 (*.f64 y y) (*.f64 3 x))
(*.f64 y (*.f64 y (*.f64 3 x)))

eval40.0ms (0.5%)

Compiler

Compiled 1723 to 1140 computations (33.8% saved)

prune26.0ms (0.3%)

Pruning

13 alts after pruning (1 fresh and 12 done)

PrunedKeptTotal
New1371138
Fresh000
Picked011
Done11112
Total13813151
Error
0b
Counts
151 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
23.5b
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
0.3b
(*.f64 (*.f64 (*.f64 3 y) x) y)
9.4b
(*.f64 (*.f64 y y) (*.f64 x 3))
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
30.5b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
0.6b
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
9.6b
(*.f64 x (*.f64 (*.f64 (*.f64 y (sqrt.f64 3)) y) (sqrt.f64 3)))
18.9b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
9.6b
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
0.3b
(*.f64 3 (*.f64 y (*.f64 y x)))
9.9b
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
9.5b
(*.f64 x (*.f64 3 (*.f64 y y)))
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
Compiler

Compiled 133 to 96 computations (27.8% saved)

regimes223.0ms (3%)

Accuracy

Total -49.5b remaining (-19637.5%)

Threshold costs -49.5b (-19637.5%)

Counts
20 → 1
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 3 y) x) y)
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y x)) y)
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y y)))
(*.f64 (*.f64 (*.f64 x 3) y) y)
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 (*.f64 y (*.f64 x (neg.f64 (cbrt.f64 -27)))) y)
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
(*.f64 x (pow.f64 (*.f64 y (sqrt.f64 3)) 2))
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
(*.f64 (exp.f64 (log.f64 (*.f64 x (*.f64 3 y)))) y)
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x 3) (*.f64 y y))) 3)
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (*.f64 y y)))) 3)
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 3)) y)
(*.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3) y)
(*.f64 x (*.f64 (*.f64 (*.f64 y (sqrt.f64 3)) y) (sqrt.f64 3)))
(pow.f64 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)) 2)
Outputs
(*.f64 (*.f64 (*.f64 3 y) x) y)
Calls

5 calls:

148.0ms
y
33.0ms
(*.f64 x 3)
17.0ms
(*.f64 x 3)
11.0ms
x
8.0ms
(*.f64 (*.f64 (*.f64 x 3) y) y)
Results
ErrorSegmentsBranch
0.3b1x
0.3b1y
0.3b1(*.f64 (*.f64 (*.f64 x 3) y) y)
0.3b1(*.f64 x 3)
0.3b1(*.f64 x 3)
Compiler

Compiled 195 to 127 computations (34.9% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
11010
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 3 y) x) y)
Outputs
(*.f64 (*.f64 (*.f64 3 y) x) y)
(*.f64 y (*.f64 (*.f64 3 y) x))
Compiler

Compiled 9 to 6 computations (33.3% saved)

soundness0.0ms (0%)

end12.0ms (0.2%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

Profiling

Loading profile data...