Details

Time bar (total: 4.9s)

analyze66.0ms (1.4%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
25%74.9%0.1%5
25%62.4%12.6%6
43.7%43.7%12.6%7
46.8%34.3%18.8%8
57.8%23.4%18.8%9
60.1%18%22%10
66%12.1%22%11
67.3%9.2%23.5%12
Compiler

Compiled 10 to 7 computations (30% saved)

sample1.2s (24.7%)

Results
1.2s8256×body256valid
23.0ms210×body256invalid

preprocess19.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
12220
25020
37020
47120
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
(*.f64 (*.f64 (*.f64 y 3) y) x)
Outputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
(*.f64 (*.f64 x 3) (*.f64 x y))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 (*.f64 y 3) y) x)
(*.f64 x (*.f64 y (*.f64 3 y)))
(*.f64 x (*.f64 3 (*.f64 y y)))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify7.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
11310
22710
34510
44810
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
Outputs
(*.f64 (*.f64 (*.f64 x 3) x) y)
(*.f64 (*.f64 x 3) (*.f64 x y))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 x (*.f64 x (*.f64 3 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
8.5b
(*.f64 (*.f64 (*.f64 x 3) x) y)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 12 computations (40% saved)

series9.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite57.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify187.0ms (3.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
010408
122408
245408
387408
4237408
5817408
61059408
71473408
81573408
91706408
101878408
112123408
122436408
132806408
143263408
153854408
164564408
175424408
185846408
196160408
206464408
216540408
226574408
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 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 12 computations (40% saved)

series3.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite58.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify184.0ms (3.8%)

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
09324
119324
241324
391324
4255324
5825324
61049324
71463324
81563324
91696324
101868324
112109324
122426324
132798324
143253324
153840324
164550324
175410324
185836324
196154324
206462324
216542324
226578324
Stop Event
node limit
Counts
62 → 30
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))

eval14.0ms (0.3%)

Compiler

Compiled 580 to 394 computations (32.1% saved)

prune16.0ms (0.3%)

Pruning

9 alts after pruning (7 fresh and 2 done)

PrunedKeptTotal
New53760
Fresh000
Picked011
Done011
Total53962
Error
0.0b
Counts
62 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
27.5b
(*.f64 x (pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) 2))
8.5b
(*.f64 (*.f64 (*.f64 x 3) x) y)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
0.2b
(*.f64 x (*.f64 y (*.f64 3 x)))
8.5b
(*.f64 (*.f64 3 (pow.f64 x 2)) y)
0.2b
(*.f64 x (*.f64 3 (*.f64 y x)))
0.9b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3))
35.3b
(pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 2)
8.5b
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Compiler

Compiled 158 to 116 computations (26.6% saved)

localize9.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (*.f64 3 (*.f64 y x)))
0.2b
(*.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
@inf
(*.f64 x (*.f64 3 (*.f64 y x)))
0.0ms
y
@0
(*.f64 3 (*.f64 y x))
0.0ms
y
@inf
(*.f64 3 (*.f64 y x))
0.0ms
y
@-inf
(*.f64 3 (*.f64 y x))
0.0ms
x
@-inf
(*.f64 3 (*.f64 y x))

rewrite57.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify170.0ms (3.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
379240
4221240
5742240
61007240
71421240
81521240
91656240
101828240
112073240
122386240
132758240
143212240
153801240
164509240
175369240
185793240
196113240
206419240
216499240
226533240
Stop Event
node limit
Counts
48 → 26
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))

localize9.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 12 computations (40% saved)

series3.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite58.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify225.0ms (4.6%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
010408
122408
245408
387408
4237408
5817408
61059408
71473408
81573408
91706408
101878408
112123408
122436408
132806408
143263408
153854408
164564408
175424408
185846408
196160408
206464408
216540408
226574408
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 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 x (*.f64 3 y))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 y (*.f64 x 3)) x)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 y (*.f64 x (*.f64 3 x)))

localize14.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 14 computations (33.3% saved)

series4.0ms (0.1%)

Counts
2 → 0
Calls

12 calls:

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

rewrite61.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify7.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize63.0ms (1.3%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 15 computations (28.6% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

9 calls:

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

rewrite101.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
681×pow1_binary64
628×add-log-exp_binary64
627×log1p-expm1-u_binary64
627×expm1-log1p-u_binary64
614×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify203.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
08240
117240
237240
379240
4221240
5742240
61007240
71421240
81521240
91656240
101828240
112073240
122386240
132758240
143212240
153801240
164509240
175369240
185793240
196113240
206419240
216499240
226533240
Stop Event
node limit
Counts
48 → 26
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))

localize13.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 27 to 19 computations (29.6% saved)

series14.0ms (0.3%)

Counts
3 → 24
Calls

15 calls:

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

rewrite74.0ms (1.5%)

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 x (sqrt.f64 (*.f64 3 y))) 2)
(*.f64 x (sqrt.f64 (*.f64 3 y)))
(sqrt.f64 (*.f64 3 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 3 y) (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (sqrt.f64 (*.f64 3 y)) (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 y) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 y)) (*.f64 x (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) (*.f64 x (sqrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (*.f64 3 y) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) (*.f64 3 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 4)) (cbrt.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 3 y) (*.f64 x x))) (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (*.f64 3 y) (*.f64 x x))) (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))) (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))) (*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))) (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) (sqrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))))) (sqrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) x) (sqrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) (sqrt.f64 (*.f64 3 y))) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) (cbrt.f64 (*.f64 (*.f64 3 y) (*.f64 x x)))) (cbrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 x x)) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 3 y) (*.f64 x x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sqrt.f64 (*.f64 3 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 3 y) (*.f64 x x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 3 y) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 y) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 y) 3/2) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sqrt.f64 (*.f64 3 y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 3 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 3 y)) (cbrt.f64 (sqrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 3 y))) (cbrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 3 y) 1/4) (pow.f64 (*.f64 3 y) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 3) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (sqrt.f64 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 9 (*.f64 y y)))) (sqrt.f64 (cbrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 9 (*.f64 y y))) 1/2) (pow.f64 (cbrt.f64 (*.f64 3 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 y) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 y) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 3 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 y) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 y) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 3 y))))))))

simplify193.0ms (4%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
013312
129252
266252
3182252
4820252
51251252
62209252
72314252
82470252
92649252
102859252
113136252
123493252
133924252
144495252
155236252
166151252
176675252
187137252
197561252
207813252
217859252
Stop Event
node limit
Counts
83 → 63
Calls
Call 1
Inputs
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
Outputs
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 y (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 y 3))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))
(*.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (*.f64 x (sqrt.f64 y)))
(*.f64 x (*.f64 (sqrt.f64 3) (sqrt.f64 y)))

eval41.0ms (0.8%)

Compiler

Compiled 1762 to 1152 computations (34.6% saved)

prune29.0ms (0.6%)

Pruning

10 alts after pruning (4 fresh and 6 done)

PrunedKeptTotal
New1654169
Fresh202
Picked011
Done156
Total16810178
Error
0b
Counts
178 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
8.5b
(*.f64 (*.f64 (*.f64 x 3) x) y)
0.2b
(*.f64 (*.f64 y x) (*.f64 3 x))
0.9b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 y (*.f64 3 x))) 3))
8.5b
(*.f64 (*.f64 x x) (*.f64 y 3))
8.5b
(*.f64 3 (*.f64 y (pow.f64 x 2)))
8.5b
(*.f64 (*.f64 3 (pow.f64 x 2)) y)
0.2b
(*.f64 x (*.f64 3 (*.f64 y x)))
20.4b
(*.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 9)) y)
35.3b
(pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 2)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
Compiler

Compiled 95 to 69 computations (27.4% saved)

localize20.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 y (*.f64 3 x))) 3))
0.2b
(*.f64 y (*.f64 3 x))
0.5b
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 3 x))) 3)
10.5b
(cbrt.f64 (*.f64 y (*.f64 3 x)))
Compiler

Compiled 37 to 25 computations (32.4% saved)

series32.0ms (0.7%)

Counts
3 → 24
Calls

18 calls:

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

rewrite80.0ms (1.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify172.0ms (3.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
379240
4221240
5742240
61007240
71421240
81521240
91656240
101828240
112073240
122386240
132758240
143212240
153801240
164509240
175369240
185793240
196113240
206419240
216499240
226533240
Stop Event
node limit
Counts
100 → 78
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))

localize13.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (pow.f64 x 4) 9)
8.0b
(*.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 9)) y)
15.7b
(sqrt.f64 (*.f64 (pow.f64 x 4) 9))
Compiler

Compiled 28 to 21 computations (25% saved)

series4.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite66.0ms (1.4%)

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

simplify211.0ms (4.3%)

Algorithm
egg-herbie
Rules
1076×sqr-pow_binary64
664×pow-sqr_binary64
620×associate-*l*_binary64
496×cube-prod_binary64
415×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013408
126408
257408
3136408
4439408
51704408
62504408
72628408
82817408
93028408
103307408
113672408
124129408
134662408
145288408
156041408
166349408
176575408
186771408
196825408
206847408
217681408
Stop Event
node limit
Counts
97 → 53
Calls
Call 1
Inputs
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
Outputs
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 (*.f64 x x) y))
(*.f64 3 (*.f64 (*.f64 y x) x))
(*.f64 3 (*.f64 x (*.f64 x y)))
(*.f64 x (*.f64 y (*.f64 3 x)))
(*.f64 x (*.f64 3 (*.f64 x y)))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))
(*.f64 9 (pow.f64 x 4))

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 9 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite51.0ms (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 x x) (*.f64 y 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 (*.f64 x y) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 (*.f64 x y) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (*.f64 x y) 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 (*.f64 x y) 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (*.f64 y 3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 9 (*.f64 y y)) (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 3) y) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 (*.f64 x y) 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 (*.f64 x y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 (*.f64 x y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 (*.f64 x y) 3))))))))

simplify172.0ms (3.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
379240
4221240
5742240
61007240
71421240
81521240
91656240
101828240
112073240
122386240
132758240
143212240
153801240
164509240
175369240
185793240
196113240
206419240
216499240
226533240
Stop Event
node limit
Counts
35 → 13
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 y x) (*.f64 3 x))
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 x))
0.0ms
y
@inf
(*.f64 (*.f64 y x) (*.f64 3 x))
0.0ms
x
@inf
(*.f64 (*.f64 y x) (*.f64 3 x))
0.0ms
y
@-inf
(*.f64 (*.f64 y x) (*.f64 3 x))
0.0ms
x
@-inf
(*.f64 (*.f64 y x) (*.f64 3 x))

rewrite50.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
678×pow1_binary64
624×add-log-exp_binary64
624×log1p-expm1-u_binary64
624×expm1-log1p-u_binary64
611×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify173.0ms (3.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
379240
4221240
5742240
61007240
71421240
81521240
91656240
101828240
112073240
122386240
132758240
143212240
153801240
164509240
175369240
185793240
196113240
206419240
216499240
226533240
Stop Event
node limit
Counts
37 → 15
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 (*.f64 y x) (*.f64 3 x))

eval46.0ms (0.9%)

Compiler

Compiled 2009 to 1391 computations (30.8% saved)

prune27.0ms (0.6%)

Pruning

10 alts after pruning (1 fresh and 9 done)

PrunedKeptTotal
New1731174
Fresh000
Picked011
Done189
Total17410184
Error
0b
Counts
184 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
8.5b
(*.f64 (*.f64 (*.f64 x 3) x) y)
0.2b
(*.f64 (*.f64 y x) (*.f64 3 x))
0.9b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 y (*.f64 3 x))) 3))
8.5b
(*.f64 (*.f64 x x) (*.f64 y 3))
8.5b
(*.f64 3 (*.f64 y (pow.f64 x 2)))
8.5b
(*.f64 (*.f64 (*.f64 x x) 3) y)
20.4b
(*.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 9)) y)
35.3b
(pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 2)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
0.2b
(*.f64 x (*.f64 3 (*.f64 y x)))
Compiler

Compiled 95 to 68 computations (28.4% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 9 computations (55% saved)

series2.0ms (0%)

Counts
2 → 36
Calls

9 calls:

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

rewrite60.0ms (1.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify184.0ms (3.8%)

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
09324
119324
241324
391324
4255324
5825324
61049324
71463324
81563324
91696324
101868324
112109324
122426324
132798324
143253324
153840324
164550324
175410324
185836324
196154324
206462324
216542324
226578324
Stop Event
node limit
Counts
58 → 26
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (pow.f64 x 2))
Outputs
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (*.f64 3 (*.f64 y x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))
(*.f64 3 (pow.f64 x 2))
(*.f64 3 (*.f64 x x))
(*.f64 x (*.f64 3 x))

eval6.0ms (0.1%)

Compiler

Compiled 238 to 156 computations (34.5% saved)

prune8.0ms (0.2%)

Pruning

10 alts after pruning (0 fresh and 10 done)

PrunedKeptTotal
New26026
Fresh000
Picked011
Done099
Total261036
Error
0b
Counts
36 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
8.5b
(*.f64 (*.f64 (*.f64 x 3) x) y)
0.2b
(*.f64 (*.f64 y x) (*.f64 3 x))
0.9b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 y (*.f64 3 x))) 3))
8.5b
(*.f64 (*.f64 x x) (*.f64 y 3))
8.5b
(*.f64 3 (*.f64 y (pow.f64 x 2)))
8.5b
(*.f64 (*.f64 (*.f64 x x) 3) y)
20.4b
(*.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 9)) y)
35.3b
(pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 2)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
0.2b
(*.f64 x (*.f64 3 (*.f64 y x)))
Compiler

Compiled 95 to 68 computations (28.4% saved)

regimes35.0ms (0.7%)

Accuracy

Total -53.5b remaining (-22586.8%)

Threshold costs -53.5b (-22586.8%)

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

4 calls:

9.0ms
(*.f64 (*.f64 (*.f64 x 3) x) y)
9.0ms
y
8.0ms
x
5.0ms
(*.f64 (*.f64 x 3) x)
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
0.2b1(*.f64 (*.f64 (*.f64 x 3) x) y)
0.2b1(*.f64 (*.f64 x 3) x)
Compiler

Compiled 133 to 86 computations (35.3% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 18 to 12 computations (33.3% saved)

soundness217.0ms (4.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
11310
22710
34510
44810
08240
117240
237240
379240
4221240
5742240
61007240
71421240
81521240
91656240
101828240
112073240
122386240
132758240
143212240
153801240
164509240
175369240
185793240
196113240
206419240
216499240
226533240
Stop Event
node limit
saturated
Compiler

Compiled 90 to 61 computations (32.2% saved)

end18.0ms (0.4%)

Compiler

Compiled 16 to 10 computations (37.5% saved)

Profiling

Loading profile data...