Details

Time bar (total: 8.2s)

analyze4.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.5s (54.3%)

Results
3.2s4188×body1024valid
716.0ms2075×body512valid
362.0ms428×body2048valid
229.0ms1565×body256valid
1.0msbody256invalid
Bogosity

preprocess318.0ms (3.9%)

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)

simplify308.0ms (3.7%)

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)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 22 to 18 computations (18.2% saved)

localize8.0ms (0.1%)

Compiler

Compiled 24 to 8 computations (66.7% saved)

localize17.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 40 to 31 computations (22.5% saved)

series4.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
1.0ms
x
@inf
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
1.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))

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

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

eval30.0ms (0.4%)

Compiler

Compiled 1489 to 1102 computations (26% saved)

prune15.0ms (0.2%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New86490
Fresh000
Picked011
Done011
Total86692
Error
0b
Counts
92 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(*.f64 (/.f64 1 2) (+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3))))
0.2b
(*.f64 (/.f64 1 2) (*.f64 x (fma.f64 x (*.f64 x 2/3) 2)))
0.5b
(*.f64 (/.f64 1 2) (*.f64 2 x))
58.4b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
58.5b
(*.f64 (/.f64 1 2) (log.f64 (-.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)))
0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
Compiler

Compiled 74 to 62 computations (16.2% saved)

localize27.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 68 to 55 computations (19.1% saved)

series5.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

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

rewrite99.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
641×prod-diff_binary64
527×fma-def_binary64
450×log-prod_binary64
250×pow2_binary64
230×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0947
121133
2322133
Stop Event
node limit
Counts
3 → 273
Calls
Call 1
Inputs
(log.f64 (-.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1))
(-.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)
(+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))) (fma.f64 (neg.f64 (sqrt.f64 (log1p.f64 (neg.f64 x)))) (sqrt.f64 (log1p.f64 (neg.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 0 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) (*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (log.f64 (*.f64 (cbrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) (*.f64 2 (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (log.f64 (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (log1p.f64 x)) (log.f64 (*.f64 (sqrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (log.f64 (/.f64 1 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (fma.f64 -1 x -1)) (log.f64 (/.f64 1 (neg.f64 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (log1p.f64 (neg.f64 x))) (log1p.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 1 (log1p.f64 x) (neg.f64 (*.f64 (log1p.f64 (neg.f64 x)) 1))) (fma.f64 (neg.f64 (log1p.f64 (neg.f64 x))) 1 (*.f64 (log1p.f64 (neg.f64 x)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)) (neg.f64 (*.f64 (log1p.f64 (neg.f64 x)) 1))) (fma.f64 (neg.f64 (log1p.f64 (neg.f64 x))) 1 (*.f64 (log1p.f64 (neg.f64 x)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)) (neg.f64 (*.f64 (log1p.f64 (neg.f64 x)) 1))) (fma.f64 (neg.f64 (log1p.f64 (neg.f64 x))) 1 (*.f64 (log1p.f64 (neg.f64 x)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 1 (log1p.f64 x) (neg.f64 (*.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2)))) (fma.f64 (neg.f64 (cbrt.f64 (log1p.f64 (neg.f64 x)))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2) (*.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 (pow.f64 (cbrt.f64 (log1p.f64 x)) 2) (cbrt.f64 (log1p.f64 x)) (neg.f64 (*.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2)))) (fma.f64 (neg.f64 (cbrt.f64 (log1p.f64 (neg.f64 x)))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2) (*.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 (sqrt.f64 (log1p.f64 x)) (sqrt.f64 (log1p.f64 x)) (neg.f64 (*.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2)))) (fma.f64 (neg.f64 (cbrt.f64 (log1p.f64 (neg.f64 x)))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2) (*.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) (pow.f64 (cbrt.f64 (log1p.f64 (neg.f64 x))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 (*.f64 x x)))) (log1p.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 1 (cbrt.f64 (pow.f64 (-.f64 1 x) 2)))) (log.f64 (/.f64 (+.f64 1 x) (cbrt.f64 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 1 (sqrt.f64 (-.f64 1 x)))) (log.f64 (/.f64 (+.f64 1 x) (sqrt.f64 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) 1)) (log.f64 (/.f64 (cbrt.f64 (+.f64 1 x)) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) 1)) (log.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (cbrt.f64 (pow.f64 (-.f64 1 x) 2)))) (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) (cbrt.f64 (pow.f64 (-.f64 1 x) 2)))) (log.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) (cbrt.f64 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (sqrt.f64 (-.f64 1 x)))) (log.f64 (/.f64 (cbrt.f64 (+.f64 1 x)) (sqrt.f64 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (+.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1)) (log.f64 (expm1.f64 (*.f64 1/2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 (pow.f64 x 3)))) (log1p.f64 (fma.f64 x x 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 0 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log1p.f64 (pow.f64 x 3)) (log.f64 (*.f64 (-.f64 1 x) (fma.f64 x (-.f64 x 1) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (*.f64 1/3 (log1p.f64 x))) (log.f64 (/.f64 (-.f64 1 x) (cbrt.f64 (+.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (log.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (log.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (-.f64 1 (*.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/2 (log1p.f64 x)) (log.f64 (/.f64 (-.f64 1 x) (sqrt.f64 (+.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log1p.f64 (*.f64 (neg.f64 x) x)) (*.f64 2 (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (log.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 -1 x -1)) (log.f64 (neg.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 -1) (log.f64 (neg.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 (+.f64 1 x) (sqrt.f64 (-.f64 1 x)))) (*.f64 1/2 (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (fma.f64 -1 x -1))) (log.f64 (neg.f64 (neg.f64 (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (log.f64 (neg.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (log.f64 (neg.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) 1)) (log.f64 (*.f64 (fma.f64 x (-.f64 x 1) 1) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (*.f64 (-.f64 1 (*.f64 x x)) 1)) (*.f64 2 (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (+.f64 1 (pow.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 3))) (log.f64 (+.f64 1 (-.f64 (pow.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (-.f64 1 (pow.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2))) (log.f64 (-.f64 1 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 (+.f64 1 x) 1)) (log1p.f64 (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 (+.f64 1 x) (cbrt.f64 (pow.f64 (-.f64 1 x) 2)))) (*.f64 1/3 (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (/.f64 1 (-.f64 1 x)))) (log1p.f64 (-.f64 (*.f64 x x) 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 3 (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/3 (*.f64 3 (-.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))) 2) 1/2)))) (#(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 neg.f64 (log.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 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 log1p.f64 (*.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1))))) (#(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 exp.f64 (*.f64 (log.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log1p.f64 x) (neg.f64 (log1p.f64 (neg.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 (neg.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 (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 1 (*.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 0)))) (#(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 0 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))))) (#(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 (fma.f64 -1 x -1) (/.f64 1 (neg.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (-.f64 1 x)) (+.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (/.f64 1 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)))))) (#(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 (cbrt.f64 (pow.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) (cbrt.f64 (pow.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)) (cbrt.f64 (pow.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 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (/.f64 (+.f64 1 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 *.f64 (pow.f64 (E.f64) (log1p.f64 x)) (pow.f64 (E.f64) (neg.f64 (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (E.f64) (*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (pow.f64 (E.f64) (*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (E.f64) (*.f64 2 (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))) (pow.f64 (E.f64) (*.f64 1/3 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 1 x) (+.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 x) (-.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (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 (sqrt.f64 (+.f64 1 x)) (/.f64 (-.f64 1 x) (sqrt.f64 (+.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 -1 x -1) (neg.f64 (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (-.f64 1 (*.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 x 3)) (*.f64 (-.f64 1 x) (fma.f64 x (-.f64 x 1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (-.f64 1 x) (+.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 x x)) (pow.f64 (-.f64 1 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 -1 x -1)) (neg.f64 (neg.f64 (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (neg.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) (neg.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) 1) (*.f64 (fma.f64 x (-.f64 x 1) 1) (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 x x)) 1) (pow.f64 (-.f64 1 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (+.f64 1 x) (sqrt.f64 (-.f64 1 x))) (sqrt.f64 (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 3)) (+.f64 1 (-.f64 (pow.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)) (-.f64 1 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (+.f64 1 x) 1) (-.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (+.f64 1 x) (cbrt.f64 (pow.f64 (-.f64 1 x) 2))) (cbrt.f64 (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (/.f64 1 (-.f64 1 x))) (fma.f64 x (-.f64 x 1) 1))))) (#(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)) 2) 1/2)))) (#(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 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3) 1/3)))) (#(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 pow.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (E.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 pow.f64 (pow.f64 (E.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 (pow.f64 (E.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 pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)) 1) (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2))) (cbrt.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) 2)) (cbrt.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)) (cbrt.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))) (cbrt.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2)) (sqrt.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))) (sqrt.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) 1) (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (cbrt.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (sqrt.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 2))) (sqrt.f64 (cbrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (sqrt.f64 (sqrt.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))) (sqrt.f64 (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 log.f64 (+.f64 1 (expm1.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 hypot.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) (sqrt.f64 (*.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))))) (#(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 expm1.f64 (*.f64 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1))))) (#(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))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 x) (/.f64 1 (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) (pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2) (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2) (*.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (*.f64 (cbrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (*.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 x)) (*.f64 (sqrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 -1 x -1) (/.f64 1 (neg.f64 (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3)) (/.f64 1 (fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (-.f64 1 x)) (+.f64 1 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (/.f64 1 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (/.f64 1 (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) 2) (cbrt.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (sqrt.f64 (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) 1) (/.f64 (cbrt.f64 (+.f64 1 x)) (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) 1) (/.f64 (sqrt.f64 (+.f64 1 x)) (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (cbrt.f64 (pow.f64 (-.f64 1 x) 2))) (/.f64 (+.f64 1 x) (cbrt.f64 (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (cbrt.f64 (pow.f64 (-.f64 1 x) 2))) (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) (cbrt.f64 (pow.f64 (-.f64 1 x) 2))) (/.f64 (sqrt.f64 (+.f64 1 x)) (cbrt.f64 (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (sqrt.f64 (-.f64 1 x))) (/.f64 (+.f64 1 x) (sqrt.f64 (-.f64 1 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.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))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 (*.f64 x x))) (+.f64 1 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1) (expm1.f64 (*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 (pow.f64 x 3))) (+.f64 1 (fma.f64 x x x)) 0)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (/.f64 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 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 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2) (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2) (*.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) (*.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3)) (/.f64 1 (fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (/.f64 1 (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1) (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) (-.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3)) (fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3)) (+.f64 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3))) (neg.f64 (fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))) (neg.f64 (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3)) 1) (fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) 1) (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) (expm1.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x)))) 1) (+.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) (-.f64 1 (pow.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 x) (/.f64 1 (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) (pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (*.f64 (cbrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) (sqrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 x)) (*.f64 (sqrt.f64 (+.f64 1 x)) (/.f64 1 (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 -1 x -1) (/.f64 1 (neg.f64 (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 2) (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (-.f64 1 x)) (+.f64 1 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) (/.f64 1 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) 2) (cbrt.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) (sqrt.f64 (+.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) 1) (/.f64 (cbrt.f64 (+.f64 1 x)) (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) 1) (/.f64 (sqrt.f64 (+.f64 1 x)) (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (cbrt.f64 (pow.f64 (-.f64 1 x) 2))) (/.f64 (+.f64 1 x) (cbrt.f64 (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 1 x)) 2) (cbrt.f64 (pow.f64 (-.f64 1 x) 2))) (cbrt.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (+.f64 1 x)) (cbrt.f64 (pow.f64 (-.f64 1 x) 2))) (/.f64 (sqrt.f64 (+.f64 1 x)) (cbrt.f64 (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (sqrt.f64 (-.f64 1 x))) (/.f64 (+.f64 1 x) (sqrt.f64 (-.f64 1 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.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))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 (*.f64 x x))) (+.f64 1 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x)))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (+.f64 1 x) (-.f64 1 (pow.f64 x 3))) (+.f64 1 (fma.f64 x x x)) 1)))))

simplify69.0ms (0.8%)

Algorithm
egg-herbie
Rules
432×fma-neg_binary64
371×distribute-lft-out_binary64
336×fma-def_binary64
311×distribute-rgt-out_binary64
306×sub-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
068508
1212484
2624472
31964469
45251469
Stop Event
node limit
Counts
309 → 315
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)))))))
2
(+.f64 (*.f64 2 x) 2)
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 2))
(+.f64 (*.f64 2 (pow.f64 x 3)) (+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 2)))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 4))) (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 4))) (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))))
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 (*.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))))
(+.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/7 (pow.f64 x 7) (fma.f64 2/3 (pow.f64 x 3) (fma.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 2/3 (pow.f64 x 3)) (+.f64 (+.f64 (log.f64 -1) (/.f64 2 x)) (/.f64 2/5 (pow.f64 x 5))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (/.f64 2 x) (+.f64 (log.f64 -1) (+.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 (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 2/3 (pow.f64 x 3)) (+.f64 (+.f64 (log.f64 -1) (/.f64 2 x)) (/.f64 2/5 (pow.f64 x 5))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.f64 2/5 (pow.f64 x 5)))))
(+.f64 (/.f64 2 x) (+.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.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))
(+.f64 1 (*.f64 x (fma.f64 2 (fma.f64 x x x) 2)))
-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))))))
(neg.f64 (+.f64 1 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x)))))
(+.f64 -1 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))))
(-.f64 (/.f64 -2 x) (-.f64 1 (/.f64 -2 (*.f64 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)))))))
(+.f64 -1 (neg.f64 (+.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3)))))
(+.f64 -1 (-.f64 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))))
(+.f64 -1 (+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3)))))
(-.f64 -1 (+.f64 (/.f64 (/.f64 2 x) x) (+.f64 (/.f64 2 x) (/.f64 2 (pow.f64 x 3)))))
-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))))))
(neg.f64 (+.f64 1 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x)))))
(+.f64 -1 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))))
(-.f64 (/.f64 -2 x) (-.f64 1 (/.f64 -2 (*.f64 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)))))))
(+.f64 -1 (neg.f64 (+.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3)))))
(+.f64 -1 (-.f64 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))))
(+.f64 -1 (+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3)))))
(-.f64 -1 (+.f64 (/.f64 (/.f64 2 x) x) (+.f64 (/.f64 2 x) (/.f64 2 (pow.f64 x 3)))))
2
(+.f64 (*.f64 2 x) 2)
(fma.f64 2 x 2)
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 2))
(fma.f64 2 (*.f64 x x) (fma.f64 2 x 2))
(fma.f64 2 (fma.f64 x x x) 2)
(+.f64 (*.f64 2 (pow.f64 x 3)) (+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 (*.f64 2 x) 2)))
(fma.f64 2 (pow.f64 x 3) (fma.f64 2 (*.f64 x x) (fma.f64 2 x 2)))
(fma.f64 2 (pow.f64 x 3) (fma.f64 2 (fma.f64 x x x) 2))
(*.f64 (+.f64 x 1) (fma.f64 x (*.f64 2 x) 2))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))))
(+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x)))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(neg.f64 (+.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))))
(-.f64 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3)))
(+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3))))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 4))) (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))))
(neg.f64 (+.f64 (+.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))) (/.f64 2 (pow.f64 x 4))))
(+.f64 (-.f64 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))) (/.f64 -2 (pow.f64 x 4)))
(+.f64 (+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3)))) (/.f64 -2 (pow.f64 x 4)))
(+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (*.f64 (/.f64 -1 (pow.f64 x 3)) (+.f64 2 (/.f64 2 x)))))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))))
(+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x)))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(neg.f64 (+.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))))
(-.f64 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3)))
(+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3))))
(neg.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 4))) (+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (*.f64 2 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))))
(neg.f64 (+.f64 (+.f64 (+.f64 (/.f64 2 x) (/.f64 2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))) (/.f64 2 (pow.f64 x 4))))
(+.f64 (-.f64 (+.f64 (/.f64 -2 x) (/.f64 -2 (*.f64 x x))) (/.f64 2 (pow.f64 x 3))) (/.f64 -2 (pow.f64 x 4)))
(+.f64 (+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (/.f64 -2 (pow.f64 x 3)))) (/.f64 -2 (pow.f64 x 4)))
(+.f64 (/.f64 -2 x) (+.f64 (/.f64 -2 (*.f64 x x)) (*.f64 (/.f64 -1 (pow.f64 x 3)) (+.f64 2 (/.f64 2 x)))))

localize7.0ms (0.1%)

Compiler

Compiled 17 to 14 computations (17.6% saved)

localize15.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 37 to 27 computations (27% saved)

series4.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite57.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
641×pow1_binary64
594×add-log-exp_binary64
594×log1p-expm1-u_binary64
594×expm1-log1p-u_binary64
583×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify175.0ms (2.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
010165
122165
240165
379165
4147165
5372165
61236165
71944165
82031165
92164165
102322165
112563165
122885165
133308165
143811165
154411165
165129165
175450165
185734165
195954165
206132165
216212165
227152165
Stop Event
node limit
Counts
48 → 30
Calls
Call 1
Inputs
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.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/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2/3 x)
(*.f64 2 x)
(*.f64 x 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 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 x 2))
(*.f64 x (fma.f64 2/3 (*.f64 x x) 2))
(*.f64 x (fma.f64 x (*.f64 2/3 x) 2))

localize19.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 42 to 34 computations (19% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite48.0ms (0.6%)

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

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval222.0ms (2.7%)

Compiler

Compiled 8583 to 6590 computations (23.2% saved)

prune88.0ms (1.1%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New4043407
Fresh000
Picked101
Done235
Total4076413
Error
0b
Counts
413 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
58.6b
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (*.f64 x (fma.f64 x (*.f64 x 2/3) 2))) 1))
0.2b
(*.f64 (/.f64 1 2) (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x)))
0.5b
(*.f64 (/.f64 1 2) (*.f64 2 x))
58.5b
(*.f64 (/.f64 1 2) (neg.f64 (log.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1))))
58.4b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
Compiler

Compiled 79 to 65 computations (17.7% saved)

localize26.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 65 to 52 computations (20% saved)

series4.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite74.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
926×pow1_binary64
866×log1p-expm1-u_binary64
866×expm1-log1p-u_binary64
865×add-log-exp_binary64
849×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0822
118320
2236220
Stop Event
node limit
Counts
2 → 74
Calls
Call 1
Inputs
(log.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1))
(/.f64 (-.f64 1 x) (+.f64 1 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 0)))) (#(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 (neg.f64 x)) (neg.f64 (log1p.f64 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 (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 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 0)))) (#(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 (neg.f64 x)) (log1p.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 (neg.f64 (-.f64 1 x)) (+.f64 1 x))) (log.f64 -1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (-.f64 1 x))) (log.f64 (+.f64 -1 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 2) (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) (sqrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 3) 0) (+.f64 (pow.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 2) (+.f64 0 (*.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 2) 0) (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 2) (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) (sqrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 0)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (expm1.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 1 (+.f64 1 x)) (neg.f64 (/.f64 x (+.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (+.f64 1 x)) (/.f64 x (+.f64 1 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 (/.f64 (/.f64 1 (+.f64 1 x)) 1) (/.f64 (/.f64 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 1 x) (*.f64 (/.f64 1 (+.f64 1 x)) 1))))) (#(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 (neg.f64 (-.f64 1 x)) (/.f64 1 (+.f64 -1 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (neg.f64 (-.f64 1 x)) (+.f64 1 x)) -1)))) (#(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 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 1 (hypot.f64 1 (sqrt.f64 x))) (/.f64 (-.f64 1 x) (hypot.f64 1 (sqrt.f64 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 (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 (pow.f64 (cbrt.f64 (-.f64 1 x)) 2) (hypot.f64 1 (sqrt.f64 x))) (/.f64 (cbrt.f64 (-.f64 1 x)) (hypot.f64 1 (sqrt.f64 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 (*.f64 x (-.f64 x 1))))))) (#(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 (neg.f64 x)) (log1p.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 (sqrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x)))) (sqrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))) 2)) (cbrt.f64 (-.f64 (log1p.f64 (neg.f64 x)) (log1p.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (-.f64 1 x) (+.f64 -1 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) -1))))) (#(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 (neg.f64 x)) (log1p.f64 x)))))))

simplify86.0ms (1%)

Algorithm
egg-herbie
Rules
619×fma-def_binary64
502×times-frac_binary64
474×fma-neg_binary64
446×associate-/l/_binary64
394×associate-*l/_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
054312
1158306
2415306
31171301
43345297
Stop Event
node limit
Counts
98 → 102
Calls
Call 1
Inputs
(*.f64 -2 x)
(+.f64 (*.f64 -2 x) (*.f64 -2/3 (pow.f64 x 3)))
(+.f64 (*.f64 -2/5 (pow.f64 x 5)) (+.f64 (*.f64 -2 x) (*.f64 -2/3 (pow.f64 x 3))))
(+.f64 (*.f64 -2/5 (pow.f64 x 5)) (+.f64 (*.f64 -2/7 (pow.f64 x 7)) (+.f64 (*.f64 -2 x) (*.f64 -2/3 (pow.f64 x 3)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 x))))
(-.f64 (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 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 x))))
(-.f64 (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))))))
1
(+.f64 1 (*.f64 -2 x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 1 (*.f64 -2 x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 1 (+.f64 (*.f64 -2 x) (*.f64 -2 (pow.f64 x 3)))))
-1
(-.f64 (*.f64 2 (/.f64 1 x)) 1)
(-.f64 (*.f64 2 (/.f64 1 x)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 3)))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
-1
(-.f64 (*.f64 2 (/.f64 1 x)) 1)
(-.f64 (*.f64 2 (/.f64 1 x)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 3)))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
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 (*.f64 -2/5 (pow.f64 x 5)) (+.f64 (*.f64 -2 x) (*.f64 -2/3 (pow.f64 x 3))))
(fma.f64 -2/5 (pow.f64 x 5) (fma.f64 -2 x (*.f64 -2/3 (pow.f64 x 3))))
(fma.f64 -2/5 (pow.f64 x 5) (fma.f64 -2/3 (pow.f64 x 3) (*.f64 -2 x)))
(fma.f64 -2/3 (pow.f64 x 3) (fma.f64 -2/5 (pow.f64 x 5) (*.f64 -2 x)))
(fma.f64 -2 x (fma.f64 -2/3 (pow.f64 x 3) (*.f64 -2/5 (pow.f64 x 5))))
(+.f64 (*.f64 -2/5 (pow.f64 x 5)) (+.f64 (*.f64 -2/7 (pow.f64 x 7)) (+.f64 (*.f64 -2 x) (*.f64 -2/3 (pow.f64 x 3)))))
(fma.f64 -2/5 (pow.f64 x 5) (fma.f64 -2/7 (pow.f64 x 7) (fma.f64 -2 x (*.f64 -2/3 (pow.f64 x 3)))))
(fma.f64 -2/5 (pow.f64 x 5) (fma.f64 -2/7 (pow.f64 x 7) (fma.f64 -2/3 (pow.f64 x 3) (*.f64 -2 x))))
(fma.f64 -2/5 (pow.f64 x 5) (fma.f64 -2 x (fma.f64 -2/3 (pow.f64 x 3) (*.f64 -2/7 (pow.f64 x 7)))))
(fma.f64 -2 x (fma.f64 -2/3 (pow.f64 x 3) (fma.f64 -2/7 (pow.f64 x 7) (*.f64 -2/5 (pow.f64 x 5)))))
(fma.f64 x (fma.f64 x (*.f64 x -2/3) -2) (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 (log.f64 -1) (/.f64 -2 x))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 x))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 x 3))) (/.f64 -2 x))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 x) (/.f64 -2/3 (pow.f64 x 3))))
(-.f64 (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))))))
(-.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 2 x) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.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))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))
(-.f64 (log.f64 -1) (/.f64 2 x))
(+.f64 (log.f64 -1) (/.f64 -2 x))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 x))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 x) (/.f64 2/3 (pow.f64 x 3))))
(+.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 x 3))) (/.f64 -2 x))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 x) (/.f64 -2/3 (pow.f64 x 3))))
(-.f64 (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))))))
(-.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 2 x) (+.f64 (/.f64 2/3 (pow.f64 x 3)) (/.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))))
1
(+.f64 1 (*.f64 -2 x))
(+.f64 (*.f64 -2 x) 1)
(fma.f64 -2 x 1)
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 1 (*.f64 -2 x)))
(fma.f64 2 (*.f64 x x) (+.f64 (*.f64 -2 x) 1))
(fma.f64 2 (*.f64 x x) (fma.f64 -2 x 1))
(fma.f64 -2 x (fma.f64 x (*.f64 x 2) 1))
(fma.f64 x (fma.f64 x 2 -2) 1)
(+.f64 (*.f64 2 (pow.f64 x 2)) (+.f64 1 (+.f64 (*.f64 -2 x) (*.f64 -2 (pow.f64 x 3)))))
(fma.f64 2 (*.f64 x x) (+.f64 1 (*.f64 -2 (+.f64 x (pow.f64 x 3)))))
(fma.f64 2 (*.f64 x x) (fma.f64 -2 (+.f64 x (pow.f64 x 3)) 1))
(fma.f64 -2 (+.f64 x (pow.f64 x 3)) (fma.f64 x (*.f64 x 2) 1))
(fma.f64 -2 (pow.f64 x 3) (fma.f64 x (fma.f64 x 2 -2) 1))
(fma.f64 x (*.f64 x (fma.f64 -2 x 2)) (fma.f64 -2 x 1))
-1
(-.f64 (*.f64 2 (/.f64 1 x)) 1)
(+.f64 (/.f64 2 x) -1)
(+.f64 -1 (/.f64 2 x))
(-.f64 (*.f64 2 (/.f64 1 x)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(-.f64 (/.f64 2 x) (+.f64 1 (/.f64 2 (*.f64 x x))))
(+.f64 (/.f64 2 x) (-.f64 -1 (/.f64 2 (*.f64 x x))))
(+.f64 -1 (+.f64 (/.f64 2 x) (/.f64 -2 (*.f64 x x))))
(+.f64 (+.f64 -1 (/.f64 2 x)) (/.f64 -2 (*.f64 x x)))
(+.f64 -1 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -2 x) x)))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 3)))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (/.f64 2 x) (-.f64 (/.f64 2 (pow.f64 x 3)) (+.f64 1 (/.f64 2 (*.f64 x x)))))
(+.f64 (+.f64 (/.f64 2 x) (+.f64 (/.f64 2 (pow.f64 x 3)) -1)) (/.f64 -2 (*.f64 x x)))
(+.f64 (/.f64 2 x) (+.f64 -1 (*.f64 (/.f64 1 (*.f64 x x)) (-.f64 (/.f64 2 x) 2))))
(+.f64 (/.f64 2 x) (fma.f64 (/.f64 (/.f64 1 x) x) (+.f64 (/.f64 2 x) -2) -1))
-1
(-.f64 (*.f64 2 (/.f64 1 x)) 1)
(+.f64 (/.f64 2 x) -1)
(+.f64 -1 (/.f64 2 x))
(-.f64 (*.f64 2 (/.f64 1 x)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(-.f64 (/.f64 2 x) (+.f64 1 (/.f64 2 (*.f64 x x))))
(+.f64 (/.f64 2 x) (-.f64 -1 (/.f64 2 (*.f64 x x))))
(+.f64 -1 (+.f64 (/.f64 2 x) (/.f64 -2 (*.f64 x x))))
(+.f64 (+.f64 -1 (/.f64 2 x)) (/.f64 -2 (*.f64 x x)))
(+.f64 -1 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -2 x) x)))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 2 (/.f64 1 (pow.f64 x 3)))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (/.f64 2 x) (-.f64 (/.f64 2 (pow.f64 x 3)) (+.f64 1 (/.f64 2 (*.f64 x x)))))
(+.f64 (+.f64 (/.f64 2 x) (+.f64 (/.f64 2 (pow.f64 x 3)) -1)) (/.f64 -2 (*.f64 x x)))
(+.f64 (/.f64 2 x) (+.f64 -1 (*.f64 (/.f64 1 (*.f64 x x)) (-.f64 (/.f64 2 x) 2))))
(+.f64 (/.f64 2 x) (fma.f64 (/.f64 (/.f64 1 x) x) (+.f64 (/.f64 2 x) -2) -1))

localize26.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 52 to 36 computations (30.8% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite71.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
548×pow1_binary64
527×add-sqr-sqrt_binary64
506×add-log-exp_binary64
506×log1p-expm1-u_binary64
506×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify174.0ms (2.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
09168
123168
248168
3106168
4299168
51247168
62402168
72568168
82818168
93105168
103484168
113991168
124587168
135293168
145766168
156083168
166357168
176529168
186619168
197296168
Stop Event
node limit
Counts
46 → 25
Calls
Call 1
Inputs
(*.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))
(*.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))
Outputs
(*.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))
(*.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))

localize27.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (fma.f64 x (*.f64 x 2/3) 2))
0.3b
(*.f64 x 2/3)
8.3b
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x (*.f64 x 2/3) 2))) 1)
Compiler

Compiled 63 to 47 computations (25.4% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x (*.f64 x 2/3) 2))) 1)
0.0ms
x
@inf
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x (*.f64 x 2/3) 2))) 1)
0.0ms
x
@-inf
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x (*.f64 x 2/3) 2))) 1)

rewrite70.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
599×unpow-prod-down_binary64
472×prod-diff_binary64
434×fma-def_binary64
405×log-prod_binary64
239×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify171.0ms (2.1%)

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
118 → 109
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))

eval153.0ms (1.8%)

Compiler

Compiled 5525 to 4304 computations (22.1% saved)

prune39.0ms (0.5%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New2762278
Fresh000
Picked101
Done055
Total2777284
Error
0b
Counts
284 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
58.6b
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1))
58.7b
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (*.f64 x 2)) 1))
0.2b
(*.f64 (/.f64 1 2) (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x)))
0.5b
(*.f64 (/.f64 1 2) (*.f64 2 x))
58.5b
(*.f64 (/.f64 1 2) (neg.f64 (log.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1))))
58.4b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
Compiler

Compiled 94 to 78 computations (17% saved)

localize21.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
8.4b
(-.f64 (+.f64 1 (*.f64 x 2)) 1)
Compiler

Compiled 33 to 28 computations (15.2% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite90.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
714×pow1_binary64
672×add-log-exp_binary64
671×log1p-expm1-u_binary64
671×expm1-log1p-u_binary64
662×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify14.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0448
1548
Stop Event
saturated
Counts
55 → 43
Calls
Call 1
Inputs
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
Outputs
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)
(*.f64 2 x)

localize33.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x 2/3))
0.1b
(*.f64 (*.f64 x (*.f64 x 2/3)) x)
0.3b
(*.f64 x 2/3)
8.3b
(-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1)
Compiler

Compiled 84 to 60 computations (28.6% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1)
0.0ms
x
@0
(-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1)
0.0ms
x
@-inf
(-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1)

rewrite72.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
808×fma-def_binary64
594×log-prod_binary64
406×fma-neg_binary64
313×pow2_binary64
216×pow1/3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01219
127411
2382411
Stop Event
node limit
Counts
1 → 127
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 3) 2/3) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 (pow.f64 x 3) 2/3 1) (fma.f64 x 2 -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (fma.f64 2/3 (*.f64 x x) 2))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (fma.f64 2/3 (*.f64 x x) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (fma.f64 2/3 (*.f64 x x) 2)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (fma.f64 2/3 (*.f64 x x) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (fma.f64 2/3 (*.f64 x x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (fma.f64 2/3 (*.f64 x x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 2) (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 2/3 (*.f64 x x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) (sqrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 8 (pow.f64 x 3) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 3)) (/.f64 1 (fma.f64 (+.f64 x x) (-.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3)) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) -1) (/.f64 1 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2) (*.f64 4 (*.f64 x x))) (/.f64 1 (*.f64 x (fma.f64 2/3 (*.f64 x x) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 2/3 (*.f64 x x) 2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (+.f64 x x) (-.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3)) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2)) (fma.f64 8 (pow.f64 x 3) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) -2)) (-.f64 (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2) (*.f64 4 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2)) (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 3) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2) (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) (-.f64 1 (*.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 8 (pow.f64 x 3) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 3)) (fma.f64 (+.f64 x x) (-.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3)) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 8 (pow.f64 x 3) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 3)) (fma.f64 4 (*.f64 x x) (-.f64 (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2) (*.f64 (*.f64 (pow.f64 x 3) 2/3) (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) -1) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2) (*.f64 4 (*.f64 x x))) (*.f64 x (fma.f64 2/3 (*.f64 x x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 8 (pow.f64 x 3) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 3))) (neg.f64 (fma.f64 (+.f64 x x) (-.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3)) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2) (*.f64 4 (*.f64 x x)))) (neg.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 3) -1)) (neg.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) -1)) (neg.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1) 3)) (+.f64 1 (-.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1) 2) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1) 2)) (-.f64 1 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 4 (*.f64 x x)) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2)) (-.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3)))))) (#(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)) 2) 1/2)))) (#(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 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 (/.f64 (fma.f64 (+.f64 x x) (-.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3)) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2)) (fma.f64 8 (pow.f64 x 3) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) -2)) (-.f64 (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2) (*.f64 4 (*.f64 x x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2)) (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 3) -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2) (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) -1)) -1)))) (#(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 x) (fma.f64 2/3 (*.f64 x x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 x 3) 2/3))) (pow.f64 (exp.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 (pow.f64 x 3) 2/3)) (+.f64 1 (expm1.f64 (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 x 3) 2/3))) (+.f64 1 (expm1.f64 (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 x x))) (exp.f64 (*.f64 (pow.f64 x 3) 2/3))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 2) x) (+.f64 1 (expm1.f64 (*.f64 (pow.f64 x 3) 2/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 x x))) (+.f64 1 (expm1.f64 (*.f64 (pow.f64 x 3) 2/3)))))))) (#(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 hypot.f64 (sqrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) (sqrt.f64 (*.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1))))))) (#(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 expm1.f64 (*.f64 (log1p.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 1))))) (#(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))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (pow.f64 x 3) 2/3) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 (pow.f64 x 3) 2/3 1) (fma.f64 x 2 -1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 2/3 (*.f64 x x)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 2 (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 2/3) (*.f64 x x) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2/3 (*.f64 x x)) x (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 x 3) 2/3) 1 (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 x (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 x x) 1 (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (*.f64 x 2/3) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 3) 2/3 (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) (cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2)) (cbrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2)) (*.f64 (cbrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 x x)) (pow.f64 (cbrt.f64 (+.f64 x x)) 2) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 x x)) 2) (cbrt.f64 (+.f64 x x)) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 2/3 (*.f64 x x))) 2) (*.f64 (cbrt.f64 (*.f64 2/3 (*.f64 x x))) x) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 2) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (fma.f64 2/3 (*.f64 x x) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 2/3 (*.f64 x x))) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 2) (cbrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 3) 2/3)) (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 3) 2/3)) 2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 3) 2/3)) 2) (cbrt.f64 (*.f64 (pow.f64 x 3) 2/3)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) (*.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 (+.f64 x x)) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 2/3)) (*.f64 (*.f64 x (sqrt.f64 2/3)) x) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 2) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 2/3 (*.f64 x x) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 2/3 (*.f64 x x))) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) (sqrt.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (pow.f64 x 3) 2/3)) (sqrt.f64 (*.f64 (pow.f64 x 3) 2/3)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 8 (pow.f64 x 3) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 3)) (/.f64 1 (fma.f64 (+.f64 x x) (-.f64 (+.f64 x x) (*.f64 (pow.f64 x 3) 2/3)) (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) 3)) (/.f64 1 (fma.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1) 2) -1) (/.f64 1 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (*.f64 (pow.f64 x 3) 2/3) 2) (*.f64 4 (*.f64 x x))) (/.f64 1 (*.f64 x (fma.f64 2/3 (*.f64 x x) -2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (pow.f64 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)) 2)) (/.f64 1 (-.f64 1 (*.f64 x (fma.f64 2/3 (*.f64 x x) 2)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 2/3 (*.f64 x x) 2) x 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 (pow.f64 x 3) 2/3 1)) 2) (cbrt.f64 (fma.f64 (pow.f64 x 3) 2/3 1)) (fma.f64 x 2 -1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1)) 2) (cbrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 (pow.f64 x 3) 2/3 1)) (sqrt.f64 (fma.f64 (pow.f64 x 3) 2/3 1)) (fma.f64 x 2 -1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1)) (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 x (fma.f64 2/3 (*.f64 x x) 2) 1)) 1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (sqrt.f64 x) (sqrt.f64 (fma.f64 2/3 (*.f64 x x) 2)) 1) (fma.f64 (sqrt.f64 x) (sqrt.f64 (fma.f64 2/3 (*.f64 x x) 2)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2 (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (pow.f64 x 3) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (*.f64 2/3 (*.f64 x x))) 2)) (cbrt.f64 (*.f64 2/3 (*.f64 x x))) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (*.f64 x (sqrt.f64 2/3))) (*.f64 x (sqrt.f64 2/3)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 2/3 (*.f64 x x)) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 2/3 (*.f64 x x)) (sqrt.f64 x)) (sqrt.f64 x) (+.f64 x x))))))

simplify173.0ms (2.1%)

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
139 → 131
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))

eval91.0ms (1.1%)

Compiler

Compiled 4276 to 3224 computations (24.6% saved)

prune28.0ms (0.3%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New2110211
Fresh000
Picked011
Done066
Total2117218
Error
0b
Counts
218 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
58.6b
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1))
58.7b
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (*.f64 x 2)) 1))
0.2b
(*.f64 (/.f64 1 2) (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x)))
0.5b
(*.f64 (/.f64 1 2) (*.f64 2 x))
58.5b
(*.f64 (/.f64 1 2) (neg.f64 (log.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1))))
58.4b
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0b
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
Compiler

Compiled 94 to 78 computations (17% saved)

regimes28.0ms (0.3%)

Counts
11 → 1
Calls
Call 1
Inputs
(*.f64 (/.f64 1 2) (*.f64 2 x))
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (*.f64 x 2)) 1))
(*.f64 (/.f64 1 2) (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x)))
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x))) 1))
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
(*.f64 (/.f64 1 2) (*.f64 x (fma.f64 x (*.f64 x 2/3) 2)))
(*.f64 (/.f64 1 2) (+.f64 (*.f64 2 x) (*.f64 2/3 (pow.f64 x 3))))
(*.f64 (/.f64 1 2) (neg.f64 (log.f64 (/.f64 (/.f64 (-.f64 1 x) (+.f64 1 x)) 1))))
(*.f64 (/.f64 1 2) (log.f64 (-.f64 (+.f64 1 (/.f64 (+.f64 1 x) (-.f64 1 x))) 1)))
(*.f64 (/.f64 1 2) (-.f64 (+.f64 1 (*.f64 x (fma.f64 x (*.f64 x 2/3) 2))) 1))
(*.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

5 calls:

9.0ms
(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
6.0ms
x
3.0ms
(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
3.0ms
(/.f64 (+.f64 1 x) (-.f64 1 x))
3.0ms
(/.f64 (+.f64 1 x) (-.f64 1 x))
Results
ErrorSegmentsBranch
0b1x
0b1(*.f64 (/.f64 1 2) (log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x))))
0b1(log.f64 (/.f64 (+.f64 1 x) (-.f64 1 x)))
0b1(/.f64 (+.f64 1 x) (-.f64 1 x))
0b1(/.f64 (+.f64 1 x) (-.f64 1 x))
Compiler

Compiled 185 to 150 computations (18.9% saved)

regimes22.0ms (0.3%)

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

5 calls:

6.0ms
x
3.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)))
2.0ms
(/.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))
0.2b1(/.f64 (+.f64 1 x) (-.f64 1 x))
Compiler

Compiled 177 to 144 computations (18.6% saved)

regimes4.0ms (0.1%)

Accuracy

Total -58.2b remaining (-11981.4%)

Threshold costs -58.2b (-11981.4%)

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

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
0.5b1x
Compiler

Compiled 21 to 18 computations (14.3% saved)

simplify6.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
01939
13439
23939
34239
44339
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
(*.f64 (/.f64 1 2) (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x)))
(*.f64 (/.f64 1 2) (*.f64 2 x))
Outputs
(*.f64 1/2 (-.f64 (log1p.f64 x) (log1p.f64 (neg.f64 x))))
(*.f64 (/.f64 1 2) (+.f64 (*.f64 (*.f64 x (*.f64 x 2/3)) x) (*.f64 2 x)))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 x (*.f64 x 2/3))) (*.f64 x 2)))
(*.f64 (/.f64 1 2) (*.f64 2 x))
(*.f64 1/2 (*.f64 x 2))
Compiler

Compiled 29 to 22 computations (24.1% saved)

soundness559.0ms (6.8%)

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)

end28.0ms (0.3%)

Compiler

Compiled 27 to 20 computations (25.9% saved)

Profiling

Loading profile data...