Details

Time bar (total: 4.6s)

analyze55.0ms (1.2%)

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
50%43.7%43.7%0.1%12.5%0%0%7
60.7%53.1%34.3%0.1%12.5%0%0%8
71.2%57.8%23.4%0.1%18.7%0%0%9
77.9%63.2%18%0.1%18.7%0%0%10
84.5%66%12.1%0.1%21.9%0%0%11
88.3%68.9%9.2%0.1%21.9%0%0%12
Compiler

Compiled 10 to 7 computations (30% saved)

sample768.0ms (16.6%)

Results
728.0ms8256×body256valid
29.0ms333×body256infinite
Bogosity

preprocess18.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 11 to 8 computations (27.3% saved)

simplify7.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

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

eval1.0ms (0%)

Compiler

Compiled 16 to 10 computations (37.5% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 18 to 12 computations (33.3% saved)

localize7.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 9 computations (55% saved)

series7.0ms (0.2%)

Counts
2 → 36
Calls

9 calls:

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

rewrite59.0ms (1.3%)

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

Useful iterations: 0 (0.0ms)

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

simplify181.0ms (3.9%)

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

Useful iterations: 0 (0.0ms)

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

localize9.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 12 computations (40% saved)

series6.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite55.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify188.0ms (4.1%)

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

Useful iterations: 0 (0.0ms)

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

eval13.0ms (0.3%)

Compiler

Compiled 526 to 335 computations (36.3% saved)

prune13.0ms (0.3%)

Pruning

8 alts after pruning (6 fresh and 2 done)

PrunedKeptTotal
New50656
Fresh000
Picked011
Done011
Total50858
Error
0.0b
Counts
58 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
34.0b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
26.5b
(*.f64 x (sqrt.f64 (*.f64 9 (pow.f64 y 4))))
14.2b
(*.f64 x (*.f64 3 (*.f64 y y)))
0.9b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3) y)
0.2b
(*.f64 (*.f64 y x) (*.f64 3 y))
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
Compiler

Compiled 140 to 102 computations (27.1% saved)

localize7.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 9 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite51.0ms (1.1%)

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

Useful iterations: 0 (0.0ms)

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

simplify173.0ms (3.7%)

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

Useful iterations: 0 (0.0ms)

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

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 9 computations (55% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

12 calls:

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

rewrite54.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify170.0ms (3.7%)

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

Useful iterations: 0 (0.0ms)

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

localize13.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 30 to 20 computations (33.3% saved)

series3.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite59.0ms (1.3%)

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

Useful iterations: 0 (0.0ms)

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

simplify187.0ms (4%)

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

Useful iterations: 0 (0.0ms)

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

localize13.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 9 (pow.f64 y 4))
13.7b
(*.f64 x (sqrt.f64 (*.f64 9 (pow.f64 y 4))))
16.3b
(sqrt.f64 (*.f64 9 (pow.f64 y 4)))
Compiler

Compiled 28 to 21 computations (25% saved)

series4.0ms (0.1%)

Counts
3 → 36
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@0
(*.f64 9 (pow.f64 y 4))
1.0ms
y
@inf
(*.f64 9 (pow.f64 y 4))
0.0ms
y
@0
(sqrt.f64 (*.f64 9 (pow.f64 y 4)))
0.0ms
y
@inf
(sqrt.f64 (*.f64 9 (pow.f64 y 4)))
0.0ms
y
@-inf
(sqrt.f64 (*.f64 9 (pow.f64 y 4)))

rewrite67.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
766×pow1_binary64
712×add-log-exp_binary64
712×log1p-expm1-u_binary64
712×expm1-log1p-u_binary64
695×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify278.0ms (6%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
09324
118324
239324
391324
4247324
5837324
61074324
71488324
81588324
91723324
101895324
112136324
122451324
132821324
143279324
153868324
164578324
175440324
185868324
196180324
206488324
216570324
226604324
Stop Event
node limit
Counts
85 → 52
Calls
Call 1
Inputs
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (pow.f64 y 2))
(*.f64 3 (*.f64 y y))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 3 (*.f64 y (*.f64 y x)))
(*.f64 (*.f64 3 (*.f64 y y)) x)
(*.f64 y (*.f64 3 (*.f64 y x)))

localize20.0ms (0.4%)

Local error

Found 3 expressions with local error:

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

Compiled 27 to 19 computations (29.6% saved)

series22.0ms (0.5%)

Counts
3 → 24
Calls

15 calls:

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

rewrite145.0ms (3.1%)

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

Useful iterations: 1 (0.0ms)

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

simplify309.0ms (6.7%)

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

Useful iterations: 1 (0.0ms)

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

eval47.0ms (1%)

Compiler

Compiled 1995 to 1382 computations (30.7% saved)

prune29.0ms (0.6%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New1852187
Fresh101
Picked011
Done066
Total1869195
Error
0.0b
Counts
195 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
34.0b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
24.0b
(pow.f64 (sqrt.f64 (*.f64 y (*.f64 y (*.f64 x 3)))) 2)
26.5b
(*.f64 x (sqrt.f64 (*.f64 9 (pow.f64 y 4))))
14.2b
(*.f64 x (*.f64 3 (*.f64 y y)))
0.2b
(*.f64 (*.f64 y x) (*.f64 3 y))
14.2b
(*.f64 (*.f64 y y) (*.f64 x 3))
Compiler

Compiled 88 to 63 computations (28.4% saved)

localize8.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 9 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite52.0ms (1.1%)

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

Useful iterations: 0 (0.0ms)

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

simplify173.0ms (3.7%)

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

Useful iterations: 0 (0.0ms)

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

localize17.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

Compiled 39 to 25 computations (35.9% saved)

series7.0ms (0.2%)

Counts
4 → 72
Calls

24 calls:

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

rewrite71.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
806×pow1_binary64
746×add-log-exp_binary64
745×log1p-expm1-u_binary64
745×expm1-log1p-u_binary64
729×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify152.0ms (3.3%)

Algorithm
egg-herbie
Rules
570×unswap-sqr_binary64
538×fma-def_binary64
386×fma-neg_binary64
370×distribute-rgt-neg-in_binary64
369×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
019668
147668
2120668
3305668
41236668
52007668
63301668
74188668
85487668
96276668
107716668
Stop Event
node limit
Counts
162 → 90
Calls
Call 1
Inputs
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
Outputs
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x))
(*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x)))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(neg.f64 (*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x))))
(*.f64 (*.f64 y (sqrt.f64 3)) (neg.f64 (sqrt.f64 x)))
(*.f64 y (*.f64 (sqrt.f64 3) (neg.f64 (sqrt.f64 x))))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(neg.f64 (*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x))))
(*.f64 (*.f64 y (sqrt.f64 3)) (neg.f64 (sqrt.f64 x)))
(*.f64 y (*.f64 (sqrt.f64 3) (neg.f64 (sqrt.f64 x))))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(neg.f64 (*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x))))
(*.f64 (*.f64 y (sqrt.f64 3)) (neg.f64 (sqrt.f64 x)))
(*.f64 y (*.f64 (sqrt.f64 3) (neg.f64 (sqrt.f64 x))))
(*.f64 -1 (*.f64 (*.f64 y (sqrt.f64 3)) (sqrt.f64 x)))
(neg.f64 (*.f64 y (*.f64 (sqrt.f64 3) (sqrt.f64 x))))
(*.f64 (*.f64 y (sqrt.f64 3)) (neg.f64 (sqrt.f64 x)))
(*.f64 y (*.f64 (sqrt.f64 3) (neg.f64 (sqrt.f64 x))))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 (pow.f64 y 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))
(*.f64 (pow.f64 y 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) x))
(*.f64 3 (*.f64 x (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 3 x)))
(*.f64 y (*.f64 x (*.f64 y 3)))

eval29.0ms (0.6%)

Compiler

Compiled 1254 to 838 computations (33.2% saved)

prune20.0ms (0.4%)

Pruning

10 alts after pruning (1 fresh and 9 done)

PrunedKeptTotal
New1021103
Fresh000
Picked011
Done088
Total10210112
Error
0.0b
Counts
112 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
34.0b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
0.3b
(*.f64 (*.f64 y (*.f64 y x)) 3)
14.2b
(*.f64 (*.f64 y y) (*.f64 x 3))
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
24.0b
(pow.f64 (sqrt.f64 (*.f64 y (*.f64 y (*.f64 x 3)))) 2)
26.5b
(*.f64 x (sqrt.f64 (*.f64 9 (pow.f64 y 4))))
14.2b
(*.f64 x (*.f64 3 (*.f64 y y)))
0.2b
(*.f64 (*.f64 y x) (*.f64 3 y))
Compiler

Compiled 97 to 69 computations (28.9% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series4.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite57.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
660×pow1_binary64
607×add-log-exp_binary64
607×log1p-expm1-u_binary64
607×expm1-log1p-u_binary64
595×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify195.0ms (4.2%)

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

Useful iterations: 0 (0.0ms)

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

eval54.0ms (1.2%)

Compiler

Compiled 265 to 158 computations (40.4% saved)

prune15.0ms (0.3%)

Pruning

10 alts after pruning (0 fresh and 10 done)

PrunedKeptTotal
New28028
Fresh000
Picked011
Done099
Total281038
Error
0.0b
Counts
38 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
0.3b
(*.f64 (*.f64 (*.f64 x 3) y) y)
34.0b
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
0.3b
(*.f64 (*.f64 y (*.f64 y x)) 3)
14.2b
(*.f64 (*.f64 y y) (*.f64 x 3))
0.3b
(*.f64 (*.f64 3 (*.f64 y x)) y)
24.0b
(pow.f64 (sqrt.f64 (*.f64 y (*.f64 y (*.f64 x 3)))) 2)
26.5b
(*.f64 x (sqrt.f64 (*.f64 9 (pow.f64 y 4))))
14.2b
(*.f64 x (*.f64 3 (*.f64 y y)))
0.2b
(*.f64 (*.f64 y x) (*.f64 3 y))
Compiler

Compiled 97 to 69 computations (28.9% saved)

regimes295.0ms (6.4%)

Counts
11 → 1
Calls
Call 1
Inputs
(*.f64 (*.f64 y (*.f64 y x)) 3)
(*.f64 (*.f64 y y) (*.f64 x 3))
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 (*.f64 3 (*.f64 y x)) y)
(*.f64 x (*.f64 3 (*.f64 y y)))
(*.f64 (*.f64 (*.f64 x 3) y) y)
(*.f64 (pow.f64 (*.f64 x (*.f64 3 y)) 1) y)
(pow.f64 (*.f64 (sqrt.f64 (*.f64 x 3)) y) 2)
(*.f64 x (sqrt.f64 (*.f64 9 (pow.f64 y 4))))
(pow.f64 (sqrt.f64 (*.f64 y (*.f64 y (*.f64 x 3)))) 2)
(*.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3) y)
Outputs
(*.f64 (*.f64 y x) (*.f64 3 y))
Calls

5 calls:

211.0ms
y
16.0ms
(*.f64 x 3)
14.0ms
(*.f64 x 3)
14.0ms
x
12.0ms
(*.f64 (*.f64 (*.f64 x 3) y) y)
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
0.2b1(*.f64 (*.f64 (*.f64 x 3) y) y)
0.2b1(*.f64 x 3)
0.2b1(*.f64 x 3)
Compiler

Compiled 114 to 73 computations (36% saved)

regimes23.0ms (0.5%)

Accuracy

Total -14.1b remaining (-5071.3%)

Threshold costs -14.1b (-5071.3%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 (*.f64 y (*.f64 y x)) 3)
(*.f64 (*.f64 y y) (*.f64 x 3))
Outputs
(*.f64 (*.f64 y (*.f64 y x)) 3)
Calls

3 calls:

7.0ms
(*.f64 x 3)
7.0ms
y
7.0ms
x
Results
ErrorSegmentsBranch
0.3b1x
0.3b1y
0.3b1(*.f64 x 3)
Compiler

Compiled 27 to 18 computations (33.3% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
11420
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 (*.f64 y (*.f64 y x)) 3)
Outputs
(*.f64 (*.f64 y x) (*.f64 3 y))
(*.f64 (*.f64 y x) (*.f64 y 3))
(*.f64 (*.f64 y (*.f64 y x)) 3)
(*.f64 3 (*.f64 y (*.f64 y x)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

soundness357.0ms (7.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
010408
123408
245408
384408
4245408
5820408
61059408
71473408
81573408
91708408
101880408
112125408
122440408
132810408
143269408
153852408
164558408
175420408
185850408
196168408
206472408
216552408
226588408
Stop Event
node limit
Compiler

Compiled 45 to 31 computations (31.1% saved)

end35.0ms (0.8%)

Compiler

Compiled 16 to 9 computations (43.8% saved)

Profiling

Loading profile data...