Details

Time bar (total: 6.9s)

analyze5.0ms (0.1%)

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
0%0%50%0%25%25%0%3
50%25%25%0%25%25%0%4
75%37.5%12.5%0%25%25%0%5
87.5%43.7%6.2%0%25%25%0%6
93.8%46.9%3.1%0%25%25%0%7
96.9%48.4%1.6%0%25%25%0%8
98.4%49.2%0.8%0%25%25%0%9
99.2%49.6%0.4%0%25%25%0%10
99.6%49.8%0.2%0%25%25%0%11
99.8%49.9%0.1%0%25%25%0%12
Compiler

Compiled 14 to 12 computations (14.3% saved)

sample4.2s (60.3%)

Results
2.7s4140×body1024valid
820.0ms2091×body512valid
374.0ms435×body2048valid
297.0ms1590×body256valid
1.0msbody256invalid
Bogosity

preprocess298.0ms (4.3%)

Algorithm
egg-herbie
Rules
781×fma-neg_binary64
596×distribute-rgt-in_binary64
596×unsub-neg_binary64
511×fma-def_binary64
419×distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01115
12013
22813
34313
47313
510913
615313
727213
859113
9104213
10148113
11187713
12208113
13222313
14256913
15371213
16495013
17572613
18600813
19610413
20622413
21626213
22668613
23712813
24743613
25754413
26759213
27761213
28762013
29762013
30762013
31798013
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
Outputs
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
(*.f64 1/2 (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
Compiler

Compiled 14 to 12 computations (14.3% saved)

simplify294.0ms (4.2%)

Algorithm
egg-herbie
Rules
781×fma-neg_binary64
596×distribute-rgt-in_binary64
596×unsub-neg_binary64
511×fma-def_binary64
419×distribute-lft-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01115
12013
22813
34313
47313
510913
615313
727213
859113
9104213
10148113
11187713
12208113
13222313
14256913
15371213
16495013
17572613
18600813
19610413
20622413
21626213
22668613
23712813
24743613
25754413
26759213
27761213
28762013
29762013
30762013
31798013
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
Outputs
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
(*.f64 1/2 (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))

eval1.0ms (0%)

Compiler

Compiled 21 to 17 computations (19% saved)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
58.6b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
Compiler

Compiled 22 to 18 computations (18.2% saved)

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))
Compiler

Compiled 24 to 8 computations (66.7% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
2.0ms
x
@0
(-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))
1.0ms
x
@inf
(-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))
1.0ms
x
@-inf
(-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))

rewrite47.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
519×pow1_binary64
484×add-log-exp_binary64
484×expm1-log1p-u_binary64
482×log1p-expm1-u_binary64
475×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0610
11308
218658
Stop Event
node limit
Counts
1 → 35
Calls
Call 1
Inputs
(-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log1p.f64 x) (neg.f64 (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log1p.f64 x) (*.f64 (neg.f64 (log1p.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) (fma.f64 (neg.f64 (log1p.f64 x)) 1 (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) (fma.f64 (neg.f64 (cbrt.f64 (log1p.f64 x))) (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) (fma.f64 (neg.f64 (sqrt.f64 (log1p.f64 x))) (sqrt.f64 (log1p.f64 x)) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (log1p.f64 x)) (log1p.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log1p.f64 x) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))) (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))) 2) (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))) (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (log1p.f64 x) 3) (pow.f64 (log1p.f64 x) 3)) (/.f64 1 (+.f64 (pow.f64 (log1p.f64 x) 2) (*.f64 (log1p.f64 x) (+.f64 (log1p.f64 x) (log1p.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (log1p.f64 x) 2) (pow.f64 (log1p.f64 x) 2)) (/.f64 1 (+.f64 (log1p.f64 x) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x))) (-.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (log1p.f64 x) 2) (*.f64 (log1p.f64 x) (+.f64 (log1p.f64 x) (log1p.f64 x)))) (-.f64 (pow.f64 (log1p.f64 x) 3) (pow.f64 (log1p.f64 x) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (log1p.f64 x) (log1p.f64 x)) (-.f64 (pow.f64 (log1p.f64 x) 2) (pow.f64 (log1p.f64 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log1p.f64 x) 3) (pow.f64 (log1p.f64 x) 3)) (+.f64 (pow.f64 (log1p.f64 x) 2) (*.f64 (log1p.f64 x) (+.f64 (log1p.f64 x) (log1p.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log1p.f64 x) 2) (pow.f64 (log1p.f64 x) 2)) (+.f64 (log1p.f64 x) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (log1p.f64 x) 3) (pow.f64 (log1p.f64 x) 3))) (neg.f64 (+.f64 (pow.f64 (log1p.f64 x) 2) (*.f64 (log1p.f64 x) (+.f64 (log1p.f64 x) (log1p.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (log1p.f64 x) 2) (pow.f64 (log1p.f64 x) 2))) (neg.f64 (+.f64 (log1p.f64 x) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (log1p.f64 x) 3) (pow.f64 (neg.f64 (log1p.f64 x)) 3)) (+.f64 (pow.f64 (log1p.f64 x) 2) (-.f64 (*.f64 (neg.f64 (log1p.f64 x)) (neg.f64 (log1p.f64 x))) (*.f64 (log1p.f64 x) (neg.f64 (log1p.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log1p.f64 x) 2) (*.f64 (neg.f64 (log1p.f64 x)) (neg.f64 (log1p.f64 x)))) (-.f64 (log1p.f64 x) (neg.f64 (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 x 1) (+.f64 x 1)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (log1p.f64 x) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log1p.f64 x) (neg.f64 (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)) (neg.f64 (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)) (neg.f64 (log1p.f64 x)))))))

simplify58.0ms (0.8%)

Algorithm
egg-herbie
Rules
829×fma-def_binary64
624×unswap-sqr_binary64
565×associate-/r*_binary64
503×associate-/l/_binary64
384×times-frac_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
040177
1109174
2258174
3593174
41163174
52767174
67370174
Stop Event
node limit
Counts
47 → 57
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5))))
(+.f64 (*.f64 2/7 (pow.f64 x 7)) (+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5)))))
(*.f64 -1 (log.f64 -1))
(+.f64 (*.f64 -1 (log.f64 -1)) (*.f64 2 (/.f64 1 x)))
(+.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 x))))
(+.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
(log.f64 -1)
(+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
Outputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5))))
(fma.f64 2 x (fma.f64 2/3 (pow.f64 x 3) (*.f64 2/5 (pow.f64 x 5))))
(fma.f64 2/3 (pow.f64 x 3) (fma.f64 2 x (*.f64 2/5 (pow.f64 x 5))))
(fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) (*.f64 2/5 (pow.f64 x 5)))
(+.f64 (*.f64 2/7 (pow.f64 x 7)) (+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5)))))
(fma.f64 2/7 (pow.f64 x 7) (fma.f64 2 x (fma.f64 2/3 (pow.f64 x 3) (*.f64 2/5 (pow.f64 x 5)))))
(fma.f64 2 x (fma.f64 2/7 (pow.f64 x 7) (fma.f64 2/3 (pow.f64 x 3) (*.f64 2/5 (pow.f64 x 5)))))
(fma.f64 2/3 (pow.f64 x 3) (fma.f64 2/5 (pow.f64 x 5) (fma.f64 2/7 (pow.f64 x 7) (*.f64 2 x))))
(fma.f64 2 x (fma.f64 2/3 (pow.f64 x 3) (fma.f64 2/5 (pow.f64 x 5) (*.f64 2/7 (pow.f64 x 7)))))
(*.f64 -1 (log.f64 -1))
(neg.f64 (log.f64 -1))
(+.f64 (*.f64 -1 (log.f64 -1)) (*.f64 2 (/.f64 1 x)))
(fma.f64 -1 (log.f64 -1) (/.f64 2 x))
(-.f64 (/.f64 2 x) (log.f64 -1))
(+.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 x))))
(fma.f64 -1 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (-.f64 (/.f64 2 x) (log.f64 -1)) (/.f64 2/3 (pow.f64 x 3)))
(+.f64 (/.f64 2 x) (-.f64 (/.f64 2/3 (pow.f64 x 3)) (log.f64 -1)))
(+.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
(fma.f64 -1 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (/.f64 2 x) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (+.f64 (-.f64 (/.f64 2 x) (log.f64 -1)) (/.f64 2/3 (pow.f64 x 3))) (/.f64 2/5 (pow.f64 x 5)))
(+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (/.f64 2 x) (-.f64 (/.f64 2/5 (pow.f64 x 5)) (log.f64 -1))))
(-.f64 (/.f64 2 x) (-.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 x 3))) (/.f64 2/5 (pow.f64 x 5))))
(+.f64 (-.f64 (/.f64 2 x) (log.f64 -1)) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.f64 2/5 (pow.f64 x 5))))
(+.f64 (/.f64 2 x) (-.f64 (-.f64 (/.f64 2/3 (pow.f64 x 3)) (log.f64 -1)) (/.f64 -2/5 (pow.f64 x 5))))
(log.f64 -1)
(+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(+.f64 (log.f64 -1) (/.f64 2 x))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (log.f64 -1) (/.f64 2 x)))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (/.f64 2 x) (+.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
(+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (log.f64 -1) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (/.f64 2 x) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (log.f64 -1) (+.f64 (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3))) (/.f64 2/5 (pow.f64 x 5))))
(+.f64 (/.f64 2/5 (pow.f64 x 5)) (+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3)))))
(+.f64 (/.f64 2/3 (pow.f64 x 3)) (-.f64 (+.f64 (log.f64 -1) (/.f64 2 x)) (/.f64 -2/5 (pow.f64 x 5))))

localize20.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (+.f64 1 x) (-.f64 1 x))
4.8b
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
Compiler

Compiled 40 to 31 computations (22.5% saved)

series3.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
0.0ms
x
@inf
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
0.0ms
x
@-inf
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
0.0ms
x
@inf
(/.f64 (+.f64 1 x) (-.f64 1 x))
0.0ms
x
@0
(/.f64 (+.f64 1 x) (-.f64 1 x))

rewrite57.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
843×pow1_binary64
786×log1p-expm1-u_binary64
786×expm1-log1p-u_binary64
785×add-log-exp_binary64
771×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0722
115120
2207920
Stop Event
node limit
Counts
2 → 62
Calls
Call 1
Inputs
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
(/.f64 (+.f64 1 x) (-.f64 1 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log1p.f64 x) (neg.f64 (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (log.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2)) (log.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (+.f64 (neg.f64 x) -1)) (log.f64 (neg.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2) (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log1p.f64 x) 3) (pow.f64 (log1p.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (log1p.f64 x) (log1p.f64 x)) (+.f64 (*.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 (neg.f64 x))) (*.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (log1p.f64 x) (log1p.f64 x)) (*.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 (neg.f64 x)))) (+.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 x) (/.f64 1 (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) (pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (*.f64 (cbrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 x)) (*.f64 (sqrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (neg.f64 x) -1) (/.f64 1 (neg.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 1 x)) (+.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) 1) (/.f64 (cbrt.f64 (+.f64 1 x)) (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) 1) (/.f64 (sqrt.f64 (+.f64 1 x)) (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (-.f64 1 x)) 2)) (/.f64 (+.f64 1 x) (cbrt.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (pow.f64 (cbrt.f64 (-.f64 1 x)) 2)) (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) (pow.f64 (cbrt.f64 (-.f64 1 x)) 2)) (/.f64 (sqrt.f64 (+.f64 1 x)) (cbrt.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (-.f64 1 x))) (/.f64 (+.f64 1 x) (sqrt.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (sqrt.f64 (-.f64 1 x))) (/.f64 (cbrt.f64 (+.f64 1 x)) (sqrt.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 1 x) (-.f64 1 (*.f64 x x))) (+.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 1 x) (-.f64 1 (pow.f64 x 3))) (+.f64 1 (fma.f64 x x x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)) (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (+.f64 1 x) (neg.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (+.f64 1 x) 3) (pow.f64 (-.f64 1 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))

simplify52.0ms (0.7%)

Algorithm
egg-herbie
Rules
843×fma-def_binary64
834×fma-neg_binary64
586×associate-/r*_binary64
560×times-frac_binary64
548×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
052319
1154307
2437301
31298298
43752294
Stop Event
node limit
Counts
86 → 90
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5))))
(+.f64 (*.f64 2/7 (pow.f64 x 7)) (+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5)))))
(log.f64 -1)
(+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
(log.f64 -1)
(+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
1
(+.f64 (*.f64 2 x) 1)
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 1))
(+.f64 (*.f64 2 (pow.f64 x 3)) (+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 1)))
-1
(neg.f64 (+.f64 1 (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 (pow.f64 x 3)))))))
-1
(neg.f64 (+.f64 1 (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 (pow.f64 x 3)))))))
Outputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5))))
(fma.f64 2 x (fma.f64 2/3 (pow.f64 x 3) (*.f64 2/5 (pow.f64 x 5))))
(fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) (*.f64 2/5 (pow.f64 x 5)))
(+.f64 (*.f64 2/7 (pow.f64 x 7)) (+.f64 (*.f64 2 x) (+.f64 (*.f64 2/3 (pow.f64 x 3)) (*.f64 2/5 (pow.f64 x 5)))))
(fma.f64 2/7 (pow.f64 x 7) (fma.f64 2 x (fma.f64 2/3 (pow.f64 x 3) (*.f64 2/5 (pow.f64 x 5)))))
(fma.f64 2 x (fma.f64 2/7 (pow.f64 x 7) (fma.f64 2/3 (pow.f64 x 3) (*.f64 2/5 (pow.f64 x 5)))))
(fma.f64 2 x (fma.f64 2/3 (pow.f64 x 3) (fma.f64 2/5 (pow.f64 x 5) (*.f64 2/7 (pow.f64 x 7)))))
(log.f64 -1)
(+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(+.f64 (log.f64 -1) (/.f64 2 x))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 2 x)) (/.f64 2/3 (pow.f64 x 3)))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
(+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 2 x)) (+.f64 (/.f64 2/5 (pow.f64 x 5)) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2/5 (pow.f64 x 5)) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3)))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (/.f64 2 x) (/.f64 2/5 (pow.f64 x 5)))))
(log.f64 -1)
(+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(+.f64 (log.f64 -1) (/.f64 2 x))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 2 x)) (/.f64 2/3 (pow.f64 x 3)))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2/5 (/.f64 1 (pow.f64 x 5))))))
(+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 2 x)) (+.f64 (/.f64 2/5 (pow.f64 x 5)) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2/5 (pow.f64 x 5)) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3)))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (+.f64 (/.f64 2 x) (/.f64 2/5 (pow.f64 x 5)))))
1
(+.f64 (*.f64 2 x) 1)
(fma.f64 2 x 1)
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 1))
(fma.f64 2 (*.f64 x x) (fma.f64 2 x 1))
(fma.f64 2 (fma.f64 x x x) 1)
(+.f64 (*.f64 2 (pow.f64 x 3)) (+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 1)))
(fma.f64 2 (pow.f64 x 3) (fma.f64 2 (*.f64 x x) (fma.f64 2 x 1)))
(fma.f64 2 (pow.f64 x 3) (fma.f64 2 (fma.f64 x x x) 1))
(fma.f64 2 (fma.f64 x (fma.f64 x x x) x) 1)
-1
(neg.f64 (+.f64 1 (*.f64 2 (/.f64 1 x))))
(+.f64 -1 (neg.f64 (/.f64 2 x)))
(+.f64 -1 (/.f64 -2 x))
(-.f64 -1 (/.f64 2 x))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(+.f64 -1 (neg.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x)))))
(-.f64 -1 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))))
(+.f64 -1 (+.f64 (/.f64 -2 x) (/.f64 (/.f64 -2 x) x)))
(+.f64 -1 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))))
(+.f64 (/.f64 -2 x) (-.f64 -1 (/.f64 (/.f64 2 x) x)))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 (pow.f64 x 3)))))))
(neg.f64 (+.f64 1 (+.f64 (/.f64 2 x) (+.f64 (/.f64 2 (*.f64 x x)) (/.f64 2 (pow.f64 x 3))))))
(-.f64 -1 (+.f64 (/.f64 2 (*.f64 x x)) (+.f64 (/.f64 2 x) (/.f64 2 (pow.f64 x 3)))))
(+.f64 (+.f64 -1 (/.f64 -2 x)) (+.f64 (/.f64 (/.f64 -2 x) x) (/.f64 -2 (pow.f64 x 3))))
(+.f64 (+.f64 -1 (/.f64 -2 x)) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3))))
(-.f64 (/.f64 -2 x) (fma.f64 (/.f64 1 (*.f64 x x)) (+.f64 2 (/.f64 2 x)) 1))
-1
(neg.f64 (+.f64 1 (*.f64 2 (/.f64 1 x))))
(+.f64 -1 (neg.f64 (/.f64 2 x)))
(+.f64 -1 (/.f64 -2 x))
(-.f64 -1 (/.f64 2 x))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(+.f64 -1 (neg.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x)))))
(-.f64 -1 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))))
(+.f64 -1 (+.f64 (/.f64 -2 x) (/.f64 (/.f64 -2 x) x)))
(+.f64 -1 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))))
(+.f64 (/.f64 -2 x) (-.f64 -1 (/.f64 (/.f64 2 x) x)))
(neg.f64 (+.f64 1 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 (pow.f64 x 3)))))))
(neg.f64 (+.f64 1 (+.f64 (/.f64 2 x) (+.f64 (/.f64 2 (*.f64 x x)) (/.f64 2 (pow.f64 x 3))))))
(-.f64 -1 (+.f64 (/.f64 2 (*.f64 x x)) (+.f64 (/.f64 2 x) (/.f64 2 (pow.f64 x 3)))))
(+.f64 (+.f64 -1 (/.f64 -2 x)) (+.f64 (/.f64 (/.f64 -2 x) x) (/.f64 -2 (pow.f64 x 3))))
(+.f64 (+.f64 -1 (/.f64 -2 x)) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3))))
(-.f64 (/.f64 -2 x) (fma.f64 (/.f64 1 (*.f64 x x)) (+.f64 2 (/.f64 2 x)) 1))

eval71.0ms (1%)

Compiler

Compiled 2331 to 1600 computations (31.4% saved)

prune23.0ms (0.3%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New1443147
Fresh000
Picked011
Done011
Total1445149
Error
0b
Counts
149 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
58.6b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0.2b
(*.f64 1/2 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)))
0.2b
(*.f64 1/2 (+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3))))
0.5b
(*.f64 1/2 (*.f64 2 x))
Compiler

Compiled 51 to 41 computations (19.6% saved)

localize72.0ms (1%)

Compiler

Compiled 12 to 9 computations (25% saved)

localize14.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
Compiler

Compiled 32 to 18 computations (43.8% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
2.0ms
x
@inf
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
1.0ms
x
@0
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
1.0ms
x
@-inf
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))

rewrite48.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify169.0ms (2.4%)

Algorithm
egg-herbie
Rules
1274×sqr-pow_binary64
666×pow-sqr_binary64
529×cube-prod_binary64
469×fabs-mul_binary64
443×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09117
120117
240117
386117
4151117
5361117
61263117
71971117
82058117
92191117
102349117
112590117
122912117
133336117
143839117
154441117
165161117
175482117
185766117
195986117
206164117
216246117
227186117
Stop Event
node limit
Counts
25 → 17
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(*.f64 2/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(*.f64 2/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
Outputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(*.f64 2/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(*.f64 2/3 (pow.f64 x 3))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
(+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 2/3 (pow.f64 x 3)))
(fma.f64 2/3 (pow.f64 x 3) (*.f64 2 x))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))

localize60.0ms (0.9%)

Local error

Found 1 expressions with local error:

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

Compiled 37 to 29 computations (21.6% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite258.0ms (3.7%)

Algorithm
batch-egg-rewrite
Rules
505×pow1_binary64
498×add-sqr-sqrt_binary64
476×add-log-exp_binary64
476×log1p-expm1-u_binary64
476×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify13.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval138.0ms (2%)

Compiler

Compiled 347 to 267 computations (23.1% saved)

prune10.0ms (0.1%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New27128
Fresh000
Picked101
Done134
Total29433
Error
0b
Counts
33 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(*.f64 1/2 (+.f64 (*.f64 (*.f64 (*.f64 2/3 x) x) x) (*.f64 2 x)))
0.0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
58.6b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0.5b
(*.f64 1/2 (*.f64 2 x))
Compiler

Compiled 42 to 33 computations (21.4% saved)

localize43.0ms (0.6%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 (*.f64 2/3 x) x) x)
0.1b
(*.f64 (*.f64 2/3 x) x)
0.3b
(*.f64 2/3 x)
Compiler

Compiled 47 to 31 computations (34% saved)

series6.0ms (0.1%)

Counts
3 → 24
Calls

9 calls:

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

rewrite103.0ms (1.5%)

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

Useful iterations: 1 (0.0ms)

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

simplify196.0ms (2.8%)

Algorithm
egg-herbie
Rules
1208×sqr-pow_binary64
564×cube-prod_binary64
537×fabs-mul_binary64
536×unswap-sqr_binary64
502×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09168
123168
248168
3105168
4296168
51235168
62405168
72571168
82821168
93108168
103487168
113993168
124591168
135301168
145768168
156093168
166367168
176537168
186631168
197308168
Stop Event
node limit
Counts
57 → 36
Calls
Call 1
Inputs
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
Outputs
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 2))
(*.f64 2/3 (*.f64 x x))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))
(*.f64 2/3 (pow.f64 x 3))

eval27.0ms (0.4%)

Compiler

Compiled 533 to 404 computations (24.2% saved)

prune12.0ms (0.2%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New36036
Fresh000
Picked011
Done033
Total36440
Error
0b
Counts
40 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(*.f64 1/2 (+.f64 (*.f64 (*.f64 (*.f64 2/3 x) x) x) (*.f64 2 x)))
0.0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
58.6b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0.5b
(*.f64 1/2 (*.f64 2 x))
Compiler

Compiled 42 to 33 computations (21.4% saved)

regimes33.0ms (0.5%)

Counts
6 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 2 x))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 (*.f64 2/3 x) x) x) (*.f64 2 x)))
(*.f64 1/2 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)))
(*.f64 1/2 (+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3))))
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
Outputs
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
Calls

4 calls:

13.0ms
x
5.0ms
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
5.0ms
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
5.0ms
(/.f64 (+.f64 1 x) (-.f64 1 x))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0.0b1(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
0.0b1(/.f64 (+.f64 1 x) (-.f64 1 x))
Compiler

Compiled 92 to 71 computations (22.8% saved)

regimes44.0ms (0.6%)

Accuracy

Total -58.8b remaining (-26174.4%)

Threshold costs -58.8b (-26174.4%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 2 x))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 (*.f64 2/3 x) x) x) (*.f64 2 x)))
(*.f64 1/2 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)))
(*.f64 1/2 (+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3))))
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
Outputs
(*.f64 1/2 (+.f64 (*.f64 (*.f64 (*.f64 2/3 x) x) x) (*.f64 2 x)))
Calls

4 calls:

34.0ms
x
2.0ms
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
2.0ms
(/.f64 (+.f64 1 x) (-.f64 1 x))
2.0ms
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
Results
ErrorSegmentsBranch
0.2b1x
0.2b1(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0.2b1(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
0.2b1(/.f64 (+.f64 1 x) (-.f64 1 x))
Compiler

Compiled 84 to 65 computations (22.6% saved)

simplify5.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01739
13139
23639
33939
44039
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 (*.f64 2/3 x) x) x) (*.f64 2 x)))
(*.f64 1/2 (*.f64 2 x))
Outputs
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
(*.f64 1/2 (+.f64 (*.f64 (*.f64 (*.f64 2/3 x) x) x) (*.f64 2 x)))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 x (*.f64 x 2/3))) (*.f64 x 2)))
(*.f64 1/2 (*.f64 2 x))
(*.f64 1/2 (*.f64 x 2))
Compiler

Compiled 29 to 22 computations (24.1% saved)

soundness521.0ms (7.5%)

Algorithm
egg-herbie
Rules
781×fma-neg_binary64
596×distribute-rgt-in_binary64
596×unsub-neg_binary64
511×fma-def_binary64
419×distribute-lft-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01115
12013
22813
34313
47313
510913
615313
727213
859113
9104213
10148113
11187713
12208113
13222313
14256913
15371213
16495013
17572613
18600813
19610413
20622413
21626213
22668613
23712813
24743613
25754413
26759213
27761213
28762013
29762013
30762013
31798013
Stop Event
node limit
Compiler

Compiled 75 to 63 computations (16% saved)

end30.0ms (0.4%)

Compiler

Compiled 27 to 20 computations (25.9% saved)

Profiling

Loading profile data...