Details

Time bar (total: 5.8s)

analyze9.0ms (0.2%)

Algorithm
search
Search
TrueOtherFalseIter
0%100%0%0
0%100%0%1
0%100%0%2
50%50%0%3
75%25%0%4
87.5%12.5%0%5
93.7%6.2%0%6
96.8%3.1%0%7
98.4%1.6%0%8
99.2%0.8%0%9
99.6%0.4%0%10
99.8%0.2%0%11
99.9%0.1%0%12
Compiler

Compiled 8 to 7 computations (12.5% saved)

sample1.1s (18.4%)

Results
1.1s8256×body256valid
0.0msbody256invalid

preprocess172.0ms (3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
069
1129
2239
3449
41089
53309
612559
721299
822939
924779
1026859
1129849
1233759
1338569
1444229
1551109
1659479
1763379
1866259
1969039
2069779
2170139
2279549
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
Outputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 8 to 7 computations (12.5% saved)

simplify171.0ms (3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
069
1129
2239
3449
41089
53309
612559
721299
822939
924779
1026859
1129849
1233759
1338569
1444229
1551109
1659479
1763379
1866259
1969039
2069779
2170139
2279549
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
Outputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))

eval1.0ms (0%)

Compiler

Compiled 13 to 10 computations (23.1% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
34.1b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
34.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 2 (*.f64 x x))
32.7b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 17 to 8 computations (52.9% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite99.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
503×pow1_binary64
486×add-sqr-sqrt_binary64
466×add-log-exp_binary64
466×log1p-expm1-u_binary64
466×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify88.0ms (1.5%)

Algorithm
egg-herbie
Rules
964×fma-def_binary64
402×distribute-rgt-neg-out_binary64
365×fma-neg_binary64
337×distribute-rgt-neg-in_binary64
318×fabs-mul_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09164
120164
243164
383164
4205164
5632164
6988164
71635164
82038164
92907164
103744164
114611164
125738164
Stop Event
node limit
Counts
60 → 40
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))

eval8.0ms (0.1%)

Compiler

Compiled 313 to 236 computations (24.6% saved)

prune11.0ms (0.2%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New34640
Fresh000
Picked011
Done000
Total34741
Error
0.2b
Counts
41 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
45.7b
(sqrt.f64 (sqrt.f64 (*.f64 4 (pow.f64 x 4))))
32.0b
(*.f64 x (neg.f64 (sqrt.f64 2)))
31.0b
(*.f64 (sqrt.f64 2) x)
34.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
31.7b
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
31.8b
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
31.4b
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
Compiler

Compiled 93 to 77 computations (17.2% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.5b
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 9 to 7 computations (22.2% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite43.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
417×pow1_binary64
403×add-sqr-sqrt_binary64
395×*-un-lft-identity_binary64
386×add-log-exp_binary64
386×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
11006
210756
Stop Event
node limit
Counts
1 → 15
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sqrt.f64 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (*.f64 x x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 2 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))))))

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.5b
(*.f64 x (neg.f64 (sqrt.f64 2)))
Compiler

Compiled 13 to 11 computations (15.4% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite28.0ms (0.5%)

Algorithm
egg-rewrite-iter-limit
batch-egg-rewrite
Rules
61×add-sqr-sqrt_binary64
57×add-exp-log_binary64
57×add-log-exp_binary64
57×log1p-expm1-u_binary64
57×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
11258
214708
068
Stop Event
iter limit
unsound
Counts
1 → 7
Calls
Call 1
Inputs
(*.f64 x (neg.f64 (sqrt.f64 2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))))

simplify13.0ms (0.2%)

Algorithm
egg-herbie
Rules
38×fma-def_binary64
sub-neg_binary64
+-commutative_binary64
*-commutative_binary64
distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0796
11296
22596
32996
43396
55196
67396
78496
89696
912196
Stop Event
saturated
Counts
19 → 9
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
Outputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))

localize9.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 12 computations (36.8% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite44.0ms (0.8%)

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

Useful iterations: 1 (0.0ms)

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

simplify18.0ms (0.3%)

Algorithm
egg-herbie
Rules
248×fma-def_binary64
22×distribute-rgt-in_binary64
21×associate-*l*_binary64
21×sub-neg_binary64
19×distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
012100
121100
253100
3104100
4119100
5167100
6239100
7276100
8322100
9499100
10527100
Stop Event
saturated
Counts
24 → 15
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) x))
(*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) x))
(*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) x))
(*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(neg.f64 (*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) x))
(*.f64 (*.f64 (sqrt.f64 -1) (sqrt.f64 -2)) (neg.f64 x))

localize12.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 4 (pow.f64 x 4))
11.0b
(sqrt.f64 (*.f64 4 (pow.f64 x 4)))
32.7b
(sqrt.f64 (sqrt.f64 (*.f64 4 (pow.f64 x 4))))
Compiler

Compiled 24 to 19 computations (20.8% saved)

series127.0ms (2.2%)

Counts
3 → 24
Calls

9 calls:

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

rewrite66.0ms (1.1%)

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

Useful iterations: 1 (0.0ms)

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

simplify83.0ms (1.4%)

Algorithm
egg-herbie
Rules
964×fma-def_binary64
402×distribute-rgt-neg-out_binary64
365×fma-neg_binary64
337×distribute-rgt-neg-in_binary64
318×fabs-mul_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09164
120164
243164
383164
4205164
5632164
6988164
71635164
82038164
92907164
103744164
114611164
125738164
Stop Event
node limit
Counts
87 → 66
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))

localize13.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.5b
(*.f64 x (sqrt.f64 2))
0.6b
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
0.7b
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
Compiler

Compiled 22 to 18 computations (18.2% saved)

series6.0ms (0.1%)

Counts
3 → 12
Calls

9 calls:

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

rewrite60.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
575×pow1_binary64
543×add-log-exp_binary64
542×log1p-expm1-u_binary64
542×expm1-log1p-u_binary64
530×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0572
1672
Stop Event
saturated
Counts
76 → 57
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)

eval48.0ms (0.8%)

Compiler

Compiled 1515 to 1197 computations (21% saved)

prune35.0ms (0.6%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New1593162
Fresh101
Picked101
Done145
Total1627169
Error
0.1b
Counts
169 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
32.0b
(*.f64 x (neg.f64 (sqrt.f64 2)))
31.0b
(*.f64 (sqrt.f64 2) x)
34.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
31.7b
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
30.9b
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
45.6b
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
51.7b
(cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))
Compiler

Compiled 63 to 52 computations (17.5% saved)

localize28.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2))))
0.2b
(*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2))))
0.5b
(*.f64 x (neg.f64 (sqrt.f64 2)))
40.6b
(cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))
Compiler

Compiled 59 to 49 computations (16.9% saved)

series8.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
2.0ms
x
@0
(cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))
2.0ms
x
@0
(*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2))))
1.0ms
x
@0
(*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2))))
1.0ms
x
@inf
(cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@inf
(*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2))))

rewrite246.0ms (4.2%)

Algorithm
egg-rewrite-iter-limit
egg-rewrite
batch-egg-rewrite
Rules
88×associate-*r*_binary64
87×associate-*r*_binary64
87×associate-*r*_binary64
82×add-sqr-sqrt_binary64
82×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0930
118530
2214830
098
11858
221488
098
0711
114911
2182711
0711
0811
116911
2209511
0811
Stop Event
iter limit
unsound
iter limit
unsound
iter limit
unsound
unsound
Counts
3 → 27
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2))))
(*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x *.f64 x (neg.f64 (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sqrt.f64 2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (neg.f64 (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2) (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)) (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3) (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3)) (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 3)))))))

simplify94.0ms (1.6%)

Algorithm
egg-herbie
Rules
1004×fma-def_binary64
883×distribute-rgt-neg-in_binary64
869×distribute-lft-neg-in_binary64
545×fma-neg_binary64
536×unswap-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
018432
153348
2158348
3616348
41289348
52875348
64568348
76916348
87881348
Stop Event
node limit
Counts
63 → 34
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
Outputs
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (sqrt.f64 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 2) 2) (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(neg.f64 (*.f64 (pow.f64 (sqrt.f64 2) 3) (pow.f64 x 3)))
(*.f64 (pow.f64 x 3) (*.f64 -2 (sqrt.f64 2)))
(*.f64 (pow.f64 x 3) (*.f64 (sqrt.f64 2) -2))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 x 3) -2))

localize12.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (pow.f64 2 1/4) x)
0.3b
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
Compiler

Compiled 21 to 18 computations (14.3% saved)

series41.0ms (0.7%)

Counts
2 → 12
Calls

6 calls:

TimeVariablePointExpression
39.0ms
x
@0
(*.f64 (pow.f64 2 1/4) x)
1.0ms
x
@inf
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
1.0ms
x
@inf
(*.f64 (pow.f64 2 1/4) x)
0.0ms
x
@-inf
(*.f64 (pow.f64 2 1/4) x)
0.0ms
x
@0
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))

rewrite168.0ms (2.9%)

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

Useful iterations: 1 (0.0ms)

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

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0572
1672
Stop Event
saturated
Counts
34 → 23
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)

localize29.0ms (0.5%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 4 (pow.f64 x 4))
44.0b
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
Compiler

Compiled 19 to 15 computations (21.1% saved)

series23.0ms (0.4%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
12.0ms
x
@0
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
10.0ms
x
@inf
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
0.0ms
x
@-inf
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)

rewrite77.0ms (1.3%)

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

Useful iterations: 1 (0.0ms)

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

simplify53.0ms (0.9%)

Algorithm
egg-herbie
Rules
786×fma-neg_binary64
552×associate-/l*_binary64
380×exp-sum_binary64
358×fma-def_binary64
294×exp-prod_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
025192
161168
2146120
330984
471484
5213184
6635484
Stop Event
node limit
Counts
29 → 20
Calls
Call 1
Inputs
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
Outputs
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 4) (*.f64 4 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)
(exp.f64 (*.f64 1/4 (+.f64 (*.f64 -4 (log.f64 (/.f64 -1 x))) (log.f64 4))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 4) (*.f64 4 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 4 (log.f64 x) (log.f64 4)))
(*.f64 (pow.f64 4 1/4) (pow.f64 x 1))
(*.f64 (pow.f64 4 1/4) x)

eval59.0ms (1%)

Compiler

Compiled 1453 to 1236 computations (14.9% saved)

prune25.0ms (0.4%)

Pruning

11 alts after pruning (5 fresh and 6 done)

PrunedKeptTotal
New1115116
Fresh000
Picked011
Done156
Total11211123
Error
0.1b
Counts
123 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
31.7b
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
32.5b
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
34.2b
(*.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 1/4) (pow.f64 (*.f64 (*.f64 x x) 2) 1/4))
45.6b
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
51.7b
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
34.1b
(*.f64 (pow.f64 2 1/4) (sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2))))
32.0b
(*.f64 x (neg.f64 (sqrt.f64 2)))
31.0b
(*.f64 (sqrt.f64 2) x)
34.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
32.8b
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
30.9b
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
Compiler

Compiled 196 to 158 computations (19.4% saved)

localize97.0ms (1.7%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
0.5b
(*.f64 x (neg.f64 (sqrt.f64 2)))
0.5b
(*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
0.6b
(cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))
Compiler

Compiled 52 to 44 computations (15.4% saved)

series8.0ms (0.1%)

Counts
3 → 12
Calls

9 calls:

TimeVariablePointExpression
3.0ms
x
@0
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@inf
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@0
(*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@0
(cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))
1.0ms
x
@inf
(*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))

rewrite241.0ms (4.2%)

Algorithm
egg-rewrite-iter-limit
egg-rewrite
batch-egg-rewrite
Rules
78×add-sqr-sqrt_binary64
78×add-sqr-sqrt_binary64
77×add-sqr-sqrt_binary64
74×add-cbrt-cube_binary64
74×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0931
118031
2194231
0710
114410
2167510
0710
0813
116413
2187513
0813
098
11808
219428
098
Stop Event
iter limit
unsound
iter limit
unsound
iter limit
unsound
unsound
Counts
3 → 26
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 (neg.f64 (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))) (cbrt.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (sqrt.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2) (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)) (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))))

simplify76.0ms (1.3%)

Algorithm
egg-herbie
Rules
38×fma-def_binary64
sub-neg_binary64
+-commutative_binary64
*-commutative_binary64
distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0796
11296
22596
32996
43396
55196
67396
78496
89696
912196
Stop Event
saturated
Counts
38 → 28
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
Outputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))

localize49.0ms (0.9%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2))))
0.5b
(*.f64 x (neg.f64 (sqrt.f64 2)))
40.6b
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
Compiler

Compiled 44 to 33 computations (25% saved)

series16.0ms (0.3%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
8.0ms
x
@0
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
4.0ms
x
@-inf
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@inf
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@0
(*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2))))
1.0ms
x
@inf
(*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2))))

rewrite204.0ms (3.5%)

Algorithm
egg-rewrite-iter-limit
egg-rewrite
batch-egg-rewrite
Rules
111×associate-*r*_binary64
111×associate-*r*_binary64
104×associate-*r*_binary64
101×add-sqr-sqrt_binary64
101×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01036
120936
2262136
01019
120919
2262119
01019
0917
119017
2240117
0917
Stop Event
iter limit
unsound
iter limit
unsound
unsound
Counts
2 → 16
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 x 2))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))) (cbrt.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))))) (cbrt.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))) (sqrt.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))))))))))
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))) (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 x (*.f64 x 2)) (*.f64 x (neg.f64 (sqrt.f64 2))))))))))

simplify172.0ms (3%)

Algorithm
egg-herbie
Rules
773×fma-neg_binary64
546×distribute-lft-neg-in_binary64
544×distribute-rgt-neg-in_binary64
460×unswap-sqr_binary64
411×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021308
155308
2149308
3434308
41121308
51594308
62059308
72761308
83984308
95106308
105998308
116711308
127865308
Stop Event
node limit
Counts
40 → 22
Calls
Call 1
Inputs
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
Outputs
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 -2) x))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 -2) x))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2))))
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2)) (neg.f64 x))
(*.f64 x (neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 2) (neg.f64 x)))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (cbrt.f64 2))))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2))))
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2)) (neg.f64 x))
(*.f64 x (neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 2) (neg.f64 x)))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (cbrt.f64 2))))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2))))
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2)) (neg.f64 x))
(*.f64 x (neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 2) (neg.f64 x)))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (cbrt.f64 2))))
(*.f64 -1 (*.f64 (pow.f64 (*.f64 (sqrt.f64 2) 1) 1/3) (*.f64 (cbrt.f64 2) x)))
(neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2))))
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2)) (neg.f64 x))
(*.f64 x (neg.f64 (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 (cbrt.f64 2) (neg.f64 x)))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (cbrt.f64 2))))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))
(*.f64 -2 (*.f64 (sqrt.f64 2) (pow.f64 x 3)))
(*.f64 (sqrt.f64 2) (*.f64 -2 (pow.f64 x 3)))

localize19.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (*.f64 x x) 2)
0.4b
(*.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 1/4) (pow.f64 (*.f64 (*.f64 x x) 2) 1/4))
33.8b
(pow.f64 (*.f64 (*.f64 x x) 2) 1/4)
Compiler

Compiled 34 to 19 computations (44.1% saved)

series23.0ms (0.4%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
12.0ms
x
@inf
(pow.f64 (*.f64 (*.f64 x x) 2) 1/4)
9.0ms
x
@0
(pow.f64 (*.f64 (*.f64 x x) 2) 1/4)
0.0ms
x
@-inf
(pow.f64 (*.f64 (*.f64 x x) 2) 1/4)
0.0ms
x
@0
(*.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 1/4) (pow.f64 (*.f64 (*.f64 x x) 2) 1/4))
0.0ms
x
@inf
(*.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 1/4) (pow.f64 (*.f64 (*.f64 x x) 2) 1/4))

rewrite61.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
665×pow1_binary64
619×add-log-exp_binary64
619×log1p-expm1-u_binary64
619×expm1-log1p-u_binary64
600×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify55.0ms (0.9%)

Algorithm
egg-herbie
Rules
412×associate-*l*_binary64
372×fma-neg_binary64
362×associate-*r*_binary64
357×distribute-rgt-in_binary64
322×log-prod_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
030356
174332
2182272
3386272
4891272
53814272
Stop Event
node limit
Counts
84 → 57
Calls
Call 1
Inputs
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
Outputs
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 2 (log.f64 x)))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(exp.f64 (*.f64 1/4 (+.f64 (log.f64 2) (*.f64 -2 (log.f64 (/.f64 -1 x))))))
(pow.f64 (exp.f64 1/4) (+.f64 (log.f64 2) (*.f64 2 (log.f64 x))))
(pow.f64 (exp.f64 1/4) (fma.f64 2 (log.f64 x) (log.f64 2)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 x))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 x 2))

localize20.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 x x) (sqrt.f64 2))
0.3b
(*.f64 (pow.f64 2 1/4) (sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2))))
32.7b
(sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2)))
Compiler

Compiled 36 to 24 computations (33.3% saved)

series4.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@0
(sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2)))
0.0ms
x
@0
(*.f64 (pow.f64 2 1/4) (sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2))))
0.0ms
x
@inf
(*.f64 (pow.f64 2 1/4) (sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2))))
0.0ms
x
@inf
(sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2)))
0.0ms
x
@inf
(*.f64 (*.f64 x x) (sqrt.f64 2))

rewrite54.0ms (0.9%)

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

Useful iterations: 1 (0.0ms)

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

simplify106.0ms (1.8%)

Algorithm
egg-herbie
Rules
706×distribute-lft-neg-in_binary64
688×distribute-rgt-neg-in_binary64
598×fma-def_binary64
454×unswap-sqr_binary64
441×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
015388
137388
295388
3270388
41142388
52167388
63835388
75287388
86626388
97448388
Stop Event
node limit
Counts
87 → 60
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
Outputs
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 (sqrt.f64 (sqrt.f64 2)) x)
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4)))
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 (*.f64 x (pow.f64 2 1/4))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) (neg.f64 x)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (pow.f64 2 1/4))))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 (*.f64 x (pow.f64 2 1/4))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) (neg.f64 x)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (pow.f64 2 1/4))))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 (*.f64 x (pow.f64 2 1/4))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) (neg.f64 x)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (pow.f64 2 1/4))))
(*.f64 -1 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) x)))
(neg.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 (*.f64 x (pow.f64 2 1/4))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 (pow.f64 2 1/4) (neg.f64 x)))
(*.f64 (sqrt.f64 (sqrt.f64 2)) (*.f64 x (neg.f64 (pow.f64 2 1/4))))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))
(*.f64 (sqrt.f64 2) (pow.f64 x 2))
(*.f64 (sqrt.f64 2) (*.f64 x x))

localize25.0ms (0.4%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))
0.2b
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
0.5b
(*.f64 x (neg.f64 (sqrt.f64 2)))
Compiler

Compiled 32 to 27 computations (15.6% saved)

series5.0ms (0.1%)

Counts
2 → 12
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@0
(sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))
1.0ms
x
@inf
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
1.0ms
x
@inf
(sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))
1.0ms
x
@-inf
(sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))

rewrite77.0ms (1.3%)

Algorithm
egg-rewrite-iter-limit
egg-rewrite
batch-egg-rewrite
Rules
69×add-sqr-sqrt_binary64
69×add-sqr-sqrt_binary64
69×add-sqr-sqrt_binary64
65×add-exp-log_binary64
65×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
116518
2171618
088
11658
217168
088
0710
114510
2168410
0710
Stop Event
iter limit
unsound
iter limit
unsound
unsound
Counts
2 → 20
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
(sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))))
((#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))) (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 (neg.f64 (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (sqrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))))))

simplify115.0ms (2%)

Algorithm
egg-herbie
Rules
1037×fma-def_binary64
795×fabs-mul_binary64
775×cube-prod_binary64
741×sqr-pow_binary64
409×pow-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
011168
12596
25496
39196
419896
563296
690296
7109796
8191896
9293996
10321796
11347696
12379396
13418596
14466696
15530796
16620396
17738896
Stop Event
node limit
Counts
32 → 23
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
Outputs
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))

eval207.0ms (3.6%)

Compiler

Compiled 4959 to 4035 computations (18.6% saved)

prune56.0ms (1%)

Pruning

16 alts after pruning (8 fresh and 8 done)

PrunedKeptTotal
New3068314
Fresh000
Picked101
Done2810
Total30916325
Error
0.0b
Counts
325 → 16
Alt Table
Click to see full alt table
StatusErrorProgram
31.0b
(*.f64 (sqrt.f64 2) x)
34.6b
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (exp.f64 (log.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
44.7b
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))
34.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
32.4b
(*.f64 (*.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
34.2b
(*.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 1/4) (pow.f64 (*.f64 (*.f64 x x) 2) 1/4))
45.6b
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
51.7b
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
32.5b
(pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 3)
33.2b
(*.f64 (*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))) (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
32.0b
(*.f64 x (neg.f64 (sqrt.f64 2)))
31.0b
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
31.7b
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
32.0b
(*.f64 (pow.f64 2 1/4) (*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 x)))
32.8b
(pow.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)
30.9b
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
Compiler

Compiled 209 to 176 computations (15.8% saved)

regimes135.0ms (2.3%)

Counts
24 → 2
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 x (neg.f64 (sqrt.f64 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(cbrt.f64 (*.f64 (*.f64 x (*.f64 2 x)) (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 1/4) (pow.f64 (*.f64 (*.f64 x x) 2) 1/4))
(sqrt.f64 (sqrt.f64 (*.f64 4 (pow.f64 x 4))))
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 3)
(pow.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) 2)
(*.f64 x (*.f64 (sqrt.f64 (sqrt.f64 2)) (pow.f64 2 1/4)))
(*.f64 (pow.f64 2 1/4) (*.f64 (sqrt.f64 (sqrt.f64 2)) (neg.f64 x)))
(*.f64 (pow.f64 2 1/4) (sqrt.f64 (*.f64 (*.f64 x x) (sqrt.f64 2))))
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
(cbrt.f64 (*.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 x (neg.f64 (sqrt.f64 2)))) (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 (*.f64 x (neg.f64 (sqrt.f64 2))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))))
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (*.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (*.f64 (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))) (cbrt.f64 (exp.f64 (log.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))))) (cbrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
(*.f64 (*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2))))) (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))) (cbrt.f64 (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))) (sqrt.f64 (*.f64 x (neg.f64 (sqrt.f64 2)))))
Outputs
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
Calls

4 calls:

48.0ms
x
37.0ms
(*.f64 2 (pow.f64 x 2))
20.0ms
(pow.f64 x 2)
20.0ms
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
Results
ErrorSegmentsBranch
0.4b2x
16.5b3(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
16.5b3(*.f64 2 (pow.f64 x 2))
16.5b3(pow.f64 x 2)
Compiler

Compiled 302 to 249 computations (17.5% saved)

bsearch24.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
24.0ms
-2.713715200157104e-299
5.5881129459418656e-303
Compiler

Compiled 11 to 9 computations (18.2% saved)

regimes99.0ms (1.7%)

Accuracy

Total -62.1b remaining (-13369.3%)

Threshold costs -62.1b (-13369.3%)

Counts
5 → 2
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 x (neg.f64 (sqrt.f64 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/4)
Outputs
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
Calls

4 calls:

72.0ms
(pow.f64 x 2)
9.0ms
x
8.0ms
(*.f64 2 (pow.f64 x 2))
8.0ms
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
Results
ErrorSegmentsBranch
0.5b2x
16.5b3(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
16.5b3(*.f64 2 (pow.f64 x 2))
16.5b3(pow.f64 x 2)
Compiler

Compiled 48 to 38 computations (20.8% saved)

bsearch24.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
23.0ms
-2.713715200157104e-299
5.5881129459418656e-303
Compiler

Compiled 11 to 9 computations (18.2% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01651
12651
23351
33851
44151
54251
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x)))
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) x)
Outputs
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x)))
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (neg.f64 (*.f64 x (sqrt.f64 2))) (*.f64 (sqrt.f64 (*.f64 x 2)) (sqrt.f64 x)))
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (*.f64 (sqrt.f64 2) (neg.f64 x)) (*.f64 (sqrt.f64 (*.f64 x 2)) (sqrt.f64 x)))
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (*.f64 x (neg.f64 (sqrt.f64 2))) (*.f64 (sqrt.f64 2) x))
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (neg.f64 (*.f64 x (sqrt.f64 2))) (*.f64 x (sqrt.f64 2)))
(if (<=.f64 x -1278850416061695/47125446914534694131579097993419809976955095716785201420286055195012674566357244479460731079205201122720511132925006540350105785156086431086764996857554304860885586653967937772270969055149056096849908977391371752266308172471982589601097478449614615258949356272900190565812730839296826751014759649673012612226351104) (*.f64 (sqrt.f64 2) (neg.f64 x)) (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
Compiler

Compiled 36 to 28 computations (22.2% saved)

soundness644.0ms (11.1%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
1082×sqr-pow_binary64
964×fma-def_binary64
617×cube-prod_binary64
617×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069
1129
2239
3449
41089
53309
612559
721299
822939
924779
1026859
1129849
1233759
1338569
1444229
1551109
1659479
1763379
1866259
1969039
2069779
2170139
2279549
09164
120164
243164
383164
4205164
5632164
6988164
71635164
82038164
92907164
103744164
114611164
125738164
069
1129
2239
3449
41089
53309
612559
721299
822939
924779
1026859
1129849
1233759
1338569
1444229
1551109
1659479
1763379
1866259
1969039
2069779
2170139
2279549
Stop Event
node limit
node limit
node limit
Compiler

Compiled 53 to 43 computations (18.9% saved)

end29.0ms (0.5%)

Compiler

Compiled 34 to 25 computations (26.5% saved)

Profiling

Loading profile data...