Details

Time bar (total: 3.8s)

analyze55.0ms (1.4%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
37.5%37.5%62.4%0.1%0%0%0%6
53.3%50%43.7%0.1%6.2%0%0%7
63.3%59.3%34.3%0.1%6.2%0%0%8
74.1%67.1%23.4%0.1%9.4%0%0%9
80.2%72.6%18%0.1%9.4%0%0%10
86.4%76.9%12.1%0.1%10.9%0%0%11
89.7%79.8%9.2%0.1%10.9%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample1.0s (27.2%)

Results
997.0ms8256×body256valid
13.0ms152×body256infinite
Bogosity

preprocess29.0ms (0.8%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*l*_binary64
associate-*r*_binary64
swap-x-y
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0814
11414
22014
32014
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(*.f64 (*.f64 x 27) y)
(*.f64 (*.f64 y 27) x)
Outputs
(*.f64 (*.f64 x 27) y)
(*.f64 x (*.f64 27 y))
(*.f64 (*.f64 y 27) x)
(*.f64 x (*.f64 27 y))
Symmetry

(sort x y)

Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify13.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
1107
2177
3197
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 x 27) y)
Outputs
(*.f64 (*.f64 x 27) y)
(*.f64 x (*.f64 27 y))

eval1.0ms (0%)

Compiler

Compiled 12 to 8 computations (33.3% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 14 to 10 computations (28.6% saved)

localize11.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (*.f64 27 y))
Compiler

Compiled 13 to 8 computations (38.5% saved)

series8.0ms (0.2%)

Counts
1 → 24
Calls

6 calls:

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

rewrite64.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
555×pow1_binary64
512×add-log-exp_binary64
512×log1p-expm1-u_binary64
512×expm1-log1p-u_binary64
502×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify19.0ms (0.5%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
110168
217168
319168
Stop Event
saturated
Counts
35 → 12
Calls
Call 1
Inputs
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
Outputs
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))

localize11.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (*.f64 x 27) y)
Compiler

Compiled 13 to 8 computations (38.5% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite63.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
554×pow1_binary64
511×add-log-exp_binary64
511×log1p-expm1-u_binary64
511×expm1-log1p-u_binary64
501×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify18.0ms (0.5%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
110168
217168
319168
Stop Event
saturated
Counts
35 → 12
Calls
Call 1
Inputs
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
Outputs
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))

eval14.0ms (0.4%)

Compiler

Compiled 182 to 133 computations (26.9% saved)

prune13.0ms (0.3%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New20424
Fresh000
Picked011
Done011
Total20626
Error
0.0b
Counts
26 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (*.f64 x 27) y)
28.5b
(exp.f64 (log.f64 (*.f64 x (*.f64 27 y))))
1.2b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 27 y))) 3)
26.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 27 y))) 2)
0.3b
(*.f64 27 (*.f64 y x))
0.3b
(*.f64 x (*.f64 27 y))
Compiler

Compiled 50 to 38 computations (24% saved)

localize25.0ms (0.7%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (*.f64 27 y))
2.5b
(exp.f64 (log.f64 (*.f64 x (*.f64 27 y))))
7.4b
(log.f64 (*.f64 x (*.f64 27 y)))
Compiler

Compiled 26 to 17 computations (34.6% saved)

series150.0ms (4%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
47.0ms
x
@0
(log.f64 (*.f64 x (*.f64 27 y)))
37.0ms
x
@-inf
(log.f64 (*.f64 x (*.f64 27 y)))
24.0ms
y
@0
(log.f64 (*.f64 x (*.f64 27 y)))
15.0ms
y
@-inf
(log.f64 (*.f64 x (*.f64 27 y)))
12.0ms
x
@inf
(log.f64 (*.f64 x (*.f64 27 y)))

rewrite58.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
640×pow1_binary64
590×add-log-exp_binary64
590×log1p-expm1-u_binary64
590×expm1-log1p-u_binary64
578×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify90.0ms (2.4%)

Algorithm
egg-herbie
Rules
552×fma-neg_binary64
408×fma-def_binary64
134×distribute-rgt-in_binary64
129×sub-neg_binary64
128×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
037464
178456
2119456
3310456
4808456
51288456
61818456
72241456
82461456
92480456
Stop Event
saturated
Counts
107 → 65
Calls
Call 1
Inputs
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
Outputs
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 27 y)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -27 y)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 (*.f64 27 x)))
(+.f64 (log.f64 (*.f64 27 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -27 x)))
(fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 y -27)))
(-.f64 (log.f64 (*.f64 y -27)) (log.f64 (/.f64 -1 x)))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)

localize6.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 27 (*.f64 y x))
Compiler

Compiled 13 to 6 computations (53.8% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

6 calls:

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

rewrite50.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
555×pow1_binary64
512×add-log-exp_binary64
512×log1p-expm1-u_binary64
512×expm1-log1p-u_binary64
502×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify9.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize15.0ms (0.4%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (*.f64 27 y))
0.6b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 27 y))) 3)
7.7b
(cbrt.f64 (*.f64 x (*.f64 27 y)))
Compiler

Compiled 28 to 19 computations (32.1% saved)

series35.0ms (0.9%)

Counts
2 → 0
Calls

12 calls:

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

rewrite63.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
710×pow1_binary64
665×add-log-exp_binary64
665×log1p-expm1-u_binary64
665×expm1-log1p-u_binary64
650×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize12.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 27 y))) 2)
0.3b
(*.f64 x (*.f64 27 y))
7.2b
(sqrt.f64 (*.f64 x (*.f64 27 y)))
Compiler

Compiled 28 to 19 computations (32.1% saved)

series13.0ms (0.3%)

Counts
2 → 0
Calls

12 calls:

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

rewrite61.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
708×pow1_binary64
657×add-log-exp_binary64
657×log1p-expm1-u_binary64
657×expm1-log1p-u_binary64
643×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval63.0ms (1.6%)

Compiler

Compiled 2564 to 1858 computations (27.5% saved)

prune46.0ms (1.2%)

Pruning

10 alts after pruning (4 fresh and 6 done)

PrunedKeptTotal
New2324236
Fresh000
Picked011
Done055
Total23210242
Error
0b
Counts
242 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
18.6b
(*.f64 (*.f64 (*.f64 x 27) (sqrt.f64 y)) (sqrt.f64 y))
0.3b
(*.f64 (*.f64 x 27) y)
18.7b
(*.f64 (*.f64 x (sqrt.f64 (*.f64 27 y))) (sqrt.f64 (*.f64 27 y)))
24.1b
(*.f64 (*.f64 x (cbrt.f64 (*.f64 729 (*.f64 y y)))) (*.f64 (cbrt.f64 y) 3))
1.2b
(*.f64 (*.f64 (*.f64 x 27) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
28.5b
(exp.f64 (log.f64 (*.f64 x (*.f64 27 y))))
1.2b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 27 y))) 3)
26.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 27 y))) 2)
0.3b
(*.f64 27 (*.f64 y x))
0.3b
(*.f64 x (*.f64 27 y))
Compiler

Compiled 102 to 75 computations (26.5% saved)

localize18.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cbrt.f64 y) 3)
0.3b
(*.f64 (*.f64 x (cbrt.f64 (*.f64 729 (*.f64 y y)))) (*.f64 (cbrt.f64 y) 3))
0.6b
(cbrt.f64 y)
28.9b
(cbrt.f64 (*.f64 729 (*.f64 y y)))
Compiler

Compiled 47 to 24 computations (48.9% saved)

series17.0ms (0.5%)

Counts
4 → 24
Calls

15 calls:

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

rewrite91.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
560×log-prod_binary64
504×prod-exp_binary64
401×exp-prod_binary64
394×pow-prod-down_binary64
325×pow-unpow_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01238
124225
2281525
Stop Event
node limit
Counts
4 → 150
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 729 (*.f64 y y)))
(cbrt.f64 y)
(*.f64 (*.f64 x (cbrt.f64 (*.f64 729 (*.f64 y y)))) (*.f64 (cbrt.f64 y) 3))
(*.f64 (cbrt.f64 y) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 y) 2)) 9)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 y) 2)) 9))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 y) 2)) 9))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 y) 2)) 9))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) (*.f64 3 (*.f64 (cbrt.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 (cbrt.f64 y) (*.f64 (cbrt.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 y) 3) (*.f64 (cbrt.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 9 (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))) (pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 y) 3)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 y) 3)) 4) (cbrt.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) 9)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y 27) 1/6) (sqrt.f64 (*.f64 y 27)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 729 y)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y 27)) (pow.f64 (*.f64 y 27) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (cbrt.f64 y) 3) (cbrt.f64 y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (cbrt.f64 y) 3) 3) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 y) 3)) 5) (cbrt.f64 (*.f64 (cbrt.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 729 (*.f64 y y)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cbrt.f64 y) 3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 531441 (pow.f64 y 4)) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y 27) 6) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 81 (*.f64 (cbrt.f64 y) y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 y) 3)) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y 27) 1/6) 4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y 27) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/3) (log.f64 (*.f64 729 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))))) (sqrt.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 81 (*.f64 (cbrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 y) 2)) 9))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 729 (*.f64 y y))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 729 (*.f64 y y))) 1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 729 (*.f64 y y))) 1/3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1) (log.f64 (*.f64 (cbrt.f64 y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1) (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cbrt.f64 y))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cbrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 y)))) (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 y)) (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2) (cbrt.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 y 1/6) (pow.f64 y 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 y 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y y) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y 3) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 y) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 y) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/3) (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 y))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 y)))) (sqrt.f64 (log.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 y) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/6 (log.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 y) 1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 y) 1/3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (cbrt.f64 y)) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 y 27)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 y 27))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 y 27)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 y 27)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 y 27)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (*.f64 y 27)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 y 27)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 y 27)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 y 27)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 y 27))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (*.f64 y 27))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 x (*.f64 y 27))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 (cbrt.f64 y) 3) (cbrt.f64 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 y 27)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (*.f64 y 27)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 y 27))))) (sqrt.f64 (log.f64 (*.f64 x (*.f64 y 27)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 y 27)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 y 27)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 y 27)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 y 27)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 y 27))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 y 27))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 y 27))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (*.f64 y 27))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (*.f64 y 27)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (*.f64 y 27)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 y 27)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 x (*.f64 y 27))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 x) 1) (log.f64 (*.f64 y 27))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (+.f64 (log.f64 (*.f64 x 9)) (*.f64 2/3 (log.f64 y))) 1) (log.f64 (*.f64 (cbrt.f64 y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (+.f64 (log.f64 (*.f64 x 9)) (*.f64 2/3 (log.f64 y))) (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (+.f64 (log.f64 (*.f64 x 9)) (*.f64 2/3 (log.f64 y))) 1) (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1) (+.f64 (log.f64 (*.f64 x 9)) (*.f64 2/3 (log.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) (*.f64 (+.f64 (log.f64 (*.f64 x 9)) (*.f64 2/3 (log.f64 y))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1) (*.f64 (+.f64 (log.f64 (*.f64 x 9)) (*.f64 2/3 (log.f64 y))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (*.f64 y 27)) (*.f64 (log.f64 x) 1)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cbrt.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (exp.f64 (cbrt.f64 y)) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (cbrt.f64 y)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (cbrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cbrt.f64 y) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 729 (*.f64 y y)) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cbrt.f64 y) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y 27) 6) 1/18)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 y) 3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y 27) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y 27) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (cbrt.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (cbrt.f64 y) 3))) 2)) (cbrt.f64 (log.f64 (*.f64 (cbrt.f64 y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)))) (sqrt.f64 (log.f64 (*.f64 (cbrt.f64 y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (cbrt.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cbrt.f64 y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 y 27))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cbrt.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cbrt.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 729 (*.f64 y y))) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (cbrt.f64 y) 3))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 y 27) 1/6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 y 27)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 729 (*.f64 y y))) 1) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 729 (*.f64 y y))) 1/3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 9 (pow.f64 (cbrt.f64 y) 2))) 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 y) 3)) 1) 1))))))

simplify25.0ms (0.7%)

Algorithm
egg-herbie
Rules
146×associate-*l*_binary64
89×associate-*r*_binary64
64×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
015308
131308
289308
3234308
4374308
5374308
Stop Event
saturated
Counts
174 → 154
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
Outputs
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 (*.f64 3 y) (*.f64 (cbrt.f64 729) x))
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
(*.f64 (*.f64 -3 y) (*.f64 (*.f64 (cbrt.f64 -1) (cbrt.f64 729)) x))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 729) (*.f64 x (cbrt.f64 -1)))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 x (*.f64 (cbrt.f64 729) -3))))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
(*.f64 (*.f64 -3 y) (*.f64 (*.f64 (cbrt.f64 -1) (cbrt.f64 729)) x))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 729) (*.f64 x (cbrt.f64 -1)))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 x (*.f64 (cbrt.f64 729) -3))))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
(*.f64 (*.f64 -3 y) (*.f64 (*.f64 (cbrt.f64 -1) (cbrt.f64 729)) x))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 729) (*.f64 x (cbrt.f64 -1)))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 x (*.f64 (cbrt.f64 729) -3))))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 (cbrt.f64 729) x))))
(*.f64 (*.f64 -3 y) (*.f64 (*.f64 (cbrt.f64 -1) (cbrt.f64 729)) x))
(*.f64 -3 (*.f64 y (*.f64 (cbrt.f64 729) (*.f64 x (cbrt.f64 -1)))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 x (*.f64 (cbrt.f64 729) -3))))

localize12.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f64 (*.f64 27 y))
0.2b
(*.f64 x (sqrt.f64 (*.f64 27 y)))
0.3b
(*.f64 (*.f64 x (sqrt.f64 (*.f64 27 y))) (sqrt.f64 (*.f64 27 y)))
Compiler

Compiled 29 to 20 computations (31% saved)

series11.0ms (0.3%)

Counts
3 → 36
Calls

15 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 (*.f64 x (sqrt.f64 (*.f64 27 y))) (sqrt.f64 (*.f64 27 y)))
1.0ms
y
@-inf
(*.f64 (*.f64 x (sqrt.f64 (*.f64 27 y))) (sqrt.f64 (*.f64 27 y)))
1.0ms
y
@0
(*.f64 (*.f64 x (sqrt.f64 (*.f64 27 y))) (sqrt.f64 (*.f64 27 y)))
1.0ms
y
@0
(*.f64 x (sqrt.f64 (*.f64 27 y)))
1.0ms
x
@0
(*.f64 x (sqrt.f64 (*.f64 27 y)))

rewrite68.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
725×pow1_binary64
670×add-log-exp_binary64
670×log1p-expm1-u_binary64
670×expm1-log1p-u_binary64
655×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify116.0ms (3%)

Algorithm
egg-herbie
Rules
575×fabs-mul_binary64
545×fma-neg_binary64
495×fma-def_binary64
411×cube-prod_binary64
393×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
019420
143300
2109300
3252300
4684300
51079300
61495300
72023300
82875300
93802300
104592300
115552300
126765300
Stop Event
node limit
Counts
85 → 54
Calls
Call 1
Inputs
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
Outputs
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 -1 (*.f64 y (*.f64 (pow.f64 (sqrt.f64 -27) 2) x)))
(*.f64 (pow.f64 (sqrt.f64 27) 2) (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 27) x))
(*.f64 (*.f64 (sqrt.f64 y) (sqrt.f64 27)) x)
(*.f64 x (*.f64 (sqrt.f64 27) (sqrt.f64 y)))
(*.f64 (sqrt.f64 27) (*.f64 x (sqrt.f64 y)))

localize11.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 (*.f64 x 27) (sqrt.f64 y)) (sqrt.f64 y))
0.2b
(*.f64 (*.f64 x 27) (sqrt.f64 y))
Compiler

Compiled 25 to 13 computations (48% saved)

series7.0ms (0.2%)

Counts
2 → 36
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@-inf
(*.f64 (*.f64 (*.f64 x 27) (sqrt.f64 y)) (sqrt.f64 y))
1.0ms
x
@inf
(*.f64 (*.f64 x 27) (sqrt.f64 y))
1.0ms
y
@-inf
(*.f64 (*.f64 x 27) (sqrt.f64 y))
1.0ms
y
@0
(*.f64 (*.f64 x 27) (sqrt.f64 y))
1.0ms
x
@0
(*.f64 (*.f64 x 27) (sqrt.f64 y))

rewrite60.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
736×pow1_binary64
680×add-log-exp_binary64
680×log1p-expm1-u_binary64
680×expm1-log1p-u_binary64
665×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify142.0ms (3.7%)

Algorithm
egg-herbie
Rules
684×fma-def_binary64
654×fabs-mul_binary64
630×cube-prod_binary64
590×sqr-pow_binary64
450×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
016276
135276
283276
3162276
4383276
51269276
61635276
72008276
82609276
93063276
103406276
113782276
124168276
134638276
145126276
156449276
167382276
Stop Event
node limit
Counts
63 → 31
Calls
Call 1
Inputs
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
Outputs
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 (sqrt.f64 y) x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 27 (*.f64 y x))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 27 (*.f64 y x))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 27 (*.f64 y x))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))
(*.f64 -27 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y x)))
(*.f64 (*.f64 27 y) x)
(*.f64 y (*.f64 x 27))
(*.f64 27 (*.f64 y x))
(*.f64 x (*.f64 27 y))
(*.f64 y (*.f64 27 x))

localize16.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (*.f64 (*.f64 x 27) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
0.3b
(*.f64 (*.f64 x 27) (pow.f64 (cbrt.f64 y) 2))
0.5b
(pow.f64 (cbrt.f64 y) 2)
0.6b
(cbrt.f64 y)
Compiler

Compiled 34 to 20 computations (41.2% saved)

series12.0ms (0.3%)

Counts
3 → 36
Calls

15 calls:

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

rewrite61.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
862×pow1_binary64
798×add-log-exp_binary64
798×log1p-expm1-u_binary64
798×expm1-log1p-u_binary64
781×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify187.0ms (4.9%)

Algorithm
egg-herbie
Rules
995×sqr-pow_binary64
733×cube-prod_binary64
651×fabs-mul_binary64
450×unswap-sqr_binary64
379×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
014312
135312
268312
3142312
4367312
51146312
61562312
72294312
82444312
92670312
102940312
113341312
123880312
134545312
145368312
155980312
166409312
176796312
187018312
197130312
207973312
Stop Event
node limit
Counts
78 → 46
Calls
Call 1
Inputs
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 y x))
Outputs
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 (pow.f64 (*.f64 1 (pow.f64 y 2)) 1/3) x))
(*.f64 27 (*.f64 (cbrt.f64 (*.f64 y y)) x))
(*.f64 (cbrt.f64 (*.f64 y y)) (*.f64 27 x))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 (*.f64 27 y) x)
(*.f64 x (*.f64 27 y))

eval124.0ms (3.3%)

Compiler

Compiled 5309 to 3444 computations (35.1% saved)

prune102.0ms (2.7%)

Pruning

8 alts after pruning (2 fresh and 6 done)

PrunedKeptTotal
New3732375
Fresh000
Picked011
Done459
Total3778385
Error
0b
Counts
385 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (*.f64 x 27) y)
1.2b
(*.f64 (*.f64 (*.f64 x 27) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
1.2b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 27 y))) 3)
0.9b
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
1.0b
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
26.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 27 y))) 2)
0.3b
(*.f64 27 (*.f64 y x))
0.3b
(*.f64 x (*.f64 27 y))
Compiler

Compiled 74 to 56 computations (24.3% saved)

localize24.0ms (0.6%)

Local error

Found 3 expressions with local error:

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

Compiled 26 to 19 computations (26.9% saved)

series8.0ms (0.2%)

Counts
3 → 0
Calls

12 calls:

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

rewrite85.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
790×pow1_binary64
735×add-log-exp_binary64
735×log1p-expm1-u_binary64
735×expm1-log1p-u_binary64
719×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize12.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 25 to 19 computations (24% saved)

series4.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite59.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
786×pow1_binary64
731×add-log-exp_binary64
731×log1p-expm1-u_binary64
731×expm1-log1p-u_binary64
714×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify18.0ms (0.5%)

Algorithm
egg-herbie
Rules
26×associate-*l*_binary64
16×associate-*r*_binary64
13×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011396
120396
244396
376396
478396
Stop Event
saturated
Counts
62 → 29
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
Outputs
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(*.f64 y (*.f64 (*.f64 (cbrt.f64 729) x) 3))
(*.f64 y (*.f64 3 (*.f64 (cbrt.f64 729) x)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))
(*.f64 3 (*.f64 y (cbrt.f64 729)))

eval13.0ms (0.3%)

Compiler

Compiled 488 to 358 computations (26.6% saved)

prune12.0ms (0.3%)

Pruning

9 alts after pruning (3 fresh and 6 done)

PrunedKeptTotal
New52355
Fresh000
Picked011
Done257
Total54963
Error
0b
Counts
63 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
26.1b
(*.f64 (-.f64 (+.f64 1 (*.f64 y 27)) 1) x)
0.3b
(*.f64 (*.f64 x 27) y)
26.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 27 y))) 2)
0.3b
(*.f64 3 (*.f64 y (*.f64 9 x)))
0.3b
(*.f64 (*.f64 (*.f64 3 y) 9) x)
0.9b
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
1.0b
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
0.3b
(*.f64 27 (*.f64 y x))
0.3b
(*.f64 x (*.f64 27 y))
Compiler

Compiled 80 to 62 computations (22.5% saved)

regimes193.0ms (5.1%)

Accuracy

Total -52.8b remaining (-20186.7%)

Threshold costs -52.8b (-20186.7%)

Counts
15 → 1
Calls
Call 1
Inputs
(*.f64 27 (*.f64 y x))
(*.f64 x (*.f64 27 y))
(*.f64 (*.f64 x 27) y)
(*.f64 3 (*.f64 y (*.f64 9 x)))
(*.f64 (*.f64 (*.f64 3 y) 9) x)
(*.f64 (-.f64 (+.f64 1 (*.f64 y 27)) 1) x)
(*.f64 (*.f64 (*.f64 3 y) (cbrt.f64 729)) x)
(*.f64 3 (*.f64 y (*.f64 (cbrt.f64 729) x)))
(exp.f64 (log.f64 (*.f64 x (*.f64 27 y))))
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 27 y))) 3)
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 27 y))) 2)
(*.f64 (*.f64 (*.f64 x 27) (sqrt.f64 y)) (sqrt.f64 y))
(*.f64 (*.f64 x (sqrt.f64 (*.f64 27 y))) (sqrt.f64 (*.f64 27 y)))
(*.f64 (*.f64 x (cbrt.f64 (*.f64 729 (*.f64 y y)))) (*.f64 (cbrt.f64 y) 3))
(*.f64 (*.f64 (*.f64 x 27) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
Outputs
(*.f64 x (*.f64 27 y))
Calls

5 calls:

151.0ms
x
10.0ms
(*.f64 x 27)
9.0ms
y
9.0ms
(*.f64 x 27)
8.0ms
(*.f64 (*.f64 x 27) y)
Results
ErrorSegmentsBranch
0.3b1x
0.3b1y
0.3b1(*.f64 (*.f64 x 27) y)
0.3b1(*.f64 x 27)
0.3b1(*.f64 x 27)
Compiler

Compiled 146 to 102 computations (30.1% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0814
11214
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
Outputs
(*.f64 x (*.f64 27 y))
(*.f64 27 (*.f64 y x))
(*.f64 27 (*.f64 x y))
Compiler

Compiled 14 to 10 computations (28.6% saved)

soundness159.0ms (4.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
1107
2177
3197
Stop Event
saturated
Compiler

Compiled 14 to 10 computations (28.6% saved)

end53.0ms (1.4%)

Compiler

Compiled 26 to 18 computations (30.8% saved)

Profiling

Loading profile data...