Details

Time bar (total: 2.1s)

analyze57.0ms (2.6%)

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.0s (48.4%)

Results
978.0ms8252×body64valid
50.0ms166×body64invalid
1.0msbody128valid

preprocess18.0ms (0.9%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
12220
25020
37320
47420
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 3 (*.f64 x (*.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 y (*.f64 (*.f64 3 y) x))
(*.f64 (*.f64 x 3) (*.f64 y y))
(*.f64 x (*.f64 3 (*.f64 y y)))
Compiler

Compiled 9 to 6 computations (33.3% saved)

simplify9.0ms (0.4%)

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 (*.f64 y 3) x))
(*.f64 x (*.f64 x (*.f64 3 y)))

prune3.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.1b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
9.4b
(*.f64 (*.f64 (*.f64 x 3) x) y)
Compiler

Compiled 52 to 34 computations (34.6% saved)

localize4.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))

series10.0ms (0.5%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
2.0ms
y
@inf
(*.f64 x (*.f64 3 y))
1.0ms
y
@0
(*.f64 x (*.f64 x (*.f64 3 y)))
1.0ms
y
@0
(*.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)))

rewrite47.0ms (2.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
2167217
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)))))))))

simplify155.0ms (7.2%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1104×sqr-pow_binary64
639×fabs-mul_binary64
628×pow-sqr_binary64
611×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010408
122408
245408
387408
4235408
5779408
61012408
71426408
81526408
91661408
101830408
112075408
122390408
132762408
143219408
153802408
164508408
175366408
185790408
196106408
206414408
216494408
226528408
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 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 y (*.f64 x (*.f64 3 x)))

prune34.0ms (1.6%)

Pruning

7 alts after pruning (7 fresh and 0 done)

PrunedKeptTotal
New24630
Fresh011
Picked101
Done000
Total25732
Error
0.0b
Counts
32 → 7
Alt Table
StatusErrorProgram
27.2b
(*.f64 x (pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) 2))
0.9b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3))
9.5b
(*.f64 3 (*.f64 y (pow.f64 x 2)))
0.3b
(*.f64 x (*.f64 3 (*.f64 y x)))
9.4b
(*.f64 (*.f64 (*.f64 x 3) x) y)
31.7b
(pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 2)
0.9b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 x (*.f64 3 y)))) 3)
Compiler

Compiled 436 to 310 computations (28.9% saved)

localize4.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))

series3.0ms (0.1%)

Counts
2 → 24
Calls

12 calls:

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

rewrite47.0ms (2.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))))))))

simplify140.0ms (6.5%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1104×sqr-pow_binary64
642×fabs-mul_binary64
628×pow-sqr_binary64
611×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08240
117240
237240
379240
4208240
5713240
6971240
71385240
81485240
91618240
101790240
112033240
122348240
132718240
143174240
153757240
164465240
175325240
185753240
196069240
206379240
216457240
226493240
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 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))

prune32.0ms (1.5%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New23326
Fresh336
Picked011
Done000
Total26733
Error
0.0b
Counts
33 → 7
Alt Table
StatusErrorProgram
0.2b
(pow.f64 (*.f64 3 (*.f64 (*.f64 y x) x)) 1)
0.9b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3))
24.8b
(*.f64 x (sqrt.f64 (*.f64 (pow.f64 (*.f64 y x) 2) 9)))
0.3b
(*.f64 x (*.f64 3 (*.f64 y x)))
9.4b
(*.f64 (*.f64 (*.f64 x 3) x) y)
9.5b
(*.f64 (*.f64 x x) (*.f64 3 y))
0.9b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 x (*.f64 3 y)))) 3)
Compiler

Compiled 393 to 245 computations (37.7% saved)

localize7.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

series3.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite48.0ms (2.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify149.0ms (6.9%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1104×sqr-pow_binary64
642×fabs-mul_binary64
628×pow-sqr_binary64
611×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08408
117408
237408
379408
4208408
5713408
6971408
71385408
81485408
91618408
101790408
112033408
122348408
132718408
143174408
153757408
164465408
175325408
185753408
196069408
206379408
216457408
226493408
Stop Event
node limit
Counts
72 → 28
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 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.f64 y (pow.f64 x 2))
(*.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 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 3 (*.f64 y (*.f64 x x)))
(*.f64 y (*.f64 (*.f64 x x) 3))
(*.f64 y (*.f64 3 (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))
(*.f64 y (pow.f64 x 2))
(*.f64 y (*.f64 x x))

prune38.0ms (1.8%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New28028
Fresh055
Picked011
Done011
Total28735
Error
0.0b
Counts
35 → 7
Alt Table
StatusErrorProgram
0.2b
(pow.f64 (*.f64 3 (*.f64 (*.f64 y x) x)) 1)
0.9b
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3))
24.8b
(*.f64 x (sqrt.f64 (*.f64 (pow.f64 (*.f64 y x) 2) 9)))
0.3b
(*.f64 x (*.f64 3 (*.f64 y x)))
9.4b
(*.f64 (*.f64 (*.f64 x 3) x) y)
9.5b
(*.f64 (*.f64 x x) (*.f64 3 y))
0.9b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 x (*.f64 3 y)))) 3)
Compiler

Compiled 449 to 289 computations (35.6% saved)

localize7.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (*.f64 x (*.f64 3 y)))
0.2b
(*.f64 x (*.f64 3 y))
0.4b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 x (*.f64 3 y)))) 3)
21.4b
(cbrt.f64 (*.f64 x (*.f64 x (*.f64 3 y))))

series15.0ms (0.7%)

Counts
2 → 0
Calls

12 calls:

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

rewrite55.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
768×pow1_binary64
716×add-log-exp_binary64
716×log1p-expm1-u_binary64
716×expm1-log1p-u_binary64
699×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify9.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune164.0ms (7.6%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New92395
Fresh224
Picked011
Done112
Total957102
Error
0b
Counts
102 → 7
Alt Table
StatusErrorProgram
9.5b
(*.f64 (*.f64 (*.f64 x x) 3) y)
0.3b
(*.f64 x (*.f64 x (*.f64 3 y)))
0.2b
(pow.f64 (*.f64 3 (*.f64 (*.f64 y x) x)) 1)
0.2b
(*.f64 (*.f64 x 3) (*.f64 y x))
9.4b
(*.f64 (*.f64 (*.f64 x 3) x) y)
9.5b
(*.f64 (*.f64 x x) (*.f64 3 y))
0.9b
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 x (*.f64 3 y)))) 3)
Compiler

Compiled 1366 to 976 computations (28.6% saved)

regimes33.0ms (1.6%)

Accuracy

Total -51.9b remaining (-23240%)

Threshold costs -51.9b (-23240%)

Counts
14 → 1
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 x x) 3) y)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 x 3) (*.f64 y x))
(pow.f64 (*.f64 3 (*.f64 (*.f64 y x) x)) 1)
(*.f64 x (sqrt.f64 (*.f64 (pow.f64 (*.f64 y x) 2) 9)))
(*.f64 (*.f64 x x) (*.f64 3 y))
(*.f64 x (pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 y))) 2))
(*.f64 x (pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 y))) 3))
(*.f64 3 (*.f64 y (pow.f64 x 2)))
(*.f64 x (*.f64 3 (*.f64 y x)))
(pow.f64 (*.f64 x (sqrt.f64 (*.f64 3 y))) 2)
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 x (*.f64 3 y)))) 3)
(*.f64 x (*.f64 x (*.f64 3 y)))
(*.f64 (*.f64 (*.f64 x 3) x) y)
Outputs
(pow.f64 (*.f64 3 (*.f64 (*.f64 y x) x)) 1)
Results
7.0ms0.2bx
10.0ms0.2by
5.0ms0.2b(*.f64 (*.f64 (*.f64 x 3) x) y)
7.0ms0.2b(*.f64 (*.f64 x 3) x)
Compiler

Compiled 137 to 86 computations (37.2% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
1-exp_binary64
unpow1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0910
11410
Stop Event
saturated
Calls
Call 1
Inputs
(pow.f64 (*.f64 3 (*.f64 (*.f64 y x) x)) 1)
Outputs
(pow.f64 (*.f64 3 (*.f64 (*.f64 y x) x)) 1)
(*.f64 3 (*.f64 x (*.f64 y x)))

end15.0ms (0.7%)

Stop Event
fuel
Compiler

Compiled 18 to 12 computations (33.3% saved)

Profiling

Loading profile data...