Details

Time bar (total: 1.8s)

analyze0.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%25%75%0
25%0%75%1
Compiler

Compiled 17 to 9 computations (47.1% saved)

sample878.0ms (48%)

Results
866.0ms8252×body64valid
1.0msbody128valid

preprocess166.0ms (9.1%)

Algorithm
egg-herbie
Rules
1331×sqr-pow_binary64
715×pow-sqr_binary64
636×cube-prod_binary64
562×fabs-mul_binary64
362×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
1158
2318
3468
4718
51238
62398
76738
813648
914658
1015988
1117568
1219878
1323118
1427328
1532328
1638258
1745478
1848688
1951548
2053768
2155548
2256368
2365768
2475508
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Outputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(+.f64 (*.f64 x x) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
Compiler

Compiled 10 to 4 computations (60% saved)

simplify118.0ms (6.5%)

Algorithm
egg-herbie
Rules
1331×sqr-pow_binary64
715×pow-sqr_binary64
636×cube-prod_binary64
562×fabs-mul_binary64
362×unswap-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0510
1158
2318
3468
4718
51238
62398
76738
813648
914658
1015988
1117568
1219878
1323118
1427328
1532328
1638258
1745478
1848688
1951548
2053768
2155548
2256368
2365768
2475508
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Outputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(+.f64 (*.f64 x x) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))

prune2.0ms (0.1%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
0.0b
Counts
3 → 1
Alt Table
StatusErrorProgram
0.0b
(*.f64 x (fma.f64 x x x))
Compiler

Compiled 30 to 12 computations (60% saved)

localize3.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (fma.f64 x x x))

series3.0ms (0.2%)

Counts
1 → 12
Calls

3 calls:

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

rewrite36.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
378×pow1_binary64
361×add-sqr-sqrt_binary64
356×*-un-lft-identity_binary64
347×add-log-exp_binary64
347×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
048
1798
29498
Stop Event
node limit
Counts
1 → 27
Calls
Call 1
Inputs
(*.f64 x (fma.f64 x x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 x 3) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (fma.f64 x x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (fma.f64 x x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 x x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (pow.f64 x 3)) (exp.f64 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 x x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (pow.f64 x 3) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) x (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 3/2) (pow.f64 x 3/2) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (pow.f64 x 3)) (sqrt.f64 (pow.f64 x 3)) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x (cbrt.f64 x)) 2) (cbrt.f64 x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 5/2) (sqrt.f64 x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 x x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 6)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (hypot.f64 (pow.f64 x 3/2) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x x x))))))))

simplify116.0ms (6.3%)

Algorithm
egg-herbie
Rules
1262×fma-def_binary64
969×sqr-pow_binary64
536×unswap-sqr_binary64
502×cube-prod_binary64
460×fabs-mul_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
07102
12084
24484
38184
420784
584384
6254084
7329184
8358584
9390584
10431584
11483984
12550784
13623684
14681284
15714284
16741684
17758584
18767684
Stop Event
node limit
Counts
39 → 32
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))

prune35.0ms (1.9%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New31132
Fresh000
Picked011
Done000
Total31233
Error
0.0b
Counts
33 → 2
Alt Table
StatusErrorProgram
0.0b
(*.f64 x (fma.f64 x x x))
0.0b
(pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 2)
Compiler

Compiled 309 to 144 computations (53.4% saved)

localize7.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(hypot.f64 (pow.f64 x 3/2) x)
0.0b
(pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 2)

series11.0ms (0.6%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
3.0ms
x
@0
(pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 2)
3.0ms
x
@-inf
(pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 2)
2.0ms
x
@inf
(pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 2)
1.0ms
x
@inf
(hypot.f64 (pow.f64 x 3/2) x)
1.0ms
x
@-inf
(hypot.f64 (pow.f64 x 3/2) x)

rewrite44.0ms (2.4%)

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

Useful iterations: 0 (0.0ms)

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

simplify40.0ms (2.2%)

Algorithm
egg-herbie
Rules
581×associate-*l/_binary64
449×fma-def_binary64
405×unswap-sqr_binary64
268×associate-/l/_binary64
264×associate-+l+_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0111526
1304488
2921433
33840350
Stop Event
node limit
Counts
64 → 76
Calls
Call 1
Inputs
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (+.f64 (*.f64 (+.f64 (*.f64 5/64 (/.f64 1 (pow.f64 x 9))) (*.f64 -1 (+.f64 (pow.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 (pow.f64 x 9)))) 2) (*.f64 1/16 (/.f64 1 (pow.f64 x 9)))))) (pow.f64 x 8)) (pow.f64 x 3)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (*.f64 1/16 (pow.f64 x 6)) (+.f64 (*.f64 1/64 (pow.f64 x 6)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 1/16 (pow.f64 x 12)) (pow.f64 (*.f64 -1/8 (pow.f64 x 6)) 2)) (pow.f64 x 6))) (+.f64 (pow.f64 x 2) (pow.f64 x 3)))))
(pow.f64 x 2)
(+.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) (pow.f64 x 2))
(+.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) (+.f64 (*.f64 -1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))) (+.f64 (pow.f64 x 2) (*.f64 1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))))))
(+.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) (+.f64 (*.f64 -1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 6) (pow.f64 x 4))) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))) (*.f64 1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 6) (pow.f64 x 4))))))))
(sqrt.f64 (pow.f64 x 3))
(+.f64 (*.f64 1/2 (sqrt.f64 x)) (sqrt.f64 (pow.f64 x 3)))
(+.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 x))) (+.f64 (*.f64 1/2 (sqrt.f64 x)) (sqrt.f64 (pow.f64 x 3))))
(+.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 x))) (+.f64 (*.f64 1/2 (sqrt.f64 x)) (+.f64 (*.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 3)))) (sqrt.f64 (pow.f64 x 3)))))
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(+.f64 (*.f64 -1/8 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/16 (pow.f64 x 4)) (+.f64 (*.f64 -1/8 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)))
(*.f64 -1 x)
(+.f64 (*.f64 -1/2 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) x)) (*.f64 -1 x))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 3))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) x)) (*.f64 -1 x)))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 3))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 6) (pow.f64 x 5))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) x)) (*.f64 -1 x))))
Outputs
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (+.f64 (*.f64 (+.f64 (*.f64 5/64 (/.f64 1 (pow.f64 x 9))) (*.f64 -1 (+.f64 (pow.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 (pow.f64 x 9)))) 2) (*.f64 1/16 (/.f64 1 (pow.f64 x 9)))))) (pow.f64 x 8)) (pow.f64 x 3)))
(+.f64 (*.f64 x x) (fma.f64 (+.f64 (/.f64 5/64 (pow.f64 x 9)) (neg.f64 (+.f64 (pow.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 (pow.f64 x 9)))) 2) (/.f64 1/16 (pow.f64 x 9))))) (pow.f64 x 8) (pow.f64 x 3)))
(fma.f64 x x (fma.f64 (-.f64 (/.f64 5/64 (pow.f64 x 9)) (+.f64 (pow.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 (pow.f64 x 9)))) 2) (/.f64 1/16 (pow.f64 x 9)))) (pow.f64 x 8) (pow.f64 x 3)))
(fma.f64 (+.f64 (*.f64 (/.f64 1 (pow.f64 x 9)) 1/64) (*.f64 (/.f64 1 (pow.f64 x 9)) -1/64)) (pow.f64 x 8) (*.f64 x (fma.f64 x x x)))
(fma.f64 (*.f64 (/.f64 1 (pow.f64 x 9)) 0) (pow.f64 x 8) (*.f64 x (fma.f64 x x x)))
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (*.f64 1/16 (pow.f64 x 6)) (+.f64 (*.f64 1/64 (pow.f64 x 6)) (+.f64 (*.f64 -1 (/.f64 (+.f64 (*.f64 1/16 (pow.f64 x 12)) (pow.f64 (*.f64 -1/8 (pow.f64 x 6)) 2)) (pow.f64 x 6))) (+.f64 (pow.f64 x 2) (pow.f64 x 3)))))
(fma.f64 1/16 (pow.f64 x 6) (fma.f64 1/64 (pow.f64 x 6) (fma.f64 -1 (/.f64 (fma.f64 1/16 (pow.f64 x 12) (pow.f64 (*.f64 -1/8 (pow.f64 x 6)) 2)) (pow.f64 x 6)) (+.f64 (pow.f64 x 3) (*.f64 x x)))))
(+.f64 (-.f64 (fma.f64 x x (pow.f64 x 3)) (/.f64 (fma.f64 1/16 (pow.f64 x 12) (*.f64 1/64 (pow.f64 x 12))) (pow.f64 x 6))) (*.f64 (pow.f64 x 6) 5/64))
(-.f64 (fma.f64 (pow.f64 x 6) 5/64 (*.f64 x (fma.f64 x x x))) (/.f64 (*.f64 (pow.f64 x 12) 5/64) (pow.f64 x 6)))
(fma.f64 (pow.f64 x 6) 5/64 (fma.f64 x (fma.f64 x x x) (/.f64 (*.f64 (pow.f64 x 12) -5/64) (pow.f64 x 6))))
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) (pow.f64 x 2))
(+.f64 (*.f64 x x) (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 2))
(fma.f64 x x (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 2))
(fma.f64 x x (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 2))
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
(+.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) (+.f64 (*.f64 -1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))) (+.f64 (pow.f64 x 2) (*.f64 1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))))))
(+.f64 (*.f64 x x) (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 2))
(fma.f64 x x (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 2))
(fma.f64 x x (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 2))
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
(+.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) (+.f64 (*.f64 -1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 6) (pow.f64 x 4))) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 2))) (*.f64 1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 6) (pow.f64 x 4))))))))
(+.f64 (*.f64 x x) (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 2))
(fma.f64 x x (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 2))
(fma.f64 x x (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 2))
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
(sqrt.f64 (pow.f64 x 3))
(pow.f64 x 3/2)
(+.f64 (*.f64 1/2 (sqrt.f64 x)) (sqrt.f64 (pow.f64 x 3)))
(fma.f64 1/2 (sqrt.f64 x) (sqrt.f64 (pow.f64 x 3)))
(fma.f64 1/2 (sqrt.f64 x) (pow.f64 x 3/2))
(+.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 x))) (+.f64 (*.f64 1/2 (sqrt.f64 x)) (sqrt.f64 (pow.f64 x 3))))
(fma.f64 -1/8 (sqrt.f64 (/.f64 1 x)) (fma.f64 1/2 (sqrt.f64 x) (sqrt.f64 (pow.f64 x 3))))
(fma.f64 -1/8 (sqrt.f64 (/.f64 1 x)) (fma.f64 1/2 (sqrt.f64 x) (pow.f64 x 3/2)))
(+.f64 (*.f64 -1/8 (sqrt.f64 (/.f64 1 x))) (+.f64 (*.f64 1/2 (sqrt.f64 x)) (+.f64 (*.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 3)))) (sqrt.f64 (pow.f64 x 3)))))
(fma.f64 -1/8 (sqrt.f64 (/.f64 1 x)) (fma.f64 1/2 (sqrt.f64 x) (fma.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (sqrt.f64 (pow.f64 x 3)))))
(fma.f64 -1/8 (sqrt.f64 (/.f64 1 x)) (fma.f64 1/16 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (fma.f64 1/2 (sqrt.f64 x) (pow.f64 x 3/2))))
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(fma.f64 1/2 (*.f64 x x) x)
(fma.f64 (*.f64 x x) 1/2 x)
(fma.f64 x (*.f64 x 1/2) x)
(+.f64 (*.f64 -1/8 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(fma.f64 -1/8 (pow.f64 x 3) (fma.f64 1/2 (*.f64 x x) x))
(fma.f64 (pow.f64 x 3) -1/8 (fma.f64 (*.f64 x x) 1/2 x))
(fma.f64 x (*.f64 x 1/2) (fma.f64 (pow.f64 x 3) -1/8 x))
(+.f64 (*.f64 1/16 (pow.f64 x 4)) (+.f64 (*.f64 -1/8 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)))
(fma.f64 1/16 (pow.f64 x 4) (fma.f64 -1/8 (pow.f64 x 3) (fma.f64 1/2 (*.f64 x x) x)))
(fma.f64 1/16 (pow.f64 x 4) (fma.f64 (pow.f64 x 3) -1/8 (fma.f64 (*.f64 x x) 1/2 x)))
(fma.f64 (pow.f64 x 3) -1/8 (fma.f64 1/16 (pow.f64 x 4) (fma.f64 (*.f64 x x) 1/2 x)))
(fma.f64 (pow.f64 x 3) -1/8 (fma.f64 1/16 (pow.f64 x 4) (fma.f64 x (*.f64 x 1/2) x)))
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 -1/2 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) x)) (*.f64 -1 x))
(fma.f64 -1/2 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 2) x) (neg.f64 x))
(-.f64 (*.f64 -1/2 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 2) x)) x)
(-.f64 (*.f64 (/.f64 -1/2 x) (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 2)) x)
(-.f64 (*.f64 (/.f64 -1/2 x) (pow.f64 (exp.f64 (log.f64 x)) 3)) x)
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 3))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) x)) (*.f64 -1 x)))
(fma.f64 1/8 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 4) (pow.f64 x 3)) (fma.f64 -1/2 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 2) x) (neg.f64 x)))
(-.f64 (fma.f64 1/8 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 4) (pow.f64 x 3)) (*.f64 -1/2 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 2) x))) x)
(-.f64 (fma.f64 1/8 (/.f64 (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 4) (pow.f64 x 3)) (*.f64 (/.f64 -1/2 x) (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 2))) x)
(fma.f64 1/8 (/.f64 (pow.f64 (exp.f64 (log.f64 x)) 6) (pow.f64 x 3)) (-.f64 (*.f64 (/.f64 -1/2 x) (pow.f64 (exp.f64 (log.f64 x)) 3)) x))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 4) (pow.f64 x 3))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 6) (pow.f64 x 5))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 (exp.f64 (*.f64 3/2 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))) 2) x)) (*.f64 -1 x))))
(fma.f64 1/8 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 4) (pow.f64 x 3)) (fma.f64 -1/16 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 6) (pow.f64 x 5)) (fma.f64 -1/2 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 -1))) 2) x) (neg.f64 x))))
(fma.f64 1/8 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 4) (pow.f64 x 3)) (fma.f64 -1/16 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 6) (pow.f64 x 5)) (-.f64 (*.f64 -1/2 (/.f64 (pow.f64 (pow.f64 (exp.f64 3/2) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 x)))) 2) x)) x)))
(fma.f64 1/8 (/.f64 (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 4) (pow.f64 x 3)) (fma.f64 -1/2 (/.f64 (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 2) x) (-.f64 (*.f64 (/.f64 -1/16 (pow.f64 x 5)) (pow.f64 (*.f64 (pow.f64 (/.f64 -1 x) -3/2) (pow.f64 -1 3/2)) 6)) x)))
(-.f64 (fma.f64 1/8 (/.f64 (pow.f64 (exp.f64 (log.f64 x)) 6) (pow.f64 x 3)) (fma.f64 -1/2 (/.f64 (pow.f64 (exp.f64 (log.f64 x)) 3) x) (*.f64 (/.f64 -1/16 (pow.f64 x 5)) (pow.f64 (pow.f64 (exp.f64 3/2) (log.f64 x)) 6)))) x)

prune122.0ms (6.7%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New75176
Fresh000
Picked101
Done101
Total77178
Error
0b
Counts
78 → 1
Alt Table
StatusErrorProgram
0b
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
Compiler

Compiled 1268 to 936 computations (26.2% saved)

localize8.0ms (0.5%)

Local error

Found 1 expressions with local error:

NewErrorProgram
5.7b
(exp.f64 (log.f64 x))

series1.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite79.0ms (4.3%)

Algorithm
batch-egg-rewrite
Rules
479×fma-neg_binary64
374×expm1-udef_binary64
374×log1p-udef_binary64
257×associate-*r*_binary64
246×pow1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
041
1631
26351
366711
Stop Event
node limit
Counts
1 → 60
Calls
Call 1
Inputs
(exp.f64 (log.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 x))) (log.f64 (sqrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) 2))) (log.f64 (cbrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (pow.f64 (cbrt.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (*.f64 (cbrt.f64 (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (cbrt.f64 x))) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/4) (sqrt.f64 (pow.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/4) (*.f64 (pow.f64 x 1/4) (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/6) (*.f64 (pow.f64 x 1/6) (pow.f64 (cbrt.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 x) (pow.f64 x 1/4)) (pow.f64 x 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 x 5/2)) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (pow.f64 (cbrt.f64 x) 5))) (cbrt.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 x) 5)) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 x 3/2)) (pow.f64 x 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (pow.f64 (cbrt.f64 x) 5)) 1/3) (cbrt.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 x 5/2) 1/3) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (E.f64) (log.f64 (sqrt.f64 x))) (pow.f64 (E.f64) (log.f64 (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (E.f64) (*.f64 2 (log.f64 (cbrt.f64 x)))) (pow.f64 (E.f64) (log.f64 (cbrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 x) (cbrt.f64 x)) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 x (cbrt.f64 x)))) (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 x 1/6)) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2)) (cbrt.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (exp.f64 (+.f64 (log.f64 x) 1)) (E.f64))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (E.f64) (+.f64 (log.f64 x) 1)) (E.f64))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 x 1) 3) 1) (+.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) (+.f64 1 (+.f64 x 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (+.f64 x -1) 3)) (+.f64 1 (-.f64 (pow.f64 (+.f64 x -1) 2) (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (+.f64 x 1) (+.f64 x 1) -1) (+.f64 (+.f64 x 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (+.f64 x -1) 2)) (-.f64 1 (+.f64 x -1)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 x 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x x) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 x) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cbrt.f64 (log.f64 x))) (pow.f64 (cbrt.f64 (log.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (log.f64 x))) 2)) (cbrt.f64 (cbrt.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (pow.f64 (log.f64 x) 1/6)) (pow.f64 (log.f64 x) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 x))) (cbrt.f64 (log.f64 x))) (pow.f64 (log.f64 x) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 x))) (pow.f64 (log.f64 x) 1/4)) (pow.f64 (log.f64 x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 x)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x . x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 x 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 x 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (+.f64 x 1)) (cbrt.f64 (+.f64 x 1))) (cbrt.f64 (+.f64 x 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 x 1)) (sqrt.f64 (+.f64 x 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 x))))))

simplify6.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0112
Stop Event
saturated
Counts
72 → 61
Calls
Call 1
Inputs
x
x
x
x
x
x
x
x
x
x
x
x
Outputs
x
x
x
x
x
x
x
x
x
x
x
x

prune128.0ms (7%)

Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New61061
Fresh000
Picked011
Done000
Total61162
Error
0b
Counts
62 → 1
Alt Table
StatusErrorProgram
0b
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
Compiler

Compiled 839 to 500 computations (40.4% saved)

regimes6.0ms (0.4%)

Accuracy

Total -0.0b remaining (-∞%)

Threshold costs -0.0b (-∞%)

Counts
4 → 1
Calls
Call 1
Inputs
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
(pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 2)
(*.f64 x (fma.f64 x x x))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Outputs
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
Results
3.0ms0bx
2.0ms0b(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 43 to 21 computations (51.2% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))
Outputs
(fma.f64 x x (pow.f64 (exp.f64 (log.f64 x)) 3))

end18.0ms (1%)

Stop Event
done
Compiler

Compiled 18 to 12 computations (33.3% saved)

Profiling

Loading profile data...