Details

Time bar (total: 3.8s)

analyze6.0ms (0.2%)

Algorithm
search
Search
TrueOtherFalseIter
0%100%0%0
0%100%0%1
0%100%0%2
50%50%0%3
50%25%25%4
62.5%12.5%25%5
68.7%6.2%25%6
71.8%3.1%25%7
73.4%1.6%25%8
74.2%0.8%25%9
74.6%0.4%25%10
74.8%0.2%25%11
74.9%0.1%25%12
Compiler

Compiled 7 to 5 computations (28.6% saved)

sample982.0ms (25.5%)

Results
969.0ms8256×body256valid
1.0msbody256invalid

preprocess18.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
057
187
2117
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(*.f64 (*.f64 x 3) x)
Outputs
(*.f64 (*.f64 x 3) x)
(*.f64 x (*.f64 x 3))
Compiler

Compiled 7 to 5 computations (28.6% saved)

simplify6.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
057
187
2117
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 x 3) x)
Outputs
(*.f64 (*.f64 x 3) x)
(*.f64 x (*.f64 x 3))

eval0.0ms (0%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
0.1b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 (*.f64 x 3) x)
Compiler

Compiled 6 to 4 computations (33.3% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 x 3) x)
Compiler

Compiled 11 to 7 computations (36.4% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite48.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
446×pow1_binary64
430×add-sqr-sqrt_binary64
423×*-un-lft-identity_binary64
412×add-log-exp_binary64
412×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11017
211327
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 (*.f64 x 3) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 3))) (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 3))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 3)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 x 3)))))))) (#(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 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))))))))

simplify176.0ms (4.6%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
556×fabs-mul_binary64
523×pow-sqr_binary64
446×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0684
11284
22384
34484
410484
531884
6126884
7214084
8230484
9248884
10269684
11299184
12338284
13386384
14443184
15512384
16595884
17635084
18664084
19691884
20698884
21702484
22796584
Stop Event
node limit
Counts
26 → 16
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))
Outputs
(*.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))

eval3.0ms (0.1%)

Compiler

Compiled 145 to 103 computations (29% saved)

prune3.0ms (0.1%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New13316
Fresh000
Picked011
Done000
Total13417
Error
0.0b
Counts
17 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 (*.f64 x 3) x)
0.2b
(*.f64 3 (pow.f64 x 2))
27.6b
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 x 3)) 3))
0.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 x 3))) 2)
Compiler

Compiled 30 to 23 computations (23.3% saved)

localize13.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(pow.f64 (*.f64 x (*.f64 x 3)) 3)
0.1b
(*.f64 x (*.f64 x 3))
26.8b
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 x 3)) 3))
Compiler

Compiled 26 to 18 computations (30.8% saved)

series3.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

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

rewrite61.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
564×pow1_binary64
531×add-log-exp_binary64
531×log1p-expm1-u_binary64
531×expm1-log1p-u_binary64
516×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify143.0ms (3.7%)

Algorithm
egg-herbie
Rules
2322×associate-*l*_binary64
898×sqr-pow_binary64
477×pow-sqr_binary64
370×cube-prod_binary64
299×fabs-mul_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010252
120252
242252
3120252
4530252
5858252
6979252
71156252
81336252
91565252
101856252
112224252
122609252
133093252
143670252
153898252
164078252
174218252
184312252
194384252
Stop Event
node limit
Counts
106 → 62
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 (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 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
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 (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 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))
(*.f64 27 (pow.f64 x 6))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 9 computations (25% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite64.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
469×pow1_binary64
458×add-sqr-sqrt_binary64
449×*-un-lft-identity_binary64
435×add-log-exp_binary64
434×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11247
212677
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 3 (pow.f64 x 2))
Outputs
((#(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 (exp.f64 3) (*.f64 x x)))))) (#(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))))))))

simplify7.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize40.0ms (1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x 3))
0.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 x 3))) 2)
22.1b
(sqrt.f64 (*.f64 x (*.f64 x 3)))
Compiler

Compiled 26 to 18 computations (30.8% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite52.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
590×pow1_binary64
549×add-log-exp_binary64
548×log1p-expm1-u_binary64
548×expm1-log1p-u_binary64
537×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify154.0ms (4%)

Algorithm
egg-herbie
Rules
696×fma-neg_binary64
617×unswap-sqr_binary64
423×fma-def_binary64
383×fabs-mul_binary64
353×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
011224
125164
256164
3141164
4563164
51064164
62260164
72840164
83739164
94463164
105101164
115897164
127317164
Stop Event
node limit
Counts
78 → 58
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
Outputs
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 (*.f64 3 x) x)
(*.f64 x (*.f64 x 3))

eval56.0ms (1.5%)

Compiler

Compiled 1362 to 1001 computations (26.5% saved)

prune22.0ms (0.6%)

Pruning

9 alts after pruning (7 fresh and 2 done)

PrunedKeptTotal
New1257132
Fresh000
Picked011
Done213
Total1279136
Error
0.0b
Counts
136 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
31.5b
(*.f64 (*.f64 (*.f64 x (sqrt.f64 3)) (sqrt.f64 (*.f64 x (sqrt.f64 3)))) (sqrt.f64 (*.f64 x (sqrt.f64 3))))
0.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 x 3))) 2)
27.7b
(cbrt.f64 (*.f64 27 (pow.f64 x 6)))
0.1b
(*.f64 (*.f64 x 3) x)
0.6b
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
0.4b
(*.f64 (*.f64 x (sqrt.f64 3)) (*.f64 x (sqrt.f64 3)))
0.2b
(*.f64 (*.f64 x x) 3)
31.4b
(*.f64 (*.f64 (*.f64 x 3) (sqrt.f64 x)) (sqrt.f64 x))
19.0b
(sqrt.f64 (*.f64 (pow.f64 x 4) 9))
Compiler

Compiled 147 to 115 computations (21.8% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 11 to 5 computations (54.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite43.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
431×pow1_binary64
418×add-sqr-sqrt_binary64
410×*-un-lft-identity_binary64
399×add-log-exp_binary64
399×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11027
211447
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 (*.f64 x x) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (exp.f64 (*.f64 x x)) (exp.f64 (*.f64 x x)))) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 3))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 3))))))) (#(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 (*.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 (*.f64 x 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 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 (4.8%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
556×fabs-mul_binary64
523×pow-sqr_binary64
446×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0684
11284
22384
34484
410484
531884
6126884
7214084
8230484
9248884
10269684
11299184
12338284
13386384
14443184
15512384
16595884
17635084
18664084
19691884
20698884
21702484
22796584
Stop Event
node limit
Counts
26 → 16
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))
Outputs
(*.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))

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (*.f64 x (sqrt.f64 3)) (*.f64 x (sqrt.f64 3)))
0.4b
(*.f64 x (sqrt.f64 3))
Compiler

Compiled 18 to 14 computations (22.2% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite69.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
535×pow1_binary64
513×add-sqr-sqrt_binary64
497×add-log-exp_binary64
497×log1p-expm1-u_binary64
497×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify209.0ms (5.4%)

Algorithm
egg-herbie
Rules
834×sqr-pow_binary64
691×cube-prod_binary64
682×fabs-mul_binary64
635×associate-*l*_binary64
573×pow-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
09216
119156
238156
393156
4383156
52082156
62195156
72404156
82600156
92829156
103136156
113768156
124243156
134872156
145586156
156511156
167021156
177405156
187777156
197869156
207899156
Stop Event
node limit
Counts
48 → 27
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
Outputs
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))

localize10.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 27 (pow.f64 x 6))
26.8b
(cbrt.f64 (*.f64 27 (pow.f64 x 6)))
Compiler

Compiled 18 to 14 computations (22.2% saved)

series3.0ms (0.1%)

Counts
2 → 12
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 27 (pow.f64 x 6))
1.0ms
x
@inf
(*.f64 27 (pow.f64 x 6))
0.0ms
x
@0
(cbrt.f64 (*.f64 27 (pow.f64 x 6)))
0.0ms
x
@inf
(cbrt.f64 (*.f64 27 (pow.f64 x 6)))
0.0ms
x
@-inf
(cbrt.f64 (*.f64 27 (pow.f64 x 6)))

rewrite79.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
573×pow1_binary64
541×add-log-exp_binary64
541×log1p-expm1-u_binary64
541×expm1-log1p-u_binary64
528×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0716
114614
2157914
Stop Event
node limit
Counts
2 → 31
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 27 (pow.f64 x 6)))
(*.f64 27 (pow.f64 x 6))
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 (cbrt.f64 (*.f64 (*.f64 x x) 3)) (cbrt.f64 (*.f64 9 (cbrt.f64 (pow.f64 x 12)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 9 (cbrt.f64 (pow.f64 x 12)))) (cbrt.f64 (*.f64 (*.f64 x x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 3) x) (*.f64 (sqrt.f64 3) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (*.f64 (*.f64 x x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 9 (cbrt.f64 (pow.f64 x 12))) 1/3) (cbrt.f64 (*.f64 (*.f64 x x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (pow.f64 x 3) (sqrt.f64 27)) 1/3) (pow.f64 (*.f64 (pow.f64 x 3) (sqrt.f64 27)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 27 (pow.f64 x 6)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) 3) 1)))) (#(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 (sqrt.f64 3) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 9 (cbrt.f64 (pow.f64 x 12))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 x x)))))) (#(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 27 (pow.f64 x 6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 27 (pow.f64 x 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) 3) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 27 (pow.f64 x 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 3) (sqrt.f64 27)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 12) 729))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 27) (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 27 (pow.f64 x 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 27 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 27 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 27 (pow.f64 x 6))))))))

simplify183.0ms (4.8%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
556×fabs-mul_binary64
523×pow-sqr_binary64
446×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0684
11284
22384
34484
410484
531884
6126884
7214084
8230484
9248884
10269684
11299184
12338284
13386384
14443184
15512384
16595884
17635084
18664084
19691884
20698884
21702484
22796584
Stop Event
node limit
Counts
43 → 33
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))
Outputs
(*.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))

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (pow.f64 x 4) 9)
18.3b
(sqrt.f64 (*.f64 (pow.f64 x 4) 9))
Compiler

Compiled 18 to 14 computations (22.2% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 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
@inf
(sqrt.f64 (*.f64 (pow.f64 x 4) 9))

rewrite67.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
574×pow1_binary64
538×add-log-exp_binary64
538×log1p-expm1-u_binary64
538×expm1-log1p-u_binary64
525×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0716
114814
2155614
Stop Event
node limit
Counts
2 → 36
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (pow.f64 x 4) 9))
(*.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 (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)))))))

simplify199.0ms (5.2%)

Algorithm
egg-herbie
Rules
1319×sqr-pow_binary64
659×pow-sqr_binary64
493×cube-prod_binary64
407×fabs-mul_binary64
387×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010168
119168
239168
389168
4289168
51156168
61907168
72031168
82199168
92398168
102671168
113030168
123483168
134014168
144644168
155395168
165709168
175935168
186133168
196187168
206209168
217043168
227956168
Stop Event
node limit
Counts
60 → 39
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 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 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 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))

localize12.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 18 computations (14.3% saved)

series1.0ms (0%)

Counts
2 → 0
Calls

3 calls:

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

rewrite74.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
546×pow1_binary64
528×add-sqr-sqrt_binary64
507×add-log-exp_binary64
506×log1p-expm1-u_binary64
506×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
088
11708
215338
Stop Event
node limit
Counts
2 → 12
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 3) 2)
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x . 3)))))
((#(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 (sqrt.f64 3) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 9 (pow.f64 x 4)))))) (#(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 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))))))))

simplify12.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval32.0ms (0.8%)

Compiler

Compiled 1225 to 912 computations (25.6% saved)

prune21.0ms (0.6%)

Pruning

9 alts after pruning (3 fresh and 6 done)

PrunedKeptTotal
New1392141
Fresh112
Picked101
Done066
Total1419150
Error
0.0b
Counts
150 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.4b
(*.f64 (*.f64 x (sqrt.f64 3)) (*.f64 x (sqrt.f64 3)))
31.5b
(*.f64 (pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3))) 2) (*.f64 x (sqrt.f64 3)))
27.7b
(cbrt.f64 (*.f64 27 (pow.f64 x 6)))
0.1b
(*.f64 (*.f64 x 3) x)
16.9b
(*.f64 (*.f64 x (sqrt.f64 3)) (sqrt.f64 (*.f64 x (*.f64 3 x))))
0.2b
(*.f64 (*.f64 x x) 3)
31.4b
(*.f64 (*.f64 (*.f64 x 3) (sqrt.f64 x)) (sqrt.f64 x))
0.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 x 3))) 2)
19.0b
(sqrt.f64 (*.f64 (pow.f64 x 4) 9))
Compiler

Compiled 80 to 61 computations (23.8% saved)

localize16.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 3 x))
0.3b
(*.f64 (*.f64 x (sqrt.f64 3)) (sqrt.f64 (*.f64 x (*.f64 3 x))))
0.4b
(*.f64 x (sqrt.f64 3))
22.1b
(sqrt.f64 (*.f64 x (*.f64 3 x)))
Compiler

Compiled 34 to 24 computations (29.4% saved)

series3.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

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

rewrite79.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
621×pow1_binary64
575×add-log-exp_binary64
575×log1p-expm1-u_binary64
575×expm1-log1p-u_binary64
561×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify83.0ms (2.2%)

Algorithm
egg-herbie
Rules
833×distribute-lft-neg-in_binary64
828×distribute-rgt-neg-in_binary64
767×fma-def_binary64
670×fma-neg_binary64
617×unswap-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013376
132248
278248
3207248
4883248
51866248
63955248
75949248
87537248
Stop Event
node limit
Counts
90 → 49
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (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 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 (sqrt.f64 3) x)
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 3)))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 3)))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 3)))
(*.f64 -1 (*.f64 (sqrt.f64 3) x))
(neg.f64 (*.f64 (sqrt.f64 3) x))
(*.f64 (sqrt.f64 3) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 3)))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 (*.f64 -3 x) x)
(*.f64 x (*.f64 x -3))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 (*.f64 -3 x) x)
(*.f64 x (*.f64 x -3))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 (*.f64 -3 x) x)
(*.f64 x (*.f64 x -3))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x)))
(*.f64 (*.f64 -3 x) x)
(*.f64 x (*.f64 x -3))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))
(*.f64 3 (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 x (*.f64 x 3))
(*.f64 3 (*.f64 x x))

localize9.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 (*.f64 x 3) (sqrt.f64 x)) (sqrt.f64 x))
0.1b
(*.f64 (*.f64 x 3) (sqrt.f64 x))
Compiler

Compiled 23 to 12 computations (47.8% saved)

series7.0ms (0.2%)

Counts
2 → 12
Calls

6 calls:

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

rewrite66.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
637×pow1_binary64
589×add-log-exp_binary64
589×log1p-expm1-u_binary64
589×expm1-log1p-u_binary64
576×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify98.0ms (2.6%)

Algorithm
egg-herbie
Rules
618×unswap-sqr_binary64
510×unsub-neg_binary64
351×fma-def_binary64
292×fma-neg_binary64
287×sqr-pow_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01284
12584
26084
317184
471284
5115984
6221484
7268584
8327584
9412484
10576684
11743684
Stop Event
node limit
Counts
34 → 25
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 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
(*.f64 -3 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
(*.f64 -3 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
(*.f64 -3 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
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 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
(*.f64 3 (*.f64 x x))
(*.f64 -3 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
(*.f64 3 (*.f64 x x))
(*.f64 -3 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
(*.f64 3 (*.f64 x x))
(*.f64 -3 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (pow.f64 x 2)))
(*.f64 3 (*.f64 x x))

localize16.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

Compiled 34 to 28 computations (17.6% saved)

series15.0ms (0.4%)

Counts
3 → 12
Calls

9 calls:

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

rewrite66.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
632×pow1_binary64
587×add-log-exp_binary64
586×log1p-expm1-u_binary64
586×expm1-log1p-u_binary64
572×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify97.0ms (2.5%)

Algorithm
egg-herbie
Rules
827×fma-def_binary64
527×unswap-sqr_binary64
503×associate-*l*_binary64
458×fma-neg_binary64
435×associate-*r*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013144
13284
210384
342084
4236584
5478184
6669384
7782084
Stop Event
node limit
Counts
77 → 68
Calls
Call 1
Inputs
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
Outputs
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 x 2))))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x x))
(*.f64 3 (*.f64 x x))

eval128.0ms (3.3%)

Compiler

Compiled 2278 to 1787 computations (21.6% saved)

prune27.0ms (0.7%)

Pruning

8 alts after pruning (2 fresh and 6 done)

PrunedKeptTotal
New1822184
Fresh000
Picked101
Done268
Total1858193
Error
0.0b
Counts
193 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.4b
(*.f64 (*.f64 x (sqrt.f64 3)) (*.f64 x (sqrt.f64 3)))
0.6b
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 3))) (cbrt.f64 (*.f64 3 (*.f64 x x)))) (*.f64 x (sqrt.f64 3)))
0.1b
(*.f64 (*.f64 x 3) x)
16.9b
(*.f64 (*.f64 x (sqrt.f64 3)) (sqrt.f64 (*.f64 x (*.f64 3 x))))
0.2b
(*.f64 (*.f64 x x) 3)
0.3b
(pow.f64 (sqrt.f64 (*.f64 x (*.f64 x 3))) 2)
31.6b
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 3))) 4)
19.0b
(sqrt.f64 (*.f64 (pow.f64 x 4) 9))
Compiler

Compiled 76 to 59 computations (22.4% saved)

regimes20.0ms (0.5%)

Accuracy

Total -47.6b remaining (-33876.8%)

Threshold costs -47.6b (-33876.8%)

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

2 calls:

10.0ms
x
5.0ms
(*.f64 (*.f64 x 3) x)
Results
ErrorSegmentsBranch
0.1b1x
0.1b1(*.f64 (*.f64 x 3) x)
Compiler

Compiled 141 to 106 computations (24.8% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
177
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 x 3) x)
Outputs
(*.f64 (*.f64 x 3) x)
(*.f64 x (*.f64 x 3))
Compiler

Compiled 6 to 4 computations (33.3% saved)

soundness0.0ms (0%)

end13.0ms (0.3%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

Profiling

Loading profile data...