Details

Time bar (total: 2.1s)

analyze91.0ms (4.3%)

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
25%74.9%0.1%4
37.5%62.4%0.1%5
56.2%43.7%0.1%6
65.6%34.3%0.1%7
76.5%23.4%0.1%8
82%18%0.1%9
87.8%12.1%0.1%10
90.7%9.2%0.1%11
93.8%6.1%0.1%12
95.3%4.6%0.1%13
96.8%3.1%0.1%14
Compiler

Compiled 9 to 7 computations (22.2% saved)

sample816.0ms (39%)

Results
805.0ms8256×body128valid

preprocess36.0ms (1.7%)

Algorithm
egg-herbie
Rules
279×rule-/*abc-*b/ac_binary64
251×rule-/ab-*+aa/1/2b_binary64
223×rule-/-abc--/ac/bc_binary64
218×rule-/a-bc-/nega-cb_binary64
207×rule-*a-bc-*nega-cb_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01018
16518
225118
3134018
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(cbrt.f64 (/.f64 g (*.f64 2 a)))
(cbrt.f64 (/.f64 a (*.f64 2 g)))
Outputs
(cbrt.f64 (/.f64 g (*.f64 2 a)))
(cbrt.f64 (/.f64 g (+.f64 a a)))
(cbrt.f64 (*.f64 g (/.f64 1/2 a)))
(cbrt.f64 (/.f64 a (*.f64 2 g)))
(cbrt.f64 (/.f64 (/.f64 a 2) g))
(cbrt.f64 (/.f64 a (*.f64 g 2)))
(cbrt.f64 (*.f64 a (/.f64 1/2 g)))
Compiler

Compiled 8 to 6 computations (25% saved)

simplify43.0ms (2%)

Algorithm
egg-herbie
Rules
522×rule-a-/a1_binary64
447×rule-a--a0_binary64
447×rule-a-+a0_binary64
331×fma-neg_binary64
163×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079
1449
21589
37439
440219
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(cbrt.f64 (/.f64 g (*.f64 2 a)))
Outputs
(cbrt.f64 (/.f64 g (*.f64 2 a)))
(cbrt.f64 (*.f64 1/2 (/.f64 g a)))

prune2.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
16.1b
Counts
3 → 1
Alt Table
StatusErrorProgram
16.1b
(cbrt.f64 (/.f64 g (*.f64 2 a)))
Compiler

Compiled 30 to 22 computations (26.7% saved)

localize4.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
15.8b
(cbrt.f64 (/.f64 g (*.f64 2 a)))

series6.0ms (0.3%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
1.0ms
g
@0
(cbrt.f64 (/.f64 g (*.f64 2 a)))
1.0ms
g
@-inf
(cbrt.f64 (/.f64 g (*.f64 2 a)))
1.0ms
a
@-inf
(cbrt.f64 (/.f64 g (*.f64 2 a)))
1.0ms
a
@inf
(cbrt.f64 (/.f64 g (*.f64 2 a)))
1.0ms
g
@inf
(cbrt.f64 (/.f64 g (*.f64 2 a)))

rewrite41.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
812×rules-30_binary64
812×rules-31_binary64
812×rules-32_binary64
812×rules-33_binary64
79×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079
11809
223619
Stop Event
node limit
Counts
1 → 41
Calls
Call 1
Inputs
(cbrt.f64 (/.f64 g (*.f64 2 a)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (cbrt.f64 (/.f64 g (*.f64 2 a)))) (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (pow.f64 1 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 g (*.f64 2 a)) 1/6) (pow.f64 (/.f64 g (*.f64 2 a)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 (/.f64 1/4 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (cbrt.f64 (/.f64 g (*.f64 2 a)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2) 1/3) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 g (*.f64 2 a))) 1/3) (pow.f64 (sqrt.f64 (/.f64 g (*.f64 2 a))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 g g) 1/3) (pow.f64 (/.f64 1/4 a) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 g (*.f64 2 a)) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2) (+.f64 0 (*.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 g (*.f64 2 a)) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2) (-.f64 0 (*.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 g (*.f64 2 a)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 g (*.f64 2 a)) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (/.f64 g (*.f64 2 a)) 1/6) (pow.f64 (/.f64 g (*.f64 2 a)) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 g (*.f64 2 a))) 1/3))))))

simplify6.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune37.0ms (1.8%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New35641
Fresh000
Picked011
Done000
Total35742
Error
0.2b
Counts
42 → 7
Alt Table
StatusErrorProgram
0.8b
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
0.8b
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
16.8b
(/.f64 (/.f64 g (*.f64 2 a)) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2) (+.f64 0 (*.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0))))
0.8b
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
1.1b
(*.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 (/.f64 1/4 a)))
16.8b
(*.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2))
16.1b
(cbrt.f64 (/.f64 g (*.f64 2 a)))
Compiler

Compiled 649 to 489 computations (24.7% saved)

localize6.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
0.5b
(cbrt.f64 a)
0.6b
(cbrt.f64 (/.f64 g 2))

series6.0ms (0.3%)

Counts
3 → 0
Calls

12 calls:

TimeVariablePointExpression
1.0ms
a
@-inf
(cbrt.f64 a)
1.0ms
a
@-inf
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
0.0ms
g
@0
(cbrt.f64 (/.f64 g 2))
0.0ms
a
@inf
(cbrt.f64 a)
0.0ms
a
@0
(cbrt.f64 a)

rewrite48.0ms (2.3%)

Algorithm
batch-egg-rewrite
Rules
906×rules-31_binary64
906×rules-32_binary64
906×rules-33_binary64
87×add-sqr-sqrt_binary64
84×add-cbrt-cube_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
120518
2266218
Stop Event
node limit
Counts
3 → 113
Calls
Call 1
Inputs
(cbrt.f64 (/.f64 g 2))
(cbrt.f64 a)
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (/.f64 g 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (/.f64 g 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (/.f64 g 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (cbrt.f64 (/.f64 g 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (/.f64 g 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 g 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 g 2)) (pow.f64 1 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (/.f64 g 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 (/.f64 g 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 g 2) 1/6) (pow.f64 (/.f64 g 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 g 2)) 2) 1/3) (cbrt.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 g 2)) 1/3) (pow.f64 (sqrt.f64 (/.f64 g 2)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 g g) 1/3) (pow.f64 1/4 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 g 2) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g 2)) 2) (+.f64 0 (*.f64 (cbrt.f64 (/.f64 g 2)) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 g 2) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g 2)) 2) (-.f64 0 (*.f64 (cbrt.f64 (/.f64 g 2)) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (/.f64 g 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 (/.f64 g 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 g) (cbrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 g 2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 g 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 g 2) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 g 2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (/.f64 g 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (/.f64 g 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 g 2)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (/.f64 g 2) 1/6) (pow.f64 (/.f64 g 2) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 g 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 g 2)) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 a) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 a) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 a) (cbrt.f64 a)) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) (pow.f64 1 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 a)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 a)) (pow.f64 (cbrt.f64 (cbrt.f64 a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 a)) 2) (cbrt.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 a 1/6) (pow.f64 a 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 a) (cbrt.f64 a)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 a) 2) 1/3) (cbrt.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 a) 1/3) (pow.f64 (sqrt.f64 a) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 a (+.f64 (pow.f64 (cbrt.f64 a) 2) (+.f64 0 (*.f64 (cbrt.f64 a) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 a (+.f64 (pow.f64 (cbrt.f64 a) 2) (-.f64 0 (*.f64 (cbrt.f64 a) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 a) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 a)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 a 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 a) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 a)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 a 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 a) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 a))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 a) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 a)) 2) (cbrt.f64 (cbrt.f64 a)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 a 1/6) (pow.f64 a 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 a) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (/.f64 0 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (/.f64 0 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (cbrt.f64 (/.f64 g (*.f64 2 a)))) (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 g 2)) (/.f64 1 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) (/.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 2) (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 g 2) 1/6) (/.f64 (pow.f64 (/.f64 g 2) 1/6) (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (/.f64 1/2 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/2 (cbrt.f64 a)) (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (cbrt.f64 (/.f64 g (*.f64 2 a)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 g (*.f64 2 a)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 g (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (/.f64 1/2 (cbrt.f64 a)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))))

simplify13.0ms (0.6%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune88.0ms (4.2%)

Pruning

15 alts after pruning (13 fresh and 2 done)

PrunedKeptTotal
New1058113
Fresh055
Picked011
Done011
Total10515120
Error
0.1b
Counts
120 → 15
Alt Table
StatusErrorProgram
1.1b
(/.f64 (*.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 1/4)) (cbrt.f64 a))
0.8b
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
1.5b
(/.f64 (*.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 2)) (cbrt.f64 a))
16.8b
(/.f64 (/.f64 g (*.f64 2 a)) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2) (+.f64 0 (*.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0))))
0.8b
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
1.2b
(*.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (/.f64 1/2 (cbrt.f64 a)))
16.1b
(cbrt.f64 (/.f64 g (*.f64 2 a)))
37.7b
(/.f64 (cbrt.f64 (/.f64 g 2)) (exp.f64 (log.f64 (cbrt.f64 a))))
1.2b
(/.f64 (/.f64 (/.f64 g 2) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g 2)) 2) (+.f64 0 (*.f64 (cbrt.f64 (/.f64 g 2)) 0)))) (cbrt.f64 a))
0.8b
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
1.7b
(/.f64 (-.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (cbrt.f64 (/.f64 g 2))) (cbrt.f64 a))
1.1b
(*.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 (/.f64 1/4 a)))
16.8b
(*.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2))
1.1b
(/.f64 (cbrt.f64 (/.f64 g 2)) (/.f64 a (+.f64 (pow.f64 (cbrt.f64 a) 2) (+.f64 0 (*.f64 (cbrt.f64 a) 0)))))
4.3b
(/.f64 (cbrt.f64 (/.f64 g 2)) (*.f64 (pow.f64 (pow.f64 (cbrt.f64 a) 2) 1/3) (cbrt.f64 (cbrt.f64 a))))
Compiler

Compiled 1709 to 1209 computations (29.3% saved)

localize6.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
0.6b
(cbrt.f64 g)
0.6b
(cbrt.f64 (*.f64 2 a))

series9.0ms (0.4%)

Counts
3 → 0
Calls

12 calls:

TimeVariablePointExpression
1.0ms
a
@-inf
(cbrt.f64 (*.f64 2 a))
1.0ms
a
@-inf
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
1.0ms
g
@-inf
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
1.0ms
a
@0
(cbrt.f64 (*.f64 2 a))
1.0ms
g
@-inf
(cbrt.f64 g)

rewrite47.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
880×rules-31_binary64
880×rules-32_binary64
880×rules-33_binary64
86×add-sqr-sqrt_binary64
82×add-cbrt-cube_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
120218
2259118
Stop Event
node limit
Counts
3 → 112
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 2 a))
(cbrt.f64 g)
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (*.f64 2 a)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (*.f64 2 a)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (*.f64 2 a)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 (*.f64 2 a)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 a)) (pow.f64 1 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 (*.f64 2 a))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2) (cbrt.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 2) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) (cbrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 2 a) 1/6) (pow.f64 (*.f64 2 a) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (*.f64 2 a)) (cbrt.f64 (*.f64 2 a))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 a)) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 2 a)) 1/3) (pow.f64 (sqrt.f64 (*.f64 2 a)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 a) (+.f64 (pow.f64 (cbrt.f64 (*.f64 2 a)) 2) (+.f64 0 (*.f64 (cbrt.f64 (*.f64 2 a)) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 a) (+.f64 (pow.f64 (cbrt.f64 (*.f64 2 a)) 2) (-.f64 0 (*.f64 (cbrt.f64 (*.f64 2 a)) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (*.f64 2 a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 (*.f64 2 a))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 a) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 2 a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 a) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 2 a)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2) (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 2) (cbrt.f64 a) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 2 a) 1/6) (pow.f64 (*.f64 2 a) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 2 a)) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 g) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 g))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 g) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 g))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 g))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 g) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 g) (pow.f64 1 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 g))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 g)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 g)) (pow.f64 (cbrt.f64 (cbrt.f64 g)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 g)) 2) (cbrt.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 g 1/6) (pow.f64 g 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 g) 2) 1/3) (cbrt.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 g) 1/3) (pow.f64 (sqrt.f64 g) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 g (+.f64 (pow.f64 (cbrt.f64 g) 2) (+.f64 0 (*.f64 (cbrt.f64 g) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 g (+.f64 (pow.f64 (cbrt.f64 g) 2) (-.f64 0 (*.f64 (cbrt.f64 g) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 g) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 g)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 g 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 g) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 g)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 g 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 g) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 g))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 g))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 g) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 g)) 2) (cbrt.f64 (cbrt.f64 g)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 g 1/6) (pow.f64 g 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 g) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (/.f64 0 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (/.f64 0 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (cbrt.f64 (/.f64 g (*.f64 2 a)))) (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 g) (/.f64 1 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 g)) (/.f64 (pow.f64 (cbrt.f64 (cbrt.f64 g)) 2) (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 g 1/6) (/.f64 (pow.f64 g 1/6) (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) (+.f64 (cbrt.f64 g) (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (cbrt.f64 (/.f64 g (*.f64 2 a)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 g (*.f64 2 a)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 g (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))))

simplify7.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune83.0ms (4%)

Pruning

18 alts after pruning (15 fresh and 3 done)

PrunedKeptTotal
New1093112
Fresh01212
Picked011
Done022
Total10918127
Error
0.0b
Counts
127 → 18
Alt Table
StatusErrorProgram
1.1b
(/.f64 (*.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 1/4)) (cbrt.f64 a))
0.8b
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
1.5b
(/.f64 (*.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 2)) (cbrt.f64 a))
16.8b
(/.f64 (/.f64 g (*.f64 2 a)) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2) (+.f64 0 (*.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0))))
0.8b
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
1.2b
(*.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (/.f64 1/2 (cbrt.f64 a)))
16.1b
(cbrt.f64 (/.f64 g (*.f64 2 a)))
37.7b
(/.f64 (cbrt.f64 (/.f64 g 2)) (exp.f64 (log.f64 (cbrt.f64 a))))
1.2b
(/.f64 (cbrt.f64 g) (/.f64 (*.f64 2 a) (+.f64 (pow.f64 (cbrt.f64 (*.f64 2 a)) 2) (+.f64 0 (*.f64 (cbrt.f64 (*.f64 2 a)) 0)))))
1.5b
(/.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2)))
1.2b
(/.f64 (/.f64 (/.f64 g 2) (+.f64 (pow.f64 (cbrt.f64 (/.f64 g 2)) 2) (+.f64 0 (*.f64 (cbrt.f64 (/.f64 g 2)) 0)))) (cbrt.f64 a))
0.8b
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
1.7b
(/.f64 (-.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (cbrt.f64 (/.f64 g 2))) (cbrt.f64 a))
1.1b
(*.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 (/.f64 1/4 a)))
16.8b
(*.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2))
1.1b
(/.f64 (/.f64 g (+.f64 (pow.f64 (cbrt.f64 g) 2) (+.f64 0 (*.f64 (cbrt.f64 g) 0)))) (cbrt.f64 (*.f64 2 a)))
1.1b
(/.f64 (cbrt.f64 (/.f64 g 2)) (/.f64 a (+.f64 (pow.f64 (cbrt.f64 a) 2) (+.f64 0 (*.f64 (cbrt.f64 a) 0)))))
4.3b
(/.f64 (cbrt.f64 (/.f64 g 2)) (*.f64 (pow.f64 (pow.f64 (cbrt.f64 a) 2) 1/3) (cbrt.f64 (cbrt.f64 a))))
Compiler

Compiled 1805 to 1299 computations (28% saved)

localize8.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(/.f64 1/2 (cbrt.f64 (*.f64 2 a)))
0.4b
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
0.6b
(cbrt.f64 g)
0.6b
(cbrt.f64 (*.f64 2 a))

series7.0ms (0.3%)

Counts
2 → 0
Calls

9 calls:

TimeVariablePointExpression
3.0ms
a
@inf
(/.f64 1/2 (cbrt.f64 (*.f64 2 a)))
1.0ms
a
@-inf
(/.f64 1/2 (cbrt.f64 (*.f64 2 a)))
1.0ms
g
@-inf
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
1.0ms
a
@0
(/.f64 1/2 (cbrt.f64 (*.f64 2 a)))
1.0ms
g
@0
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))

rewrite51.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
262×rule-/ab-*+aa/1/2b_binary64
248×rule-*aa-fabs*aa_binary64
201×rule-nega--0a_binary64
201×rule-nega-/a-1_binary64
201×rule-nega-*a-1_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01120
128518
2369218
Stop Event
node limit
Counts
2 → 88
Calls
Call 1
Inputs
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
(/.f64 1/2 (cbrt.f64 (*.f64 2 a)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (cbrt.f64 g) (/.f64 (cbrt.f64 (*.f64 2 a)) 1/2)) (/.f64 (cbrt.f64 g) (/.f64 (cbrt.f64 (*.f64 2 a)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cbrt.f64 g) (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) (*.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) (cbrt.f64 (/.f64 g (*.f64 2 a)))) (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cbrt.f64 g) 2) (/.f64 (cbrt.f64 (*.f64 2 a)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cbrt.f64 g) 2) (/.f64 1 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1/2 (/.f64 (cbrt.f64 (*.f64 2 a)) (*.f64 (cbrt.f64 g) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) (/.f64 1 (*.f64 (cbrt.f64 g) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) (/.f64 (pow.f64 (cbrt.f64 g) 2) (+.f64 g g)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (cbrt.f64 (*.f64 2 a)) (cbrt.f64 g)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 g)) (neg.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 3) (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 g g) (*.f64 (pow.f64 (cbrt.f64 g) 2) (/.f64 (cbrt.f64 (*.f64 2 a)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 g (cbrt.f64 (*.f64 2 a))) (pow.f64 (cbrt.f64 g) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (cbrt.f64 g) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (cbrt.f64 g) (cbrt.f64 2)) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (cbrt.f64 g) (pow.f64 (*.f64 2 a) 1/6)) (pow.f64 (*.f64 2 a) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (+.f64 g g) (/.f64 (cbrt.f64 (*.f64 2 a)) 1/2)) (pow.f64 (cbrt.f64 g) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 g (*.f64 2 a)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (cbrt.f64 g) 2) 3) (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 3) (pow.f64 (*.f64 (cbrt.f64 g) 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 g) 2) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 g) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (sqrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 (log1p.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (/.f64 1 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 1/2 (/.f64 (cbrt.f64 (*.f64 2 a)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 1/2 (/.f64 1 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) (cbrt.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 2)) (cbrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) (sqrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (neg.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1/2 (neg.f64 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (neg.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) (neg.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 3) (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 3)) (/.f64 1/2 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (/.f64 1/2 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2)) (/.f64 1/2 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2))) (/.f64 1/2 (cbrt.f64 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (/.f64 1/2 (cbrt.f64 2)) (/.f64 1/2 (cbrt.f64 2))) (/.f64 1/2 (cbrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (/.f64 1/2 (pow.f64 (*.f64 2 a) 1/6)) (/.f64 1/2 (pow.f64 (*.f64 2 a) 1/6))) (/.f64 1/2 (pow.f64 (*.f64 2 a) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a))) 2)) (cbrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) (sqrt.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 1/2 (cbrt.f64 (*.f64 2 a)))))))))

simplify7.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune148.0ms (7.1%)

Pruning

18 alts after pruning (16 fresh and 2 done)

PrunedKeptTotal
New1936199
Fresh41014
Picked101
Done123
Total19918217
Error
0.0b
Counts
217 → 18
Alt Table
StatusErrorProgram
1.1b
(/.f64 (*.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 1/4)) (cbrt.f64 a))
0.8b
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
0.8b
(/.f64 (cbrt.f64 g) (cbrt.f64 (*.f64 2 a)))
1.5b
(/.f64 (/.f64 (cbrt.f64 g) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 2 a))))
16.8b
(*.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g (*.f64 2 a)))) 2))
0.8b
(*.f64 (+.f64 (cbrt.f64 g) (/.f64 g (+.f64 (pow.f64 (cbrt.f64 g) 2) (-.f64 0 (*.f64 (cbrt.f64 g) 0))))) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
1.2b
(*.f64 (+.f64 (cbrt.f64 g) (pow.f64 (cbrt.f64 (cbrt.f64 g)) 3)) (/.f64 1/2 (cbrt.f64 (*.f64 2 a))))
37.7b
(/.f64 (cbrt.f64 (/.f64 g 2)) (exp.f64 (log.f64 (cbrt.f64 a))))
1.2b
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (*.f64 (cbrt.f64 a) (cbrt.f64 2))))
1.1b
(/.f64 (cbrt.f64 (/.f64 g 2)) (/.f64 a (+.f64 (pow.f64 (cbrt.f64 a) 2) (+.f64 0 (*.f64 (cbrt.f64 a) 0)))))
1.2b
(/.f64 (cbrt.f64 g) (/.f64 (*.f64 2 a) (+.f64 (pow.f64 (cbrt.f64 (*.f64 2 a)) 2) (+.f64 0 (*.f64 (cbrt.f64 (*.f64 2 a)) 0)))))
16.3b
(cbrt.f64 (pow.f64 (cbrt.f64 (/.f64 g (*.f64 2 a))) 3))
1.5b
(/.f64 (*.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 g 2))) 2)) (cbrt.f64 a))
1.7b
(/.f64 (-.f64 (/.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (cbrt.f64 2)) (cbrt.f64 (/.f64 g 2))) (cbrt.f64 a))
1.1b
(*.f64 (cbrt.f64 (+.f64 g g)) (cbrt.f64 (/.f64 1/4 a)))
1.1b
(/.f64 (/.f64 g (+.f64 (pow.f64 (cbrt.f64 g) 2) (+.f64 0 (*.f64 (cbrt.f64 g) 0)))) (cbrt.f64 (*.f64 2 a)))
4.3b
(/.f64 (cbrt.f64 (/.f64 g 2)) (*.f64 (pow.f64 (pow.f64 (cbrt.f64 a) 2) 1/3) (cbrt.f64 (cbrt.f64 a))))
1.5b
(*.f64 (+.f64 (cbrt.f64 g) (cbrt.f64 g)) (/.f64 1/2 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 a))) 3)))
Compiler

Compiled 3342 to 2183 computations (34.7% saved)

regimes280.0ms (13.4%)

Accuracy

Total -40.4b remaining (-5002.8%)

Threshold costs -40.4b (-5002.8%)

Counts
60 → 1
Compiler

Compiled 842 to 561 computations (33.4% saved)

simplify1.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0811
Stop Event
saturated
Calls
Call 1
Inputs
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))
Outputs
(/.f64 (cbrt.f64 (/.f64 g 2)) (cbrt.f64 a))

end195.0ms (9.3%)

Stop Event
fuel
Compiler

Compiled 273 to 183 computations (33% saved)

Profiling

Loading profile data...