Details

Time bar (total: 9.7s)

analyze98.0ms (1%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
25%74.9%0.1%5
37.5%62.4%0.1%6
50%48.4%1.7%7
59.3%38.2%2.4%8
67.1%27.7%5.2%9
72.6%21.3%6.1%10
76.9%14.7%8.4%11
79.8%11.2%9%12
Compiler

Compiled 10 to 6 computations (40% saved)

sample939.0ms (9.7%)

Results
890.0ms8254×body256valid
24.0ms305×body256invalid
0.0msbody1024valid
0.0msbody512valid

preprocess36.0ms (0.4%)

Algorithm
egg-herbie
Rules
50×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
associate-*l*_binary64
distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0916
12116
23416
34216
45616
56816
69416
710916
811116
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 (+.f64 (*.f64 y x) y) x)
Outputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(fma.f64 x (+.f64 y 1) y)
(+.f64 (+.f64 (*.f64 y x) y) x)
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(fma.f64 x (+.f64 y 1) y)
Symmetry

(sort x y)

Compiler

Compiled 11 to 7 computations (36.4% saved)

simplify17.0ms (0.2%)

Algorithm
egg-herbie
Rules
48×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
distribute-rgt-in_binary64
associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
1128
2258
3358
4458
5588
6808
71028
81098
91108
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) x) y)
Outputs
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))

eval1.0ms (0%)

Compiler

Compiled 15 to 7 computations (53.3% saved)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 x (fma.f64 x y y))
0.0b
(+.f64 (+.f64 (*.f64 x y) x) y)
Compiler

Compiled 17 to 9 computations (47.1% saved)

localize11.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 x (fma.f64 x y y))
Compiler

Compiled 14 to 4 computations (71.4% saved)

series7.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@inf
(+.f64 x (fma.f64 x y y))
1.0ms
x
@-inf
(+.f64 x (fma.f64 x y y))
1.0ms
y
@-inf
(+.f64 x (fma.f64 x y y))
1.0ms
x
@0
(+.f64 x (fma.f64 x y y))
1.0ms
y
@inf
(+.f64 x (fma.f64 x y y))

rewrite86.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
643×pow1_binary64
599×add-log-exp_binary64
599×log1p-expm1-u_binary64
599×expm1-log1p-u_binary64
585×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify55.0ms (0.6%)

Algorithm
egg-herbie
Rules
191×fma-neg_binary64
155×fma-def_binary64
45×unsub-neg_binary64
44×cancel-sign-sub-inv_binary64
38×associate--r+_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
021210
151174
2115166
3299166
4600166
5871166
6939166
7944166
Stop Event
saturated
Counts
57 → 46
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(*.f64 (+.f64 1 y) x)
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
x
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(*.f64 (+.f64 1 x) y)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
Outputs
y
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 y 1) x)
(fma.f64 y x x)
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 (+.f64 y 1) x)
(fma.f64 y x x)
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
x
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(fma.f64 y x y)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
(fma.f64 y x y)
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 y (*.f64 (+.f64 y 1) x))
(fma.f64 (+.f64 y 1) x y)
(+.f64 y (fma.f64 y x x))

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (+.f64 (*.f64 x y) x) y)
0.0b
(+.f64 (*.f64 x y) x)
Compiler

Compiled 19 to 5 computations (73.7% saved)

series11.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
3.0ms
x
@inf
(+.f64 (*.f64 x y) x)
1.0ms
x
@0
(+.f64 (*.f64 x y) x)
1.0ms
x
@-inf
(+.f64 (*.f64 x y) x)
1.0ms
y
@0
(+.f64 (*.f64 x y) x)
1.0ms
y
@inf
(+.f64 (*.f64 x y) x)

rewrite82.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
905×pow1_binary64
846×add-log-exp_binary64
846×log1p-expm1-u_binary64
846×expm1-log1p-u_binary64
828×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify56.0ms (0.6%)

Algorithm
egg-herbie
Rules
191×fma-neg_binary64
161×fma-def_binary64
45×unsub-neg_binary64
44×cancel-sign-sub-inv_binary64
36×associate--r+_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
023284
157284
2128280
3277280
4570280
5846280
6914280
7919280
Stop Event
saturated
Counts
126 → 92
Calls
Call 1
Inputs
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
x
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
y
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(*.f64 (+.f64 1 y) x)
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
x
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(*.f64 (+.f64 1 x) y)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
Outputs
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(fma.f64 y x x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(fma.f64 y x x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(fma.f64 y x x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(fma.f64 y x x)
x
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
y
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 y (*.f64 (+.f64 1 y) x))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(fma.f64 y x x)
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
x
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(*.f64 (+.f64 1 x) y)
(*.f64 y (+.f64 1 x))
(fma.f64 y x y)
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 (*.f64 (+.f64 1 x) y) x)
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 y (+.f64 1 x))
(fma.f64 y x y)
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y)))
(+.f64 y (fma.f64 y x x))
(fma.f64 (+.f64 1 y) x y)
(fma.f64 y x (+.f64 y x))

eval80.0ms (0.8%)

Compiler

Compiled 1719 to 598 computations (65.2% saved)

prune57.0ms (0.6%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New1317138
Fresh000
Picked011
Done101
Total1328140
Error
0b
Counts
140 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (+.f64 (*.f64 x y) x) y)
36.4b
x
26.4b
(*.f64 (+.f64 1 y) x)
26.9b
(+.f64 (*.f64 y x) y)
26.9b
(*.f64 (+.f64 1 x) y)
0.6b
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
10.8b
(+.f64 x y)
37.2b
y
Compiler

Compiled 93 to 57 computations (38.7% saved)

localize21.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
0.5b
(pow.f64 (cbrt.f64 y) 2)
0.6b
(cbrt.f64 y)
Compiler

Compiled 26 to 10 computations (61.5% saved)

series24.0ms (0.2%)

Counts
3 → 18
Calls

12 calls:

TimeVariablePointExpression
10.0ms
y
@inf
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
2.0ms
x
@0
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
2.0ms
y
@-inf
(cbrt.f64 y)
2.0ms
y
@-inf
(pow.f64 (cbrt.f64 y) 2)
1.0ms
y
@0
(cbrt.f64 y)

rewrite82.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
683×pow1_binary64
630×add-log-exp_binary64
630×log1p-expm1-u_binary64
630×expm1-log1p-u_binary64
614×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
116217
2176817
Stop Event
node limit
Counts
3 → 57
Calls
Call 1
Inputs
(cbrt.f64 y)
(pow.f64 (cbrt.f64 y) 2)
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2) (cbrt.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 y)) (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 y 1/6) (pow.f64 y 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 y (cbrt.f64 y)))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 y) 1/3) (pow.f64 (sqrt.f64 y) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 y 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 y) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 y) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2) (cbrt.f64 (*.f64 y (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2) (*.f64 (cbrt.f64 (cbrt.f64 y)) (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (cbrt.f64 y))) (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (pow.f64 y 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 y 1/6) (*.f64 (pow.f64 y 1/6) (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 y) (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2)) (cbrt.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 y (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 y (fma.f64 x y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 x y x) y)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 y (*.f64 y x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 y (fma.f64 x y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (fma.f64 x y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (fma.f64 x y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 y (fma.f64 x y x))) (pow.f64 (cbrt.f64 (+.f64 y (fma.f64 x y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 y (fma.f64 x y x))) 2) (cbrt.f64 (+.f64 y (fma.f64 x y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 y (fma.f64 x y x))) (sqrt.f64 (+.f64 y (fma.f64 x y x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 y 3) (pow.f64 (fma.f64 x y x) 3)) (+.f64 (*.f64 y y) (-.f64 (pow.f64 (fma.f64 x y x) 2) (*.f64 y (fma.f64 x y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 y y) (pow.f64 (fma.f64 x y x) 2)) (-.f64 y (fma.f64 x y x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 y (fma.f64 x y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 y (fma.f64 x y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 y (fma.f64 x y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 y (fma.f64 x y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 y (fma.f64 x y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 y (fma.f64 x y x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 y (fma.f64 x y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 y (fma.f64 x y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 y (fma.f64 x y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 y (fma.f64 x y x))))))))

simplify6.9s (71.3%)

Algorithm
egg-herbie
Rules
1726×sqr-pow_binary64
1725×pow-base-1_binary64
226×fma-def_binary64
215×fma-neg_binary64
42×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
018119
150107
2113107
3233107
4417107
5783107
61106107
71125107
81129107
91133107
101137107
111141107
121145107
131149107
141153107
151157107
161161107
171165107
181169107
191173107
201177107
211181107
221185107
231189107
241193107
251197107
261201107
271205107
281209107
291213107
301217107
311221107
321225107
331229107
341233107
351237107
361241107
371245107
381249107
391253107
401257107
411261107
421265107
431269107
441273107
451277107
461281107
471285107
481289107
491293107
501297107
511301107
521305107
531309107
541313107
551317107
561321107
571325107
581329107
591333107
601337107
611341107
621345107
631349107
641353107
651357107
661361107
671365107
681369107
691373107
701377107
711381107
721385107
731389107
741393107
751397107
761401107
771405107
781409107
791413107
801417107
811421107
821425107
831429107
841433107
851437107
861441107
871445107
881449107
891453107
901457107
911461107
921465107
931469107
941473107
951477107
961481107
971485107
981489107
991493107
1001497107
1011501107
1021505107
1031509107
1041513107
1051517107
1061521107
1071525107
1081529107
1091533107
1101537107
1111541107
1121545107
1131549107
1141553107
1151557107
1161561107
1171565107
1181569107
1191573107
1201577107
1211581107
1221585107
1231589107
1241593107
1251597107
1261601107
1271605107
1281609107
1291613107
1301617107
1311621107
1321625107
1331629107
1341633107
1351637107
1361641107
1371645107
1381649107
1391653107
1401657107
1411661107
1421665107
1431669107
1441673107
1451677107
1461681107
1471685107
1481689107
1491693107
1501697107
1511701107
1521705107
1531709107
1541713107
1551717107
1561721107
1571725107
1581729107
1591733107
1601737107
1611741107
1621745107
1631749107
1641753107
1651757107
1661761107
1671765107
1681769107
1691773107
1701777107
1711781107
1721785107
1731789107
1741793107
1751797107
1761801107
1771805107
1781809107
1791813107
1801817107
1811821107
1821825107
1831829107
1841833107
1851837107
1861841107
1871845107
1881849107
1891853107
1901857107
1911861107
1921865107
1931869107
1941873107
1951877107
1961881107
1971885107
1981889107
1991893107
2001897107
2011901107
2021905107
2031909107
2041913107
2051917107
2061921107
2071925107
2081929107
2091933107
2101937107
2111941107
2121945107
2131949107
2141953107
2151957107
2161961107
2171965107
2181969107
2191973107
2201977107
2211981107
2221985107
2231989107
2241993107
2251997107
2262001107
2272005107
2282009107
2292013107
2302017107
2312021107
2322025107
2332029107
2342033107
2352037107
2362041107
2372045107
2382049107
2392053107
2402057107
2412061107
2422065107
2432069107
2442073107
2452077107
2462081107
2472085107
2482089107
2492093107
2502097107
2512101107
2522105107
2532109107
2542113107
2552117107
2562121107
2572125107
2582129107
2592133107
2602137107
2612141107
2622145107
2632149107
2642153107
2652157107
2662161107
2672165107
2682169107
2692173107
2702177107
2712181107
2722185107
2732189107
2742193107
2752197107
2762201107
2772205107
2782209107
2792213107
2802217107
2812221107
2822225107
2832229107
2842233107
2852237107
2862241107
2872245107
2882249107
2892253107
2902257107
2912261107
2922265107
2932269107
2942273107
2952277107
2962281107
2972285107
2982289107
2992293107
3002297107
3012301107
3022305107
3032309107
3042313107
3052317107
3062321107
3072325107
3082329107
3092333107
3102337107
3112341107
3122345107
3132349107
3142353107
3152357107
3162361107
3172365107
3182369107
3192373107
3202377107
3212381107
3222385107
3232389107
3242393107
3252397107
3262401107
3272405107
3282409107
3292413107
3302417107
3312421107
3322425107
3332429107
3342433107
3352437107
3362441107
3372445107
3382449107
3392453107
3402457107
3412461107
3422465107
3432469107
3442473107
3452477107
3462481107
3472485107
3482489107
3492493107
3502497107
3512501107
3522505107
3532509107
3542513107
3552517107
3562521107
3572525107
3582529107
3592533107
3602537107
3612541107
3622545107
3632549107
3642553107
3652557107
3662561107
3672565107
3682569107
3692573107
3702577107
3712581107
3722585107
3732589107
3742593107
3752597107
3762601107
3772605107
3782609107
3792613107
3802617107
3812621107
3822625107
3832629107
3842633107
3852637107
3862641107
3872645107
3882649107
3892653107
3902657107
3912661107
3922665107
3932669107
3942673107
3952677107
3962681107
3972685107
3982689107
3992693107
4002697107
4012701107
4022705107
4032709107
4042713107
4052717107
4062721107
4072725107
4082729107
4092733107
4102737107
4112741107
4122745107
4132749107
4142753107
4152757107
4162761107
4172765107
4182769107
4192773107
4202777107
4212781107
4222785107
4232789107
4242793107
4252797107
4262801107
4272805107
4282809107
4292813107
4302817107
4312821107
4322825107
4332829107
4342833107
4352837107
4362841107
4372845107
4382849107
4392853107
4402857107
4412861107
4422865107
4432869107
4442873107
4452877107
4462881107
4472885107
4482889107
4492893107
4502897107
4512901107
4522905107
4532909107
4542913107
4552917107
4562921107
4572925107
4582929107
4592933107
4602937107
4612941107
4622945107
4632949107
4642953107
4652957107
4662961107
4672965107
4682969107
4692973107
4702977107
4712981107
4722985107
4732989107
4742993107
4752997107
4763001107
4773005107
4783009107
4793013107
4803017107
4813021107
4823025107
4833029107
4843033107
4853037107
4863041107
4873045107
4883049107
4893053107
4903057107
4913061107
4923065107
4933069107
4943073107
4953077107
4963081107
4973085107
4983089107
4993093107
5003097107
5013101107
5023105107
5033109107
5043113107
5053117107
5063121107
5073125107
5083129107
5093133107
5103137107
5113141107
5123145107
5133149107
5143153107
5153157107
5163161107
5173165107
5183169107
5193173107
5203177107
5213181107
5223185107
5233189107
5243193107
5253197107
5263201107
5273205107
5283209107
5293213107
5303217107
5313221107
5323225107
5333229107
5343233107
5353237107
5363241107
5373245107
5383249107
5393253107
5403257107
5413261107
5423265107
5433269107
5443273107
5453277107
5463281107
5473285107
5483289107
5493293107
5503297107
5513301107
5523305107
5533309107
5543313107
5553317107
5563321107
5573325107
5583329107
5593333107
5603337107
5613341107
5623345107
5633349107
5643353107
5653357107
5663361107
5673365107
5683369107
5693373107
5703377107
5713381107
5723385107
5733389107
5743393107
5753397107
5763401107
5773405107
5783409107
5793413107
5803417107
5813421107
5823425107
5833429107
5843433107
5853437107
5863441107
5873445107
5883449107
5893453107
5903457107
5913461107
5923465107
5933469107
5943473107
5953477107
5963481107
5973485107
5983489107
5993493107
6003497107
6013501107
6023505107
6033509107
6043513107
6053517107
6063521107
6073525107
6083529107
6093533107
6103537107
6113541107
6123545107
6133549107
6143553107
6153557107
6163561107
6173565107
6183569107
6193573107
6203577107
6213581107
6223585107
6233589107
6243593107
6253597107
6263601107
6273605107
6283609107
6293613107
6303617107
6313621107
6323625107
6333629107
6343633107
6353637107
6363641107
6373645107
6383649107
6393653107
6403657107
6413661107
6423665107
6433669107
6443673107
6453677107
6463681107
6473685107
6483689107
6493693107
6503697107
6513701107
6523705107
6533709107
6543713107
6553717107
6563721107
6573725107
6583729107
6593733107
6603737107
6613741107
6623745107
6633749107
6643753107
6653757107
6663761107
6673765107
6683769107
6693773107
6703777107
6713781107
6723785107
6733789107
6743793107
6753797107
6763801107
6773805107
6783809107
6793813107
6803817107
6813821107
6823825107
6833829107
6843833107
6853837107
6863841107
6873845107
6883849107
6893853107
6903857107
6913861107
6923865107
6933869107
6943873107
6953877107
6963881107
6973885107
6983889107
6993893107
7003897107
7013901107
7023905107
7033909107
7043913107
7053917107
7063921107
7073925107
7083929107
7093933107
7103937107
7113941107
7123945107
7133949107
7143953107
7153957107
7163961107
7173965107
7183969107
7193973107
7203977107
7213981107
7223985107
7233989107
7243993107
7253997107
7264001107
7274005107
7284009107
7294013107
7304017107
7314021107
7324025107
7334029107
7344033107
7354037107
7364041107
7374045107
7384049107
7394053107
7404057107
7414061107
7424065107
7434069107
7444073107
7454077107
7464081107
7474085107
7484089107
7494093107
7504097107
7514101107
7524105107
7534109107
7544113107
7554117107
7564121107
7574125107
7584129107
7594133107
7604137107
7614141107
7624145107
7634149107
7644153107
7654157107
7664161107
7674165107
7684169107
7694173107
7704177107
7714181107
7724185107
7734189107
7744193107
7754197107
7764201107
7774205107
7784209107
7794213107
7804217107
7814221107
7824225107
7834229107
7844233107
7854237107
7864241107
7874245107
7884249107
7894253107
7904257107
7914261107
7924265107
7934269107
7944273107
7954277107
7964281107
7974285107
7984289107
7994293107
8004297107
8014301107
8024305107
8034309107
8044313107
8054317107
8064321107
8074325107
8084329107
8094333107
8104337107
8114341107
8124345107
8134349107
8144353107
8154357107
8164361107
8174365107
8184369107
8194373107
8204377107
8214381107
8224385107
8234389107
8244393107
8254397107
8264401107
8274405107
8284409107
8294413107
8304417107
8314421107
8324425107
8334429107
8344433107
8354437107
8364441107
8374445107
8384449107
8394453107
8404457107
8414461107
8424465107
8434469107
8444473107
8454477107
8464481107
8474485107
8484489107
8494493107
8504497107
8514501107
8524505107
8534509107
8544513107
8554517107
8564521107
8574525107
8584529107
8594533107
8604537107
8614541107
8624545107
8634549107
8644553107
8654557107
8664561107
8674565107
8684569107
8694573107
8704577107
8714581107
8724585107
8734589107
8744593107
8754597107
8764601107
8774605107
8784609107
8794613107
8804617107
8814621107
8824625107
8834629107
8844633107
8854637107
8864641107
8874645107
8884649107
8894653107
8904657107
8914661107
8924665107
8934669107
8944673107
8954677107
8964681107
8974685107
8984689107
8994693107
9004697107
9014701107
9024705107
9034709107
9044713107
9054717107
9064721107
9074725107
9084729107
9094733107
9104737107
9114741107
9124745107
9134749107
9144753107
9154757107
9164761107
9174765107
9184769107
9194773107
9204777107
9214781107
9224785107
9234789107
9244793107
9254797107
9264801107
9274805107
9284809107
9294813107
9304817107
9314821107
9324825107
9334829107
9344833107
9354837107
9364841107
9374845107
9384849107
9394853107
9404857107
9414861107
9424865107
9434869107
9444873107
9454877107
9464881107
9474885107
9484889107
9494893107
9504897107
9514901107
9524905107
9534909107
9544913107
9554917107
9564921107
9574925107
9584929107
9594933107
9604937107
9614941107
9624945107
9634949107
9644953107
9654957107
9664961107
9674965107
9684969107
9694973107
9704977107
9714981107
9724985107
9734989107
9744993107
9754997107
9765001107
9775005107
9785009107
9795013107
9805017107
9815021107
9825025107
9835029107
9845033107
9855037107
9865041107
9875045107
9885049107
9895053107
9905057107
9915061107
9925065107
9935069107
9945073107
9955077107
9965081107
9975085107
9985089107
9995093107
10005097107
10015101107
10025105107
10035109107
10045113107
10055117107
10065121107
10075125107
10085129107
10095133107
10105137107
10115141107
10125145107
10135149107
10145153107
10155157107
10165161107
10175165107
10185169107
10195173107
10205177107
10215181107
10225185107
10235189107
10245193107
10255197107
10265201107
10275205107
10285209107
10295213107
10305217107
10315221107
10325225107
10335229107
10345233107
10355237107
10365241107
10375245107
10385249107
10395253107
10405257107
10415261107
10425265107
10435269107
10445273107
10455277107
10465281107
10475285107
10485289107
10495293107
10505297107
10515301107
10525305107
10535309107
10545313107
10555317107
10565321107
10575325107
10585329107
10595333107
10605337107
10615341107
10625345107
10635349107
10645353107
10655357107
10665361107
10675365107
10685369107
10695373107
10705377107
10715381107
10725385107
10735389107
10745393107
10755397107
10765401107
10775405107
10785409107
10795413107
10805417107
10815421107
10825425107
10835429107
10845433107
10855437107
10865441107
10875445107
10885449107
10895453107
10905457107
10915461107
10925465107
10935469107
10945473107
10955477107
10965481107
10975485107
10985489107
10995493107
11005497107
11015501107
11025505107
11035509107
11045513107
11055517107
11065521107
11075525107
11085529107
11095533107
11105537107
11115541107
11125545107
11135549107
11145553107
11155557107
11165561107
11175565107
11185569107
11195573107
11205577107
11215581107
11225585107
11235589107
11245593107
11255597107
11265601107
11275605107
11285609107
11295613107
11305617107
11315621107
11325625107
11335629107
11345633107
11355637107
11365641107
11375645107
11385649107
11395653107
11405657107
11415661107
11425665107
11435669107
11445673107
11455677107
11465681107
11475685107
11485689107
11495693107
11505697107
11515701107
11525705107
11535709107
11545713107
11555717107
11565721107
11575725107
11585729107
11595733107
11605737107
11615741107
11625745107
11635749107
11645753107
11655757107
11665761107
11675765107
11685769107
11695773107
11705777107
11715781107
11725785107
11735789107
11745793107
11755797107
11765801107
11775805107
11785809107
11795813107
11805817107
11815821107
11825825107
11835829107
11845833107
11855837107
11865841107
11875845107
11885849107
11895853107
11905857107
11915861107
11925865107
11935869107
11945873107
11955877107
11965881107
11975885107
11985889107
11995893107
12005897107
12015901107
12025905107
12035909107
12045913107
12055917107
12065921107
12075925107
12085929107
12095933107
12105937107
12115941107
12125945107
12135949107
12145953107
12155957107
12165961107
12175965107
12185969107
12195973107
12205977107
12215981107
12225985107
12235989107
12245993107
12255997107
12266001107
12276005107
12286009107
12296013107
12306017107
12316021107
12326025107
12336029107
12346033107
12356037107
12366041107
12376045107
12386049107
12396053107
12406057107
12416061107
12426065107
12436069107
12446073107
12456077107
12466081107
12476085107
12486089107
12496093107
12506097107
12516101107
12526105107
12536109107
12546113107
12556117107
12566121107
12576125107
12586129107
12596133107
12606137107
12616141107
12626145107
12636149107
12646153107
12656157107
12666161107
12676165107
12686169107
12696173107
12706177107
12716181107
12726185107
12736189107
12746193107
12756197107
12766201107
12776205107
12786209107
12796213107
12806217107
12816221107
12826225107
12836229107
12846233107
12856237107
12866241107
12876245107
12886249107
12896253107
12906257107
12916261107
12926265107
12936269107
12946273107
12956277107
12966281107
12976285107
12986289107
12996293107
13006297107
13016301107
13026305107
13036309107
13046313107
13056317107
13066321107
13076325107
13086329107
13096333107
13106337107
13116341107
13126345107
13136349107
13146353107
13156357107
13166361107
13176365107
13186369107
13196373107
13206377107
13216381107
13226385107
13236389107
13246393107
13256397107
13266401107
13276405107
13286409107
13296413107
13306417107
13316421107
13326425107
13336429107
13346433107
13356437107
13366441107
13376445107
13386449107
13396453107
13406457107
13416461107
13426465107
13436469107
13446473107
13456477107
13466481107
13476485107
13486489107
13496493107
13506497107
13516501107
13526505107
13536509107
13546513107
13556517107
13566521107
13576525107
13586529107
13596533107
13606537107
13616541107
13626545107
13636549107
13646553107
13656557107
13666561107
13676565107
13686569107
13696573107
13706577107
13716581107
13726585107
13736589107
13746593107
13756597107
13766601107
13776605107
13786609107
13796613107
13806617107
13816621107
13826625107
13836629107
13846633107
13856637107
13866641107
13876645107
13886649107
13896653107
13906657107
13916661107
13926665107
13936669107
13946673107
13956677107
13966681107
13976685107
13986689107
13996693107
14006697107
14016701107
14026705107
14036709107
14046713107
14056717107
14066721107
14076725107
14086729107
14096733107
14106737107
14116741107
14126745107
14136749107
14146753107
14156757107
14166761107
14176765107
14186769107
14196773107
14206777107
14216781107
14226785107
14236789107
14246793107
14256797107
14266801107
14276805107
14286809107
14296813107
14306817107
14316821107
14326825107
14336829107
14346833107
14356837107
14366841107
14376845107
14386849107
14396853107
14406857107
14416861107
14426865107
14436869107
14446873107
14456877107
14466881107
14476885107
14486889107
14496893107
14506897107
14516901107
14526905107
14536909107
14546913107
14556917107
14566921107
14576925107
14586929107
14596933107
14606937107
14616941107
14626945107
14636949107
14646953107
14656957107
14666961107
14676965107
14686969107
14696973107
14706977107
14716981107
14726985107
14736989107
14746993107
14756997107
14767001107
14777005107
14787009107
14797013107
14807017107
14817021107
14827025107
14837029107
14847033107
14857037107
14867041107
14877045107
14887049107
14897053107
14907057107
14917061107
14927065107
14937069107
14947073107
14957077107
14967081107
14977085107
14987089107
14997093107
15007097107
15017101107
15027105107
15037109107
15047113107
15057117107
15067121107
15077125107
15087129107
15097133107
15107137107
15117141107
15127145107
15137149107
15147153107
15157157107
15167161107
15177165107
15187169107
15197173107
15207177107
15217181107
15227185107
15237189107
15247193107
15257197107
15267201107
15277205107
15287209107
15297213107
15307217107
15317221107
15327225107
15337229107
15347233107
15357237107
15367241107
15377245107
15387249107
15397253107
15407257107
15417261107
15427265107
15437269107
15447273107
15457277107
15467281107
15477285107
15487289107
15497293107
15507297107
15517301107
15527305107
15537309107
15547313107
15557317107
15567321107
15577325107
15587329107
15597333107
15607337107
15617341107
15627345107
15637349107
15647353107
15657357107
15667361107
15677365107
15687369107
15697373107
15707377107
15717381107
15727385107
15737389107
15747393107
15757397107
15767401107
15777405107
15787409107
15797413107
15807417107
15817421107
15827425107
15837429107
15847433107
15857437107
15867441107
15877445107
15887449107
15897453107
15907457107
15917461107
15927465107
15937469107
15947473107
15957477107
15967481107
15977485107
15987489107
15997493107
16007497107
16017501107
16027505107
16037509107
16047513107
16057517107
16067521107
16077525107
16087529107
16097533107
16107537107
16117541107
16127545107
16137549107
16147553107
16157557107
16167561107
16177565107
16187569107
16197573107
16207577107
16217581107
16227585107
16237589107
16247593107
16257597107
16267601107
16277605107
16287609107
16297613107
16307617107
16317621107
16327625107
16337629107
16347633107
16357637107
16367641107
16377645107
16387649107
16397653107
16407657107
16417661107
16427665107
16437669107
16447673107
16457677107
16467681107
16477685107
16487689107
16497693107
16507697107
16517701107
16527705107
16537709107
16547713107
16557717107
16567721107
16577725107
16587729107
16597733107
16607737107
16617741107
16627745107
16637749107
16647753107
16657757107
16667761107
16677765107
16687769107
16697773107
16707777107
16717781107
16727785107
16737789107
16747793107
16757797107
16767801107
16777805107
16787809107
16797813107
16807817107
16817821107
16827825107
16837829107
16847833107
16857837107
16867841107
16877845107
16887849107
16897853107
16907857107
16917861107
16927865107
16937869107
16947873107
16957877107
16967881107
16977885107
16987889107
16997893107
17007897107
17017901107
17027905107
17037909107
17047913107
17057917107
17067921107
17077925107
17087929107
17097933107
17107937107
17117941107
17127945107
17137949107
17147953107
17157957107
17167961107
17177965107
17187969107
17197973107
17207977107
17217981107
17227985107
17237989107
17247993107
17257997107
Stop Event
node limit
Counts
75 → 69
Calls
Call 1
Inputs
x
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(*.f64 (pow.f64 1 1/3) y)
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(*.f64 (+.f64 1 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
Outputs
x
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(*.f64 (pow.f64 1 1/3) y)
(*.f64 y 1)
y
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(*.f64 (+.f64 1 y) x)
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 (+.f64 1 y) x))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))
(+.f64 (*.f64 (pow.f64 1 1/3) y) (*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x)))
(fma.f64 1 y (fma.f64 y x x))
(+.f64 y (fma.f64 x y x))
(+.f64 x (fma.f64 x y y))

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (+.f64 1 x) y)
Compiler

Compiled 13 to 8 computations (38.5% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite50.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
604×pow1_binary64
560×add-log-exp_binary64
560×log1p-expm1-u_binary64
560×expm1-log1p-u_binary64
549×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify10.0ms (0.1%)

Algorithm
egg-herbie
Rules
14×fma-def_binary64
associate-*r*_binary64
associate-*l*_binary64
*-lft-identity_binary64
*-rgt-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0654
1854
21254
31654
42254
52854
64154
74554
84754
Stop Event
saturated
Counts
31 → 22
Calls
Call 1
Inputs
y
(+.f64 (*.f64 y x) y)
(+.f64 (*.f64 y x) y)
(+.f64 (*.f64 y x) y)
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
Outputs
y
(+.f64 (*.f64 y x) y)
(fma.f64 y x y)
(+.f64 (*.f64 y x) y)
(fma.f64 y x y)
(+.f64 (*.f64 y x) y)
(fma.f64 y x y)
(*.f64 y x)
(+.f64 y (*.f64 y x))
(fma.f64 y x y)
(+.f64 y (*.f64 y x))
(fma.f64 y x y)
(+.f64 y (*.f64 y x))
(fma.f64 y x y)
(*.f64 y x)
(+.f64 y (*.f64 y x))
(fma.f64 y x y)
(+.f64 y (*.f64 y x))
(fma.f64 y x y)
(+.f64 y (*.f64 y x))
(fma.f64 y x y)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (+.f64 1 y) x)
Compiler

Compiled 13 to 8 computations (38.5% saved)

series4.0ms (0%)

Counts
1 → 12
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@0
(*.f64 (+.f64 1 y) x)
0.0ms
x
@inf
(*.f64 (+.f64 1 y) x)
0.0ms
x
@-inf
(*.f64 (+.f64 1 y) x)
0.0ms
y
@0
(*.f64 (+.f64 1 y) x)
0.0ms
y
@-inf
(*.f64 (+.f64 1 y) x)

rewrite52.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
604×pow1_binary64
560×add-log-exp_binary64
560×log1p-expm1-u_binary64
560×expm1-log1p-u_binary64
549×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify10.0ms (0.1%)

Algorithm
egg-herbie
Rules
14×fma-def_binary64
associate-*r*_binary64
associate-*l*_binary64
*-lft-identity_binary64
*-rgt-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0554
11154
21654
32254
42854
54154
64554
74754
Stop Event
saturated
Counts
31 → 23
Calls
Call 1
Inputs
x
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) x)
Outputs
x
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)
(+.f64 (*.f64 y x) x)
(fma.f64 y x x)
(fma.f64 x y x)

localize4.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 y x) y)
Compiler

Compiled 12 to 4 computations (66.7% saved)

series2.0ms (0%)

Counts
1 → 21
Calls

6 calls:

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

rewrite51.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
618×pow1_binary64
575×add-log-exp_binary64
575×log1p-expm1-u_binary64
575×expm1-log1p-u_binary64
562×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify20.0ms (0.2%)

Algorithm
egg-herbie
Rules
68×fma-def_binary64
53×fma-neg_binary64
20×unsub-neg_binary64
16×distribute-lft-in_binary64
16×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013135
12999
26299
313999
423899
533699
639699
Stop Event
saturated
Counts
59 → 44
Calls
Call 1
Inputs
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 (+.f64 1 x) y)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
y
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(*.f64 y x)
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
(+.f64 y (*.f64 y x))
Outputs
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 x) 1) y))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
y
(*.f64 y x)
(*.f64 x y)
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(*.f64 y x)
(*.f64 x y)
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)
(+.f64 y (*.f64 y x))
(*.f64 (+.f64 1 x) y)
(fma.f64 x y y)

eval35.0ms (0.4%)

Compiler

Compiled 1895 to 705 computations (62.8% saved)

prune29.0ms (0.3%)

Pruning

9 alts after pruning (4 fresh and 5 done)

PrunedKeptTotal
New1762178
Fresh022
Picked011
Done145
Total1779186
Error
0b
Counts
186 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
26.4b
(+.f64 (*.f64 y x) x)
26.9b
(*.f64 (+.f64 1 x) y)
26.4b
(*.f64 (+.f64 1 y) x)
26.9b
(+.f64 (*.f64 y x) y)
52.6b
(*.f64 y x)
36.4b
x
0.6b
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
10.8b
(+.f64 x y)
37.2b
y
Compiler

Compiled 57 to 35 computations (38.6% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 y x) x)
Compiler

Compiled 12 to 4 computations (66.7% saved)

series2.0ms (0%)

Counts
1 → 15
Calls

6 calls:

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

rewrite48.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
633×pow1_binary64
590×add-log-exp_binary64
589×log1p-expm1-u_binary64
589×expm1-log1p-u_binary64
577×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify17.0ms (0.2%)

Algorithm
egg-herbie
Rules
66×fma-def_binary64
53×fma-neg_binary64
20×unsub-neg_binary64
16×distribute-lft-in_binary64
16×distribute-rgt-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01293
12793
25869
313969
423669
533469
639469
Stop Event
saturated
Counts
55 → 45
Calls
Call 1
Inputs
x
(*.f64 y x)
(*.f64 y x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 (+.f64 1 y) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
Outputs
x
(*.f64 y x)
(*.f64 x y)
(*.f64 y x)
(*.f64 x y)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 (+.f64 1 y) x)
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 y) 1) x))
(*.f64 x (+.f64 y 1))
(fma.f64 x y x)

eval9.0ms (0.1%)

Compiler

Compiled 468 to 182 computations (61.1% saved)

prune10.0ms (0.1%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New44145
Fresh112
Picked011
Done066
Total45954
Error
0b
Counts
54 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
52.6b
(*.f64 y x)
36.4b
x
26.4b
(+.f64 (*.f64 y x) x)
26.9b
(*.f64 (+.f64 1 x) y)
26.4b
(*.f64 (+.f64 1 y) x)
26.9b
(+.f64 (*.f64 y x) y)
0.6b
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
10.8b
(+.f64 x y)
37.2b
y
Compiler

Compiled 57 to 35 computations (38.6% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.0ms (0%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New000
Fresh022
Picked000
Done077
Total099
Error
0b
Counts
9 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
52.6b
(*.f64 y x)
36.4b
x
26.4b
(+.f64 (*.f64 y x) x)
26.9b
(*.f64 (+.f64 1 x) y)
26.4b
(*.f64 (+.f64 1 y) x)
26.9b
(+.f64 (*.f64 y x) y)
0.6b
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
10.8b
(+.f64 x y)
37.2b
y
Compiler

Compiled 57 to 35 computations (38.6% saved)

regimes26.0ms (0.3%)

Counts
12 → 1
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 y x) x)
(*.f64 (+.f64 1 y) x)
(+.f64 (*.f64 y x) y)
(*.f64 (+.f64 1 x) y)
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 x (fma.f64 x y y))
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 y) (fma.f64 x y x))
Outputs
(+.f64 x (fma.f64 x y y))
Calls

3 calls:

8.0ms
(+.f64 (+.f64 (*.f64 x y) x) y)
8.0ms
x
7.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(+.f64 (+.f64 (*.f64 x y) x) y)
Compiler

Compiled 70 to 31 computations (55.7% saved)

regimes23.0ms (0.2%)

Counts
10 → 1
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 y x) x)
(*.f64 (+.f64 1 y) x)
(+.f64 (*.f64 y x) y)
(*.f64 (+.f64 1 x) y)
(+.f64 (+.f64 (*.f64 x y) x) y)
Outputs
(+.f64 (+.f64 (*.f64 x y) x) y)
Calls

3 calls:

8.0ms
(+.f64 (+.f64 (*.f64 x y) x) y)
7.0ms
x
6.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(+.f64 (+.f64 (*.f64 x y) x) y)
Compiler

Compiled 53 to 24 computations (54.7% saved)

regimes34.0ms (0.4%)

Counts
9 → 3
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 y x) x)
(*.f64 (+.f64 1 y) x)
(+.f64 (*.f64 y x) y)
(*.f64 (+.f64 1 x) y)
Outputs
(*.f64 (+.f64 1 y) x)
(+.f64 x y)
(*.f64 (+.f64 1 x) y)
Calls

2 calls:

17.0ms
y
16.0ms
x
Results
ErrorSegmentsBranch
0.5b3x
0.3b3y
Compiler

Compiled 37 to 16 computations (56.8% saved)

bsearch34.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
18.0ms
4.515618260933781e-17
3.937197434730548e-9
16.0ms
-1.9584719749471326e-11
-2.6580007844007143e-28
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes36.0ms (0.4%)

Counts
8 → 3
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 y x) x)
(*.f64 (+.f64 1 y) x)
(+.f64 (*.f64 y x) y)
Outputs
(*.f64 (+.f64 1 y) x)
(+.f64 x y)
(+.f64 (*.f64 y x) y)
Calls

2 calls:

17.0ms
y
17.0ms
x
Results
ErrorSegmentsBranch
0.5b3x
0.3b3y
Compiler

Compiled 32 to 13 computations (59.4% saved)

bsearch35.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
18.0ms
4.515618260933781e-17
3.937197434730548e-9
17.0ms
-1.9584719749471326e-11
-2.6580007844007143e-28
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes38.0ms (0.4%)

Counts
7 → 3
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 y x) x)
(*.f64 (+.f64 1 y) x)
Outputs
(*.f64 (+.f64 1 y) x)
(+.f64 x y)
(*.f64 y x)
Calls

2 calls:

21.0ms
y
16.0ms
x
Results
ErrorSegmentsBranch
1.0b3x
6.4b4y
Compiler

Compiled 27 to 12 computations (55.6% saved)

bsearch35.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
18.0ms
0.0004145867583617807
3423679.2665269095
17.0ms
-106299751728.61505
-485063634.90336496
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes46.0ms (0.5%)

Counts
6 → 3
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 y x) x)
Outputs
(+.f64 (*.f64 y x) x)
(+.f64 x y)
(*.f64 y x)
Calls

2 calls:

23.0ms
x
22.0ms
y
Results
ErrorSegmentsBranch
1.0b3x
6.4b4y
Compiler

Compiled 22 to 9 computations (59.1% saved)

bsearch33.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
17.0ms
0.0004145867583617807
3423679.2665269095
16.0ms
-106299751728.61505
-485063634.90336496
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes31.0ms (0.3%)

Counts
5 → 4
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
(+.f64 x y)
Outputs
(*.f64 y x)
(+.f64 x y)
(*.f64 y x)
(+.f64 x y)
Calls

2 calls:

20.0ms
y
9.0ms
x
Results
ErrorSegmentsBranch
8.5b2x
7.0b4y
Compiler

Compiled 17 to 8 computations (52.9% saved)

bsearch53.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
18.0ms
2590073852029843500.0
6.447820234831581e+21
18.0ms
7712907035.649593
88440505735.79195
17.0ms
-115.05901184730483
-1.9584719749471326e-11
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes57.0ms (0.6%)

Counts
4 → 5
Calls
Call 1
Inputs
x
x
y
(*.f64 y x)
Outputs
(*.f64 y x)
x
y
(*.f64 y x)
y
Calls

2 calls:

28.0ms
y
27.0ms
x
Results
ErrorSegmentsBranch
14.7b3x
13.9b5y
Compiler

Compiled 14 to 7 computations (50% saved)

bsearch87.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
2590073852029843500.0
6.447820234831581e+21
16.0ms
7712907035.649593
88440505735.79195
24.0ms
7.632522385906281e-119
7.919020490421935e-117
30.0ms
-115.05901184730483
-1.9584719749471326e-11
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes27.0ms (0.3%)

Counts
3 → 2
Calls
Call 1
Inputs
x
x
y
Outputs
x
y
Calls

2 calls:

15.0ms
y
11.0ms
x
Results
ErrorSegmentsBranch
17.0b2x
17.7b2y
Compiler

Compiled 11 to 6 computations (45.5% saved)

bsearch18.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
17.0ms
-3.609483627611399e-95
-1.8758844537103448e-106
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes8.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
2 → 1
Calls
Call 1
Inputs
x
x
Outputs
x
Calls

2 calls:

3.0ms
x
3.0ms
y
Results
ErrorSegmentsBranch
36.4b1x
36.4b1y
Compiler

Compiled 10 to 6 computations (40% saved)

simplify11.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative_binary64
*-commutative_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
051210
163210
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (fma.f64 x y y))
(+.f64 (+.f64 (*.f64 x y) x) y)
(if (<=.f64 y -378823574000839/19342813113834066795298816) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 3663504767279527/81129638414606681695789005144064) (+.f64 x y) (*.f64 (+.f64 1 x) y)))
(if (<=.f64 y -378823574000839/19342813113834066795298816) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 3663504767279527/81129638414606681695789005144064) (+.f64 x y) (+.f64 (*.f64 y x) y)))
(if (<=.f64 x -1741615132321629/16384) (*.f64 (+.f64 1 y) x) (if (<=.f64 x 955971978481079/2305843009213693952) (+.f64 x y) (*.f64 y x)))
(if (<=.f64 x -1741615132321629/16384) (+.f64 (*.f64 y x) x) (if (<=.f64 x 955971978481079/2305843009213693952) (+.f64 x y) (*.f64 y x)))
(if (<=.f64 y -8096558170017805/70368744177664) (*.f64 y x) (if (<=.f64 y 2021892301953327/262144) (+.f64 x y) (if (<=.f64 y 2590073852029843456) (*.f64 y x) (+.f64 x y))))
(if (<=.f64 y -8096558170017805/70368744177664) (*.f64 y x) (if (<=.f64 y 6934516042662229/90854840536950861318665475986000566794205170085914757535186274897579911014174740415773881339220445695095315200783272241691825203576832) x (if (<=.f64 y 2021892301953327/262144) y (if (<=.f64 y 2590073852029843456) (*.f64 y x) y))))
(if (<=.f64 x -2712648320406509/75153362648762663292463379097258784876021841565066235862633311089030688803667470190838367948312598497021919232) x y)
x
Outputs
(+.f64 x (fma.f64 x y y))
(+.f64 (+.f64 (*.f64 x y) x) y)
(+.f64 y (+.f64 x (*.f64 x y)))
(if (<=.f64 y -378823574000839/19342813113834066795298816) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 3663504767279527/81129638414606681695789005144064) (+.f64 x y) (*.f64 (+.f64 1 x) y)))
(if (<=.f64 y -378823574000839/19342813113834066795298816) (*.f64 x (+.f64 y 1)) (if (<=.f64 y 3663504767279527/81129638414606681695789005144064) (+.f64 x y) (*.f64 y (+.f64 x 1))))
(if (<=.f64 y -378823574000839/19342813113834066795298816) (*.f64 (+.f64 1 y) x) (if (<=.f64 y 3663504767279527/81129638414606681695789005144064) (+.f64 x y) (+.f64 (*.f64 y x) y)))
(if (<=.f64 y -378823574000839/19342813113834066795298816) (*.f64 x (+.f64 y 1)) (if (<=.f64 y 3663504767279527/81129638414606681695789005144064) (+.f64 x y) (+.f64 y (*.f64 x y))))
(if (<=.f64 x -1741615132321629/16384) (*.f64 (+.f64 1 y) x) (if (<=.f64 x 955971978481079/2305843009213693952) (+.f64 x y) (*.f64 y x)))
(if (<=.f64 x -1741615132321629/16384) (*.f64 x (+.f64 y 1)) (if (<=.f64 x 955971978481079/2305843009213693952) (+.f64 x y) (*.f64 x y)))
(if (<=.f64 x -1741615132321629/16384) (+.f64 (*.f64 y x) x) (if (<=.f64 x 955971978481079/2305843009213693952) (+.f64 x y) (*.f64 y x)))
(if (<=.f64 x -1741615132321629/16384) (+.f64 x (*.f64 x y)) (if (<=.f64 x 955971978481079/2305843009213693952) (+.f64 x y) (*.f64 x y)))
(if (<=.f64 y -8096558170017805/70368744177664) (*.f64 y x) (if (<=.f64 y 2021892301953327/262144) (+.f64 x y) (if (<=.f64 y 2590073852029843456) (*.f64 y x) (+.f64 x y))))
(if (<=.f64 y -8096558170017805/70368744177664) (*.f64 x y) (if (<=.f64 y 2021892301953327/262144) (+.f64 x y) (if (<=.f64 y 2590073852029843456) (*.f64 x y) (+.f64 x y))))
(if (<=.f64 y -8096558170017805/70368744177664) (*.f64 y x) (if (<=.f64 y 6934516042662229/90854840536950861318665475986000566794205170085914757535186274897579911014174740415773881339220445695095315200783272241691825203576832) x (if (<=.f64 y 2021892301953327/262144) y (if (<=.f64 y 2590073852029843456) (*.f64 y x) y))))
(if (<=.f64 y -8096558170017805/70368744177664) (*.f64 x y) (if (<=.f64 y 6934516042662229/90854840536950861318665475986000566794205170085914757535186274897579911014174740415773881339220445695095315200783272241691825203576832) x (if (<=.f64 y 2021892301953327/262144) y (if (<=.f64 y 2590073852029843456) (*.f64 x y) y))))
(if (<=.f64 x -2712648320406509/75153362648762663292463379097258784876021841565066235862633311089030688803667470190838367948312598497021919232) x y)
x
Compiler

Compiled 169 to 97 computations (42.6% saved)

soundness13.0ms (0.1%)

Algorithm
egg-herbie
Rules
48×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
distribute-rgt-in_binary64
associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
1128
2258
3358
4458
5588
6808
71028
81098
91108
Stop Event
saturated
Compiler

Compiled 35 to 19 computations (45.7% saved)

end84.0ms (0.9%)

Remove

(sort x y)

Compiler

Compiled 167 to 77 computations (53.9% saved)

Profiling

Loading profile data...