Details

Time bar (total: 3.0s)

analyze5.0ms (0.2%)

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

Compiled 8 to 7 computations (12.5% saved)

sample1.3s (42.5%)

Results
1.3s8256×body256valid
0.0msbody256infinite
Bogosity

preprocess157.0ms (5.2%)

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)

simplify141.0ms (4.7%)

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
31.1b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
31.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize6.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 2 (*.f64 x x))
29.8b
(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
@inf
(sqrt.f64 (*.f64 2 (*.f64 x x)))
1.0ms
x
@0
(*.f64 2 (*.f64 x x))
1.0ms
x
@inf
(*.f64 2 (*.f64 x x))
0.0ms
x
@-inf
(*.f64 2 (*.f64 x x))

rewrite42.0ms (1.4%)

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

simplify69.0ms (2.3%)

Algorithm
egg-herbie
Rules
547×fma-neg_binary64
507×distribute-rgt-in_binary64
493×fma-def_binary64
482×distribute-lft-in_binary64
337×log-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
080438
1188438
2726438
32397438
47586438
Stop Event
node limit
Counts
60 → 44
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))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4))) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/2))
(*.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(fabs.f64 (*.f64 x (sqrt.f64 2)))
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/2)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(sqrt.f64 (*.f64 4 (pow.f64 x 4)))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x x)))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x 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 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 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 2 x)))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 x (*.f64 2 x)))))
(*.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 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))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 x (*.f64 2 x)))))
(*.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 2 x)))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(*.f64 (sqrt.f64 2) x)
(fabs.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 2) x)
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(*.f64 (sqrt.f64 2) x)
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(pow.f64 (*.f64 4 (pow.f64 x 4)) 1/2)
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(sqrt.f64 (*.f64 4 (pow.f64 x 4)))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x x)))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(*.f64 x (*.f64 2 x))

eval8.0ms (0.3%)

Compiler

Compiled 346 to 260 computations (24.9% saved)

prune10.0ms (0.3%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New38644
Fresh000
Picked011
Done000
Total38745
Error
0.1b
Counts
45 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
30.8b
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
30.7b
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
30.7b
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
33.0b
(*.f64 (sqrt.f64 2) (neg.f64 x))
30.2b
(*.f64 (sqrt.f64 2) x)
31.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
33.5b
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
Compiler

Compiled 91 to 75 computations (17.6% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.4b
(*.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)

rewrite36.0ms (1.2%)

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

simplify58.0ms (1.9%)

Algorithm
egg-herbie
Rules
808×fma-def_binary64
609×fma-neg_binary64
524×log-prod_binary64
283×*-commutative_binary64
250×associate-*l*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
042113
19899
232899
3232399
4530299
5760199
Stop Event
node limit
Counts
15 → 18
Calls
Call 1
Inputs
(+.f64 0 (*.f64 (sqrt.f64 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))))
(+.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))))
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
(exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))
Outputs
(+.f64 0 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 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))))
(*.f64 (sqrt.f64 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))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))) 3)
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(*.f64 (sqrt.f64 2) x)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(*.f64 (sqrt.f64 2) x)
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 2) x)
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(*.f64 (sqrt.f64 2) x)
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) x)
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) x)
(exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) x)

localize6.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 8 computations (33.3% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite32.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
450×pow1_binary64
437×add-sqr-sqrt_binary64
428×*-un-lft-identity_binary64
418×add-log-exp_binary64
417×log1p-expm1-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
068
11256
214736
Stop Event
node limit
Counts
1 → 13
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) (neg.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.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 (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 neg.f64 (*.f64 (sqrt.f64 2) x))))) (#(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)))))))

simplify48.0ms (1.6%)

Algorithm
egg-herbie
Rules
504×log-prod_binary64
419×*-commutative_binary64
327×distribute-rgt-in_binary64
318×distribute-lft-in_binary64
305×distribute-rgt-out_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
035244
189211
2332178
31748178
44907178
57938128
Stop Event
node limit
Counts
25 → 20
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))
(-.f64 0 (*.f64 (sqrt.f64 2) x))
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(neg.f64 (*.f64 (sqrt.f64 2) x))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
(exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))
Outputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(-.f64 0 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)

localize8.0ms (0.3%)

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)

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

rewrite35.0ms (1.2%)

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

simplify48.0ms (1.6%)

Algorithm
egg-herbie
Rules
792×log-prod_binary64
549×fma-neg_binary64
383×exp-sum_binary64
356×exp-prod_binary64
324×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038172
192172
2327172
31665172
44059172
56073172
Stop Event
node limit
Counts
24 → 18
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)))
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (*.f64 (sqrt.f64 2) x)))
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
(exp.f64 (log.f64 (*.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 (sqrt.f64 -1) (*.f64 x (sqrt.f64 -2))))
(*.f64 (sqrt.f64 -1) (neg.f64 (*.f64 x (sqrt.f64 -2))))
(*.f64 x (*.f64 (sqrt.f64 -2) (neg.f64 (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -1) (sqrt.f64 -2))))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 x (sqrt.f64 -2))))
(*.f64 (sqrt.f64 -1) (neg.f64 (*.f64 x (sqrt.f64 -2))))
(*.f64 x (*.f64 (sqrt.f64 -2) (neg.f64 (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -1) (sqrt.f64 -2))))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 x (sqrt.f64 -2))))
(*.f64 (sqrt.f64 -1) (neg.f64 (*.f64 x (sqrt.f64 -2))))
(*.f64 x (*.f64 (sqrt.f64 -2) (neg.f64 (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -1) (sqrt.f64 -2))))
(*.f64 -1 (*.f64 (sqrt.f64 -1) (*.f64 (sqrt.f64 -2) x)))
(neg.f64 (*.f64 (sqrt.f64 -1) (*.f64 x (sqrt.f64 -2))))
(*.f64 (sqrt.f64 -1) (neg.f64 (*.f64 x (sqrt.f64 -2))))
(*.f64 x (*.f64 (sqrt.f64 -2) (neg.f64 (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -1) (sqrt.f64 -2))))
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(*.f64 (sqrt.f64 2) x)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(*.f64 (sqrt.f64 2) x)
(log.f64 (exp.f64 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) x)
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(*.f64 (sqrt.f64 2) x)
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) x)
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) x)
(exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) x)

localize10.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.4b
(*.f64 x (sqrt.f64 2))
3.0b
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
Compiler

Compiled 20 to 16 computations (20% saved)

series1.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite37.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
502×pow1_binary64
483×add-sqr-sqrt_binary64
464×add-log-exp_binary64
464×log1p-expm1-u_binary64
464×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
112512
2128412
Stop Event
node limit
Counts
2 → 44
Calls
Call 1
Inputs
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 x (sqrt.f64 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))))) (#(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 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 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))))) (#(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 2 1/4) (*.f64 (pow.f64 2 1/4) x))))) (#(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 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 pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 x (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 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 +.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))))) (#(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 pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 x (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 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))))))))

simplify48.0ms (1.6%)

Algorithm
egg-herbie
Rules
1054×log-prod_binary64
469×associate-*l*_binary64
434×distribute-rgt-in_binary64
416×distribute-lft-in_binary64
411×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
071506
1164506
2463506
32882504
47198504
Stop Event
node limit
Counts
68 → 36
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)
(*.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)
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))
(*.f64 (cbrt.f64 2) (*.f64 (cbrt.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 2)))
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (*.f64 x (cbrt.f64 2)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (*.f64 x (pow.f64 2 1/4)) (pow.f64 2 1/4))
(*.f64 (*.f64 (sqrt.f64 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(*.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 x)) (sqrt.f64 x))
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 1) (log.f64 (*.f64 x (sqrt.f64 2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 1) (log.f64 (*.f64 x (sqrt.f64 2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 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 (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)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(*.f64 (sqrt.f64 2) x)
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 (sqrt.f64 2) x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(*.f64 (cbrt.f64 2) (*.f64 (cbrt.f64 (sqrt.f64 2)) x))
(*.f64 (cbrt.f64 2) (*.f64 x (cbrt.f64 (sqrt.f64 2))))
(*.f64 x (*.f64 (cbrt.f64 2) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2)))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 x (cbrt.f64 2)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (cbrt.f64 2) (*.f64 x (cbrt.f64 (sqrt.f64 2))))
(*.f64 x (*.f64 (cbrt.f64 2) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2)))
(*.f64 (*.f64 x (pow.f64 2 1/4)) (pow.f64 2 1/4))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 (sqrt.f64 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))) (sqrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x))))
(pow.f64 (exp.f64 1) (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x))) 2)) (cbrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x))))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(fabs.f64 (*.f64 (sqrt.f64 2) x))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(*.f64 (sqrt.f64 2) x)
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(*.f64 (sqrt.f64 2) x)
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))) (sqrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x))))
(pow.f64 (exp.f64 1) (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x))) 2)) (cbrt.f64 (log.f64 (*.f64 (sqrt.f64 2) x))))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(fabs.f64 (*.f64 (sqrt.f64 2) x))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(*.f64 (sqrt.f64 2) x)
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)

localize10.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 22 to 18 computations (18.2% saved)

series5.0ms (0.2%)

Counts
2 → 0
Calls

6 calls:

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

rewrite51.0ms (1.7%)

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
0814
116814
2157814
Stop Event
node limit
Counts
2 → 52
Calls
Call 1
Inputs
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(cbrt.f64 (*.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)))))))))

simplify50.0ms (1.7%)

Algorithm
egg-herbie
Rules
349×exp-sum_binary64
311×fma-neg_binary64
309×log-prod_binary64
284×unswap-sqr_binary64
255×*-commutative_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0107797
1231682
2748583
31909583
44457583
Stop Event
node limit
Counts
52 → 74
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))
(*.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)))))
(*.f64 (cbrt.f64 2) (*.f64 (cbrt.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 2)))
(*.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)))))
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) 3) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.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))
(*.f64 (*.f64 x (cbrt.f64 2)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (*.f64 x (pow.f64 2 1/4)) (pow.f64 2 1/4))
(*.f64 (*.f64 (sqrt.f64 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(*.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 x)) (cbrt.f64 (sqrt.f64 2)))
(*.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)))))
(*.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))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(-.f64 (+.f64 1 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) 1)
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 1 (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/3))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 1/6) (pow.f64 (*.f64 x (sqrt.f64 2)) 1/6))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 1/3) (pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 1/3))
(pow.f64 (*.f64 x (sqrt.f64 2)) 1/3)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1)
(pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 1/6) 2)
(sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))))
(log.f64 (exp.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(exp.f64 (log.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
Outputs
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 (sqrt.f64 2) x)
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (*.f64 x 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (+.f64 x x))))
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (*.f64 x 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (+.f64 x x))))
(*.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (*.f64 x 2))) (*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (+.f64 x x))) (*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sqrt.f64 2)))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.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)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) 4))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 x 2)))) 4))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))) 4))
(*.f64 (cbrt.f64 2) (*.f64 (cbrt.f64 (sqrt.f64 2)) x))
(*.f64 (cbrt.f64 2) (*.f64 x (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2)))
(*.f64 x (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2)))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sqrt.f64 2)))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.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)))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (*.f64 x 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (+.f64 x x))))
(*.f64 (pow.f64 2 1/4) (*.f64 (pow.f64 2 1/4) x))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) 3) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (*.f64 x 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (+.f64 x 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))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 x (cbrt.f64 2)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (cbrt.f64 2) (*.f64 x (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (*.f64 x (cbrt.f64 2)))
(*.f64 x (*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 2)))
(*.f64 (*.f64 x (pow.f64 2 1/4)) (pow.f64 2 1/4))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 (sqrt.f64 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 x)) (sqrt.f64 x))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (*.f64 x 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (+.f64 x x))))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 x)) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (*.f64 x 2))) (*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2))))
(*.f64 (cbrt.f64 (*.f64 x (+.f64 x x))) (*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2))))
(*.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)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) (*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) 4))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 x 2)))) 4))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))) 4))
(*.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))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (*.f64 x 2))))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 x (+.f64 x x))))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(+.f64 1 (-.f64 (*.f64 x (sqrt.f64 2)) 1))
(+.f64 (*.f64 x (sqrt.f64 2)) 0)
(*.f64 x (sqrt.f64 2))
(-.f64 (+.f64 1 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) 1)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 1 (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 x 2)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/3))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 x 2)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 x 2)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (sqrt.f64 2)) (cbrt.f64 x))
(*.f64 (cbrt.f64 x) (cbrt.f64 (sqrt.f64 2)))
(*.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 1/6) (pow.f64 (*.f64 x (sqrt.f64 2)) 1/6))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (*.f64 x 2)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x)))) (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 1/3) (pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 1/3))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(pow.f64 (*.f64 x (sqrt.f64 2)) 1/3)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) 3)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 1/6) 2)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))))
(sqrt.f64 (cbrt.f64 (*.f64 x (*.f64 x 2))))
(sqrt.f64 (cbrt.f64 (*.f64 x (+.f64 x x))))
(log.f64 (exp.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))
(exp.f64 (log.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 1))
(+.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 0)
(cbrt.f64 (*.f64 x (sqrt.f64 2)))

eval57.0ms (1.9%)

Compiler

Compiled 1520 to 1186 computations (22% saved)

prune14.0ms (0.4%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New1661167
Fresh101
Picked101
Done325
Total1713174
Error
0b
Counts
174 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(hypot.f64 x x)
30.2b
(*.f64 (sqrt.f64 2) x)
31.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 16 to 11 computations (31.3% saved)

localize2.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(hypot.f64 x x)
Compiler

Compiled 5 to 2 computations (60% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(hypot.f64 x x)
1.0ms
x
@inf
(hypot.f64 x x)
1.0ms
x
@0
(hypot.f64 x x)

rewrite67.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
356×log1p-udef_binary64
279×associate-*r*_binary64
271×pow1_binary64
259×associate-*l*_binary64
259×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
034
1604
26964
378794
Stop Event
node limit
Counts
1 → 103
Calls
Call 1
Inputs
(hypot.f64 x x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (/.f64 0 0)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (/.f64 0 0)) 2))) (log.f64 (cbrt.f64 (exp.f64 (/.f64 0 0)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x x) (/.f64 0 0)) (*.f64 (*.f64 x x) (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 0 0) (*.f64 x x)) (*.f64 (/.f64 0 0) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 0 0)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 x 4) 0) (/.f64 (pow.f64 x 4) 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (+.f64 x x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (+.f64 x x) (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) (*.f64 (+.f64 x x) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (+.f64 (pow.f64 (cbrt.f64 x) 5) (pow.f64 (cbrt.f64 x) 5)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 (*.f64 x (cbrt.f64 x)) (*.f64 x (cbrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (pow.f64 (+.f64 x x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (+.f64 (pow.f64 x 3/2) (pow.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 0 0) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 0 0) (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 0 0) (pow.f64 1 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 0 0) (pow.f64 1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 0 (/.f64 1 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (cbrt.f64 x)) (+.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3/2) (+.f64 (sqrt.f64 x) (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 x x) (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 1 (+.f64 0 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 5) (+.f64 (cbrt.f64 x) (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (pow.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 2) (pow.f64 (cbrt.f64 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/3) (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 2 1/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sqrt.f64 x)) (pow.f64 x 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 0 0) x) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 0 0) 2) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (*.f64 x (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x (cbrt.f64 x))) (pow.f64 (cbrt.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 x 3/2)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 5)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 0 (pow.f64 x 4)) (*.f64 2 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 0 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (pow.f64 x 6)) (+.f64 0 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (*.f64 2 (pow.f64 x 6))) (*.f64 (+.f64 0 (pow.f64 x 4)) (+.f64 0 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (*.f64 2 (pow.f64 x 6))) (cbrt.f64 (+.f64 0 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 6))) (sqrt.f64 (+.f64 0 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 0) (sqrt.f64 0))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (pow.f64 x 6))) (neg.f64 (+.f64 0 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 0 (*.f64 2 (pow.f64 x 6))) (*.f64 0 (+.f64 0 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 0) (*.f64 (+.f64 0 (pow.f64 x 4)) 0))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 (/.f64 0 0)) 3) 1) (+.f64 (*.f64 (+.f64 1 (/.f64 0 0)) (+.f64 1 (/.f64 0 0))) (+.f64 1 (+.f64 1 (/.f64 0 0)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (+.f64 1 (/.f64 0 0)) (+.f64 1 (/.f64 0 0))) 1) (+.f64 (+.f64 1 (/.f64 0 0)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 1) (+.f64 0 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 0 0)) (+.f64 0 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 0 (/.f64 0 0)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (/.f64 0 0) (*.f64 2 (pow.f64 x 6))) (+.f64 0 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 5/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 5)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 0 0) 4/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 0 0)) 2))) (cbrt.f64 (log.f64 (/.f64 0 0))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 0 0)))) (sqrt.f64 (log.f64 (/.f64 0 0))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (neg.f64 (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 0 0)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x x (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x (cbrt.f64 x)) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (*.f64 x x))))))

simplify18.0ms (0.6%)

Algorithm
egg-herbie
Rules
41×*-commutative_binary64
30×sqr-pow_binary64
15×associate-*r*_binary64
15×associate-*l*_binary64
13×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0216575
1667575
Stop Event
unsound
Counts
115 → 118
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 (*.f64 x x) (*.f64 x x))
(+.f64 (+.f64 1 (/.f64 0 0)) -1)
(+.f64 0 (/.f64 0 0))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (/.f64 0 0)) 2))) (log.f64 (cbrt.f64 (exp.f64 (/.f64 0 0)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))))
(+.f64 (*.f64 (*.f64 x x) (/.f64 0 0)) (*.f64 (*.f64 x x) (/.f64 0 0)))
(+.f64 (*.f64 (/.f64 0 0) (*.f64 x x)) (*.f64 (/.f64 0 0) (*.f64 x x)))
(-.f64 (+.f64 1 (/.f64 0 0)) 1)
(-.f64 (/.f64 (pow.f64 x 4) 0) (/.f64 (pow.f64 x 4) 0))
(*.f64 x (+.f64 x x))
(*.f64 x (*.f64 (+.f64 x x) 1))
(*.f64 x (*.f64 (+.f64 x x) (/.f64 0 0)))
(*.f64 1 (/.f64 0 0))
(*.f64 (*.f64 x x) 2)
(*.f64 (*.f64 x x) (*.f64 (+.f64 x x) (+.f64 x x)))
(*.f64 (cbrt.f64 x) (cbrt.f64 (+.f64 x x)))
(*.f64 (cbrt.f64 x) (+.f64 (pow.f64 (cbrt.f64 x) 5) (pow.f64 (cbrt.f64 x) 5)))
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 x x)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 (*.f64 x (cbrt.f64 x)) (*.f64 x (cbrt.f64 x))))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (+.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 x) (pow.f64 (+.f64 x x) 1/2))
(*.f64 (sqrt.f64 x) (+.f64 (pow.f64 x 3/2) (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (+.f64 x x)))
(*.f64 (/.f64 0 0) 1)
(*.f64 (/.f64 0 0) (/.f64 0 0))
(*.f64 (/.f64 0 0) (pow.f64 1 1/3))
(*.f64 (/.f64 0 0) (pow.f64 1 1/2))
(*.f64 0 (/.f64 1 0))
(*.f64 (*.f64 x (cbrt.f64 x)) (+.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 2)))
(*.f64 (pow.f64 x 3/2) (+.f64 (sqrt.f64 x) (sqrt.f64 x)))
(*.f64 2 (*.f64 x x))
(*.f64 2 (*.f64 (*.f64 x x) (/.f64 0 0)))
(*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 1 (+.f64 0 (pow.f64 x 4))))
(*.f64 (+.f64 x x) x)
(*.f64 (pow.f64 (cbrt.f64 x) 5) (+.f64 (cbrt.f64 x) (cbrt.f64 x)))
(*.f64 4 (pow.f64 x 4))
(*.f64 (cbrt.f64 2) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (pow.f64 1 1/3) (/.f64 0 0))
(*.f64 (pow.f64 1 1/2) (/.f64 0 0))
(*.f64 (pow.f64 2 1/2) x)
(*.f64 (*.f64 2 (sqrt.f64 x)) (pow.f64 x 3/2))
(*.f64 (*.f64 (/.f64 0 0) x) (+.f64 x x))
(*.f64 (*.f64 (/.f64 0 0) 2) (*.f64 x x))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (*.f64 x (cbrt.f64 x)))
(*.f64 (*.f64 2 (*.f64 x (cbrt.f64 x))) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (*.f64 2 (pow.f64 x 3/2)) (sqrt.f64 x))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 5)) (cbrt.f64 x))
(/.f64 1 (/.f64 0 0))
(/.f64 1 (/.f64 (+.f64 0 (pow.f64 x 4)) (*.f64 2 (pow.f64 x 6))))
(/.f64 0 0)
(/.f64 (*.f64 2 (pow.f64 x 6)) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (*.f64 2 (pow.f64 x 6))) (*.f64 (+.f64 0 (pow.f64 x 4)) (+.f64 0 (pow.f64 x 4))))
(/.f64 (cbrt.f64 (*.f64 2 (pow.f64 x 6))) (cbrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 6))) (sqrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (sqrt.f64 0) (sqrt.f64 0))
(/.f64 (neg.f64 (*.f64 2 (pow.f64 x 6))) (neg.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (*.f64 0 (*.f64 2 (pow.f64 x 6))) (*.f64 0 (+.f64 0 (pow.f64 x 4))))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 0) (*.f64 (+.f64 0 (pow.f64 x 4)) 0))
(/.f64 (-.f64 (pow.f64 (+.f64 1 (/.f64 0 0)) 3) 1) (+.f64 (*.f64 (+.f64 1 (/.f64 0 0)) (+.f64 1 (/.f64 0 0))) (+.f64 1 (+.f64 1 (/.f64 0 0)))))
(/.f64 (-.f64 (*.f64 (+.f64 1 (/.f64 0 0)) (+.f64 1 (/.f64 0 0))) 1) (+.f64 (+.f64 1 (/.f64 0 0)) 1))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 1) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 0 0)) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 0 (/.f64 0 0)) 0)
(/.f64 (*.f64 (/.f64 0 0) (*.f64 2 (pow.f64 x 6))) (+.f64 0 (pow.f64 x 4)))
(pow.f64 (/.f64 0 0) 1)
(pow.f64 (/.f64 0 0) 3)
(pow.f64 (/.f64 0 0) 1/3)
(pow.f64 (/.f64 0 0) 2)
(pow.f64 (/.f64 0 0) 1/2)
(pow.f64 (/.f64 0 0) 1/4)
(pow.f64 (/.f64 0 0) 1/9)
(pow.f64 (/.f64 0 0) 4)
(pow.f64 (/.f64 0 0) 9)
(pow.f64 (/.f64 0 0) 2/3)
(pow.f64 (/.f64 0 0) 6)
(pow.f64 (/.f64 0 0) 1/6)
(pow.f64 (/.f64 0 0) 3/2)
(pow.f64 (/.f64 0 0) 5/2)
(pow.f64 (/.f64 0 0) 5)
(pow.f64 (/.f64 0 0) 4/3)
(pow.f64 (E.f64) (log.f64 (/.f64 0 0)))
(pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 0 0)) 2))) (cbrt.f64 (log.f64 (/.f64 0 0))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 0 0)))) (sqrt.f64 (log.f64 (/.f64 0 0))))
(sqrt.f64 (/.f64 0 0))
(fabs.f64 (/.f64 0 0))
(fabs.f64 (neg.f64 (/.f64 0 0)))
(log.f64 (exp.f64 (/.f64 0 0)))
(cbrt.f64 (/.f64 0 0))
(expm1.f64 (log1p.f64 (/.f64 0 0)))
(log1p.f64 (expm1.f64 (/.f64 0 0)))
(exp.f64 (log.f64 (/.f64 0 0)))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/3))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 3))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/2))
(fma.f64 x x (*.f64 x x))
(fma.f64 1 (*.f64 x x) (*.f64 x x))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x (cbrt.f64 x)) (*.f64 x x))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 x x))
(fma.f64 (*.f64 x (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2) (*.f64 x x))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (*.f64 x x))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (*.f64 x x))
Outputs
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(+.f64 x x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(+.f64 x x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(+.f64 x x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(+.f64 x x)
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x (+.f64 x x))
(+.f64 (+.f64 1 (/.f64 0 0)) -1)
-2
(+.f64 0 (/.f64 0 0))
-2
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (/.f64 0 0)) 2))) (log.f64 (cbrt.f64 (exp.f64 (/.f64 0 0)))))
-2
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))))
-2
(+.f64 (*.f64 (*.f64 x x) (/.f64 0 0)) (*.f64 (*.f64 x x) (/.f64 0 0)))
(*.f64 x (+.f64 x x))
(+.f64 (*.f64 (/.f64 0 0) (*.f64 x x)) (*.f64 (/.f64 0 0) (*.f64 x x)))
(*.f64 x (+.f64 x x))
(-.f64 (+.f64 1 (/.f64 0 0)) 1)
-2
(-.f64 (/.f64 (pow.f64 x 4) 0) (/.f64 (pow.f64 x 4) 0))
-2
(*.f64 x (+.f64 x x))
(*.f64 x (*.f64 (+.f64 x x) 1))
(*.f64 x (+.f64 x x))
(*.f64 x (*.f64 (+.f64 x x) (/.f64 0 0)))
(*.f64 x (+.f64 x x))
(*.f64 1 (/.f64 0 0))
-2
(*.f64 (*.f64 x x) 2)
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 x x) (*.f64 (+.f64 x x) (+.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 x (+.f64 x x)))
(*.f64 (cbrt.f64 x) (cbrt.f64 (+.f64 x x)))
(*.f64 (cbrt.f64 x) (+.f64 (pow.f64 (cbrt.f64 x) 5) (pow.f64 (cbrt.f64 x) 5)))
(*.f64 (cbrt.f64 x) (*.f64 -2 (pow.f64 (cbrt.f64 x) 5)))
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 x x)))
(*.f64 (cbrt.f64 x) (*.f64 (+.f64 x x) (pow.f64 (cbrt.f64 x) -2)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 (*.f64 x (cbrt.f64 x)) (*.f64 x (cbrt.f64 x))))
(*.f64 (pow.f64 (cbrt.f64 x) -2) (*.f64 (+.f64 x x) (cbrt.f64 x)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (+.f64 x x)))
(*.f64 (pow.f64 (cbrt.f64 x) -2) (*.f64 (+.f64 x x) (cbrt.f64 x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 x) (pow.f64 (+.f64 x x) 1/2))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 x) (+.f64 (pow.f64 x 3/2) (pow.f64 x 3/2)))
(*.f64 -2 (*.f64 (sqrt.f64 x) (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (+.f64 x x)))
(*.f64 (sqrt.f64 x) (*.f64 (+.f64 x x) (sqrt.f64 x)))
(*.f64 (/.f64 0 0) 1)
-2
(*.f64 (/.f64 0 0) (/.f64 0 0))
-2
(*.f64 (/.f64 0 0) (pow.f64 1 1/3))
-2
(*.f64 (/.f64 0 0) (pow.f64 1 1/2))
-2
(*.f64 0 (/.f64 1 0))
-2
(*.f64 (*.f64 x (cbrt.f64 x)) (+.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 2)))
(*.f64 (pow.f64 (cbrt.f64 x) -2) (*.f64 (+.f64 x x) (cbrt.f64 x)))
(*.f64 (pow.f64 x 3/2) (+.f64 (sqrt.f64 x) (sqrt.f64 x)))
(*.f64 -2 (*.f64 (sqrt.f64 x) (pow.f64 x 3/2)))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (*.f64 (*.f64 x x) (/.f64 0 0)))
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 1 (+.f64 0 (pow.f64 x 4))))
-2
(*.f64 (+.f64 x x) x)
(*.f64 x (+.f64 x x))
(*.f64 (pow.f64 (cbrt.f64 x) 5) (+.f64 (cbrt.f64 x) (cbrt.f64 x)))
(*.f64 (cbrt.f64 x) (*.f64 -2 (pow.f64 (cbrt.f64 x) 5)))
(*.f64 4 (pow.f64 x 4))
-2
(*.f64 (cbrt.f64 2) (pow.f64 (cbrt.f64 x) 2))
(*.f64 -2 (pow.f64 (cbrt.f64 x) -2))
(*.f64 (sqrt.f64 2) x)
(+.f64 x x)
(*.f64 (pow.f64 1 1/3) (/.f64 0 0))
-2
(*.f64 (pow.f64 1 1/2) (/.f64 0 0))
-2
(*.f64 (pow.f64 2 1/2) x)
(+.f64 x x)
(*.f64 (*.f64 2 (sqrt.f64 x)) (pow.f64 x 3/2))
(*.f64 -2 (*.f64 (sqrt.f64 x) (pow.f64 x 3/2)))
(*.f64 (*.f64 (/.f64 0 0) x) (+.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 (/.f64 0 0) 2) (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (*.f64 x (cbrt.f64 x)))
(*.f64 (pow.f64 (cbrt.f64 x) -2) (*.f64 (+.f64 x x) (cbrt.f64 x)))
(*.f64 (*.f64 2 (*.f64 x (cbrt.f64 x))) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (pow.f64 (cbrt.f64 x) -2) (*.f64 (+.f64 x x) (cbrt.f64 x)))
(*.f64 (*.f64 2 (pow.f64 x 3/2)) (sqrt.f64 x))
(*.f64 -2 (*.f64 (sqrt.f64 x) (pow.f64 x 3/2)))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 5)) (cbrt.f64 x))
(*.f64 (cbrt.f64 x) (*.f64 -2 (pow.f64 (cbrt.f64 x) 5)))
(/.f64 1 (/.f64 0 0))
-2
(/.f64 1 (/.f64 (+.f64 0 (pow.f64 x 4)) (*.f64 2 (pow.f64 x 6))))
-2
(/.f64 0 0)
-2
(/.f64 (*.f64 2 (pow.f64 x 6)) (+.f64 0 (pow.f64 x 4)))
-2
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (*.f64 2 (pow.f64 x 6))) (*.f64 (+.f64 0 (pow.f64 x 4)) (+.f64 0 (pow.f64 x 4))))
-2
(/.f64 (cbrt.f64 (*.f64 2 (pow.f64 x 6))) (cbrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 -2 (cbrt.f64 (pow.f64 x -2)))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 6))) (sqrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 -2 (sqrt.f64 (pow.f64 x -2)))
(/.f64 (sqrt.f64 0) (sqrt.f64 0))
-2
(/.f64 (neg.f64 (*.f64 2 (pow.f64 x 6))) (neg.f64 (+.f64 0 (pow.f64 x 4))))
-2
(/.f64 (*.f64 0 (*.f64 2 (pow.f64 x 6))) (*.f64 0 (+.f64 0 (pow.f64 x 4))))
-2
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 0) (*.f64 (+.f64 0 (pow.f64 x 4)) 0))
-2
(/.f64 (-.f64 (pow.f64 (+.f64 1 (/.f64 0 0)) 3) 1) (+.f64 (*.f64 (+.f64 1 (/.f64 0 0)) (+.f64 1 (/.f64 0 0))) (+.f64 1 (+.f64 1 (/.f64 0 0)))))
-2
(/.f64 (-.f64 (*.f64 (+.f64 1 (/.f64 0 0)) (+.f64 1 (/.f64 0 0))) 1) (+.f64 (+.f64 1 (/.f64 0 0)) 1))
-2
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 1) (+.f64 0 (pow.f64 x 4)))
-2
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 0 0)) (+.f64 0 (pow.f64 x 4)))
-2
(/.f64 (*.f64 0 (/.f64 0 0)) 0)
-2
(/.f64 (*.f64 (/.f64 0 0) (*.f64 2 (pow.f64 x 6))) (+.f64 0 (pow.f64 x 4)))
-2
(pow.f64 (/.f64 0 0) 1)
-2
(pow.f64 (/.f64 0 0) 3)
-2
(pow.f64 (/.f64 0 0) 1/3)
-2
(pow.f64 (/.f64 0 0) 2)
-2
(pow.f64 (/.f64 0 0) 1/2)
-2
(pow.f64 (/.f64 0 0) 1/4)
-2
(pow.f64 (/.f64 0 0) 1/9)
-2
(pow.f64 (/.f64 0 0) 4)
-2
(pow.f64 (/.f64 0 0) 9)
-2
(pow.f64 (/.f64 0 0) 2/3)
-2
(pow.f64 (/.f64 0 0) 6)
-2
(pow.f64 (/.f64 0 0) 1/6)
-2
(pow.f64 (/.f64 0 0) 3/2)
-2
(pow.f64 (/.f64 0 0) 5/2)
-2
(pow.f64 (/.f64 0 0) 5)
-2
(pow.f64 (/.f64 0 0) 4/3)
-2
(pow.f64 (E.f64) (log.f64 (/.f64 0 0)))
-2
(pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 0 0)) 2))) (cbrt.f64 (log.f64 (/.f64 0 0))))
-2
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 0 0)))) (sqrt.f64 (log.f64 (/.f64 0 0))))
-2
(sqrt.f64 (/.f64 0 0))
-2
(fabs.f64 (/.f64 0 0))
-2
(fabs.f64 (neg.f64 (/.f64 0 0)))
-2
(log.f64 (exp.f64 (/.f64 0 0)))
-2
(cbrt.f64 (/.f64 0 0))
-2
(expm1.f64 (log1p.f64 (/.f64 0 0)))
-2
(log1p.f64 (expm1.f64 (/.f64 0 0)))
-2
(exp.f64 (log.f64 (/.f64 0 0)))
-2
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/3))
-2
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 3))
-2
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/2))
-2
(fma.f64 x x (*.f64 x x))
(*.f64 x (+.f64 x x))
(fma.f64 1 (*.f64 x x) (*.f64 x x))
(fma.f64 -2 (*.f64 x x) (*.f64 x x))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x (cbrt.f64 x)) (*.f64 x x))
(fma.f64 (pow.f64 (cbrt.f64 x) -2) (*.f64 x (cbrt.f64 x)) (*.f64 x x))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 x x))
(fma.f64 (*.f64 x (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2) (*.f64 x x))
(fma.f64 (*.f64 x (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) -2) (*.f64 x x))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (*.f64 x x))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (*.f64 x x))

eval19.0ms (0.6%)

Compiler

Compiled 1005 to 705 computations (29.9% saved)

prune45.0ms (1.5%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New1153118
Fresh000
Picked011
Done022
Total1156121
Error
0b
Counts
121 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(hypot.f64 x x)
56.6b
(+.f64 x x)
61.0b
(*.f64 (*.f64 x x) 2)
30.2b
(*.f64 (sqrt.f64 2) x)
31.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
63.0b
-2
Compiler

Compiled 28 to 19 computations (32.1% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 11 to 5 computations (54.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite35.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
423×pow1_binary64
409×add-sqr-sqrt_binary64
402×*-un-lft-identity_binary64
390×add-log-exp_binary64
390×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify61.0ms (2%)

Algorithm
egg-herbie
Rules
1248×log-prod_binary64
456×fma-neg_binary64
434×associate-*l*_binary64
389×associate-+l+_binary64
373×associate-*r*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
047220
1114205
2423205
33180205
47244205
Stop Event
node limit
Counts
28 → 22
Calls
Call 1
Inputs
(*.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))
(+.f64 (*.f64 x x) (*.f64 x x))
(+.f64 0 (*.f64 (*.f64 x x) 2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))))
(-.f64 (+.f64 1 (*.f64 (*.f64 x x) 2)) 1)
(pow.f64 (*.f64 (*.f64 x x) 2) 1)
(pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)
(pow.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) 2)) 3)
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(sqrt.f64 (*.f64 (pow.f64 x 4) 4))
(log.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))
(cbrt.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 3))
(expm1.f64 (log1p.f64 (*.f64 (*.f64 x x) 2)))
(log1p.f64 (expm1.f64 (*.f64 (*.f64 x x) 2)))
(exp.f64 (log.f64 (*.f64 (*.f64 x x) 2)))
Outputs
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(+.f64 0 (*.f64 (*.f64 x x) 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2)) 2)) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))) 3)
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(-.f64 (+.f64 1 (*.f64 (*.f64 x x) 2)) 1)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (*.f64 (*.f64 x x) 2) 1)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 3) 1/3)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x x) 2)) 3)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(sqrt.f64 (*.f64 (pow.f64 x 4) 4))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(log.f64 (pow.f64 (exp.f64 (*.f64 x x)) 2))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(cbrt.f64 (pow.f64 (*.f64 (*.f64 x x) 2) 3))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(expm1.f64 (log1p.f64 (*.f64 (*.f64 x x) 2)))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(log1p.f64 (expm1.f64 (*.f64 (*.f64 x x) 2)))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))
(exp.f64 (log.f64 (*.f64 (*.f64 x x) 2)))
(*.f64 2 (*.f64 x x))
(*.f64 x (+.f64 x x))

localize2.0ms (0.1%)

Compiler

Compiled 5 to 2 computations (60% saved)

eval4.0ms (0.1%)

Compiler

Compiled 193 to 118 computations (38.9% saved)

prune5.0ms (0.2%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New22022
Fresh011
Picked011
Done044
Total22628
Error
0b
Counts
28 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(hypot.f64 x x)
56.6b
(+.f64 x x)
61.0b
(*.f64 (*.f64 x x) 2)
30.2b
(*.f64 (sqrt.f64 2) x)
31.1b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
63.0b
-2
Compiler

Compiled 28 to 19 computations (32.1% saved)

regimes26.0ms (0.9%)

Counts
12 → 1
Calls
Call 1
Inputs
-2
(+.f64 x x)
(*.f64 (*.f64 x x) 2)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
Outputs
(hypot.f64 x x)
Calls

4 calls:

7.0ms
x
6.0ms
(pow.f64 x 2)
5.0ms
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
5.0ms
(*.f64 2 (pow.f64 x 2))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
0.0b1(*.f64 2 (pow.f64 x 2))
0.0b1(pow.f64 x 2)
Compiler

Compiled 80 to 59 computations (26.3% saved)

regimes4.0ms (0.1%)

Accuracy

Total -6.5b remaining (-11.5%)

Threshold costs -6.5b (-11.5%)

Counts
3 → 1
Calls
Call 1
Inputs
-2
(+.f64 x x)
(*.f64 (*.f64 x x) 2)
Outputs
(+.f64 x x)
Calls

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
56.6b1x
Compiler

Compiled 12 to 7 computations (41.7% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
059
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
(+.f64 x x)
-2
Outputs
(hypot.f64 x x)
(+.f64 x x)
-2
Compiler

Compiled 10 to 6 computations (40% saved)

soundness417.0ms (13.8%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
555×fabs-mul_binary64
547×fma-neg_binary64
523×pow-sqr_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
080438
1188438
2726438
32397438
47586438
035244
189211
2332178
31748178
44907178
57938128
Stop Event
node limit
node limit
node limit
Compiler

Compiled 799 to 657 computations (17.8% saved)

end19.0ms (0.6%)

Compiler

Compiled 8 to 4 computations (50% saved)

Profiling

Loading profile data...