Details

Time bar (total: 3.7s)

analyze98.0ms (2.7%)

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
12.5%87.4%0.1%5
25%74.9%0.1%6
40.6%59.3%0.1%7
53.1%46.8%0.1%8
66.3%33.6%0.1%9
74.1%25.8%0.1%10
82.1%17.8%0.1%11
86.4%13.5%0.1%12
Compiler

Compiled 14 to 10 computations (28.6% saved)

sample1.0s (28.2%)

Results
1.0s8256×body256valid

preprocess157.0ms (4.3%)

Algorithm
egg-herbie
Rules
1208×fma-neg_binary64
549×fma-def_binary64
520×div-sub_binary64
492×associate-/r/_binary64
385×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01532
12832
24328
36528
49528
516528
629228
755728
8117528
9191228
10308428
11552028
12648228
13666028
14676028
15676028
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
(-.f64 y (/.f64 x (+.f64 1 (/.f64 (*.f64 y x) 2))))
Outputs
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
(-.f64 x (/.f64 y (+.f64 1 (/.f64 x (/.f64 2 y)))))
(-.f64 x (/.f64 y (+.f64 1 (*.f64 (/.f64 y 2) x))))
(-.f64 x (/.f64 y (fma.f64 (/.f64 x 2) y 1)))
(-.f64 x (/.f64 y (fma.f64 x (/.f64 y 2) 1)))
(-.f64 x (/.f64 y (fma.f64 x (*.f64 1/2 y) 1)))
(-.f64 x (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))
(+.f64 x (/.f64 y (fma.f64 x (*.f64 y -1/2) -1)))
(+.f64 x (/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y))))
(-.f64 y (/.f64 x (+.f64 1 (/.f64 (*.f64 y x) 2))))
(-.f64 y (/.f64 x (+.f64 1 (/.f64 x (/.f64 2 y)))))
(-.f64 y (/.f64 x (+.f64 1 (*.f64 (/.f64 y 2) x))))
(-.f64 y (/.f64 x (fma.f64 (/.f64 x 2) y 1)))
(-.f64 y (/.f64 x (fma.f64 x (/.f64 y 2) 1)))
(-.f64 y (/.f64 x (fma.f64 x (*.f64 1/2 y) 1)))
(-.f64 y (/.f64 x (fma.f64 x (*.f64 y 1/2) 1)))
(+.f64 y (/.f64 x (fma.f64 x (*.f64 y -1/2) -1)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify145.0ms (3.9%)

Algorithm
egg-herbie
Rules
1478×fma-neg_binary64
989×div-sub_binary64
824×associate-/l/_binary64
519×fma-def_binary64
450×associate-/l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01016
11816
22814
34114
46014
59614
617214
725414
849714
9105614
10177114
11387814
12639314
13695014
14711614
15714614
16715214
17715214
18777514
19788714
20788714
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
Outputs
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
(-.f64 x (/.f64 y (+.f64 1 (/.f64 x (/.f64 2 y)))))
(-.f64 x (/.f64 y (+.f64 1 (*.f64 (/.f64 x 2) y))))
(-.f64 x (/.f64 y (fma.f64 (/.f64 x 2) y 1)))
(-.f64 x (/.f64 y (fma.f64 y (/.f64 x 2) 1)))
(-.f64 x (/.f64 y (fma.f64 x (/.f64 y 2) 1)))
(-.f64 x (/.f64 y (fma.f64 x (*.f64 1/2 y) 1)))
(+.f64 x (/.f64 y (fma.f64 x (/.f64 y -2) -1)))
(+.f64 x (/.f64 y (fma.f64 x (*.f64 y -1/2) -1)))
(+.f64 x (/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y))))

eval1.0ms (0%)

Compiler

Compiled 23 to 16 computations (30.4% 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
0.0b
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
0.0b
(+.f64 x (/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y))))
Compiler

Compiled 25 to 18 computations (28% saved)

localize14.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 x -1/2 (/.f64 -1 y))
0.1b
(/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y)))
Compiler

Compiled 34 to 24 computations (29.4% saved)

series28.0ms (0.8%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
23.0ms
x
@inf
(/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y)))
1.0ms
x
@0
(/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y)))
1.0ms
y
@inf
(/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y)))
1.0ms
x
@-inf
(/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y)))
1.0ms
y
@-inf
(/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y)))

rewrite61.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
777×pow1_binary64
715×add-log-exp_binary64
714×log1p-expm1-u_binary64
714×expm1-log1p-u_binary64
701×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify62.0ms (1.7%)

Algorithm
egg-herbie
Rules
878×fma-def_binary64
668×distribute-rgt-neg-in_binary64
567×distribute-lft-neg-in_binary64
414×distribute-neg-frac_binary64
414×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
053754
1146718
2429714
31735706
45854706
Stop Event
node limit
Counts
94 → 66
Calls
Call 1
Inputs
(*.f64 -1 y)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (*.f64 -1 y))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y)))
(+.f64 (*.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y))))
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(*.f64 -1 y)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (*.f64 -1 y))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y)))
(+.f64 (*.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y))))
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(/.f64 -1 y)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(*.f64 -1/2 x)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(*.f64 -1/2 x)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(/.f64 -1 y)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(*.f64 -1/2 x)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(*.f64 -1/2 x)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
Outputs
(*.f64 -1 y)
(neg.f64 y)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (*.f64 -1 y))
(fma.f64 1/2 (*.f64 (*.f64 y y) x) (neg.f64 y))
(fma.f64 1/2 (*.f64 y (*.f64 y x)) (neg.f64 y))
(fma.f64 (*.f64 y y) (*.f64 1/2 x) (neg.f64 y))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y)))
(fma.f64 1/2 (*.f64 (*.f64 y y) x) (fma.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (neg.f64 y)))
(-.f64 (fma.f64 1/2 (*.f64 y (*.f64 y x)) (*.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)))) y)
(-.f64 (*.f64 x (+.f64 (*.f64 y (*.f64 y 1/2)) (*.f64 (pow.f64 y 3) (*.f64 -1/4 x)))) y)
(fma.f64 x (fma.f64 y (*.f64 y 1/2) (*.f64 x (*.f64 -1/4 (pow.f64 y 3)))) (neg.f64 y))
(+.f64 (*.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y))))
(fma.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (fma.f64 1/2 (*.f64 (*.f64 y y) x) (fma.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (neg.f64 y))))
(fma.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (-.f64 (fma.f64 1/2 (*.f64 y (*.f64 y x)) (*.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)))) y))
(-.f64 (fma.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (*.f64 x (+.f64 (*.f64 y (*.f64 y 1/2)) (*.f64 (pow.f64 y 3) (*.f64 -1/4 x))))) y)
(-.f64 (fma.f64 x (fma.f64 y (*.f64 y 1/2) (*.f64 x (*.f64 -1/4 (pow.f64 y 3)))) (*.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)))) y)
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 2 x))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3))))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3)))))))
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 2 x))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3))))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3)))))))
(*.f64 -1 y)
(neg.f64 y)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (*.f64 -1 y))
(fma.f64 1/2 (*.f64 (*.f64 y y) x) (neg.f64 y))
(fma.f64 1/2 (*.f64 y (*.f64 y x)) (neg.f64 y))
(fma.f64 (*.f64 y y) (*.f64 1/2 x) (neg.f64 y))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y)))
(fma.f64 1/2 (*.f64 (*.f64 y y) x) (fma.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (neg.f64 y)))
(-.f64 (fma.f64 1/2 (*.f64 y (*.f64 y x)) (*.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)))) y)
(-.f64 (*.f64 x (+.f64 (*.f64 y (*.f64 y 1/2)) (*.f64 (pow.f64 y 3) (*.f64 -1/4 x)))) y)
(fma.f64 x (fma.f64 y (*.f64 y 1/2) (*.f64 x (*.f64 -1/4 (pow.f64 y 3)))) (neg.f64 y))
(+.f64 (*.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 2) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (*.f64 -1 y))))
(fma.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (fma.f64 1/2 (*.f64 (*.f64 y y) x) (fma.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (neg.f64 y))))
(fma.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (-.f64 (fma.f64 1/2 (*.f64 y (*.f64 y x)) (*.f64 -1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)))) y))
(-.f64 (fma.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (*.f64 x (+.f64 (*.f64 y (*.f64 y 1/2)) (*.f64 (pow.f64 y 3) (*.f64 -1/4 x))))) y)
(-.f64 (fma.f64 x (fma.f64 y (*.f64 y 1/2) (*.f64 x (*.f64 -1/4 (pow.f64 y 3)))) (*.f64 1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)))) y)
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 2 x))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3))))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3)))))))
(/.f64 -2 x)
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (*.f64 2 (/.f64 1 x)))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 2 x))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x))
(-.f64 (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3)))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3))))))
(-.f64 (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))) (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))))
(+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (-.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (-.f64 (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 -2 x)) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 (*.f64 y y) (pow.f64 x 3))))))
(+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (+.f64 (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))) (+.f64 (/.f64 -2 x) (/.f64 -8 (*.f64 y (*.f64 y (pow.f64 x 3)))))))
(/.f64 -1 y)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(*.f64 -1/2 x)
(*.f64 x -1/2)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(*.f64 -1/2 x)
(*.f64 x -1/2)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(/.f64 -1 y)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(*.f64 -1/2 x)
(*.f64 x -1/2)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(*.f64 -1/2 x)
(*.f64 x -1/2)
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))
(-.f64 (*.f64 -1/2 x) (/.f64 1 y))
(-.f64 (*.f64 x -1/2) (/.f64 1 y))
(fma.f64 x -1/2 (/.f64 -1 y))

localize159.0ms (4.3%)

Local error

Found 3 expressions with local error:

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

Compiled 41 to 22 computations (46.3% saved)

series16.0ms (0.4%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
2.0ms
y
@inf
(/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2)))
1.0ms
y
@0
(/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2)))
1.0ms
y
@0
(/.f64 (*.f64 x y) 2)
1.0ms
x
@inf
(/.f64 (*.f64 x y) 2)
1.0ms
x
@0
(/.f64 (*.f64 x y) 2)

rewrite117.0ms (3.2%)

Algorithm
batch-egg-rewrite
Rules
460×log-prod_binary64
347×exp-prod_binary64
283×pow-prod-down_binary64
265×prod-diff_binary64
245×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0930
119826
2265126
Stop Event
node limit
Counts
3 → 157
Calls
Call 1
Inputs
(/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2)))
(/.f64 (*.f64 x y) 2)
(+.f64 1 (/.f64 (*.f64 x y) 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (/.f64 1 (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y y)) (*.f64 (cbrt.f64 y) (/.f64 1 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))) (cbrt.f64 (pow.f64 (/.f64 (fma.f64 x (*.f64 y 1/2) 1) y) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (fma.f64 x (*.f64 y 1/2) 1) y) -2)) (cbrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) (/.f64 1 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))) (sqrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 y) (/.f64 1 (neg.f64 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 x (*.f64 y 1/2) 1)) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 y y)) 1) (/.f64 (cbrt.f64 y) (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 y) 1) (/.f64 (sqrt.f64 y) (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) -2) (/.f64 y (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 y y)) (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 2)) (cbrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 y) (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 2)) (/.f64 (sqrt.f64 y) (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (fma.f64 x (*.f64 y 1/2) 1) -1/2) (/.f64 y (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 y y)) (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1))) (/.f64 (cbrt.f64 y) (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1)) (fma.f64 (*.f64 y (*.f64 x 1/2)) (fma.f64 (/.f64 x 2) y -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y (-.f64 1 (pow.f64 (/.f64 (/.f64 2 y) x) -2))) (-.f64 1 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fma.f64 x (*.f64 y 1/2) 1) y) -2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x (*.f64 y 1/2) 1) y) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 y 3) (pow.f64 (fma.f64 x (*.f64 y 1/2) 1) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (fma.f64 x (*.f64 y 1/2) 1) y) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))) 2)) (cbrt.f64 (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))) (sqrt.f64 (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 y (neg.f64 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (fma.f64 x (*.f64 y 1/2) 1) y) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 y 3) (pow.f64 (fma.f64 x (*.f64 y 1/2) 1) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (fma.f64 x (*.f64 y 1/2) 1) y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 y (fma.f64 x (*.f64 y 1/2) 1))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 y) 1) (log1p.f64 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 y) (*.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 y) 1) (*.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))) 1)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (exp.f64 y) x))) 2)) (log.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (exp.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (sqrt.f64 (pow.f64 (exp.f64 y) x)))) (log.f64 (sqrt.f64 (sqrt.f64 (pow.f64 (exp.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (fma.f64 x (*.f64 y 1/2) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 1 (/.f64 2 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y x) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 x 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (*.f64 (cbrt.f64 (*.f64 y x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (*.f64 x 1/2))) (cbrt.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -2)) (cbrt.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y x)) (*.f64 (sqrt.f64 (*.f64 y x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y (*.f64 x 1/2))) (sqrt.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (neg.f64 x)) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 2) y)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 x 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 x 1/2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 x 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 2 y) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (/.f64 2 y) x) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 y (*.f64 x 1/2)))) 2)) (cbrt.f64 (log.f64 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 y (*.f64 x 1/2))))) (sqrt.f64 (log.f64 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 y x) -2))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 y (*.f64 x 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 y (*.f64 x 1/2)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 y (*.f64 x 1/2)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (/.f64 2 y) x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 y (*.f64 x 1/2))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 y (*.f64 x 1/2))) 3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 x) 1) (log.f64 (/.f64 2 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 x (*.f64 y 1/2) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 x (*.f64 y 1/2) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 2) (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1) (/.f64 1 (fma.f64 (*.f64 y (*.f64 x 1/2)) (fma.f64 (/.f64 x 2) y -1) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (pow.f64 (/.f64 (/.f64 2 y) x) -2)) (/.f64 1 (-.f64 1 (*.f64 y (*.f64 x 1/2)))) -1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x (*.f64 y 1/2) 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (-.f64 1 (*.f64 y (*.f64 x 1/2)))) (/.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -2) (-.f64 1 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (*.f64 y 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (*.f64 y 1/2) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 2) (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1) (/.f64 1 (fma.f64 (*.f64 y (*.f64 x 1/2)) (fma.f64 (/.f64 x 2) y -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (/.f64 (/.f64 2 y) x) -2)) (/.f64 1 (-.f64 1 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 y (*.f64 x 1/2)) (fma.f64 (/.f64 x 2) y -1) 1) (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 1 (*.f64 y (*.f64 x 1/2))) (-.f64 1 (pow.f64 (/.f64 (/.f64 2 y) x) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1) (fma.f64 (*.f64 y (*.f64 x 1/2)) (fma.f64 (/.f64 x 2) y -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1) (fma.f64 (pow.f64 (*.f64 y x) 2) 1/4 (-.f64 1 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (/.f64 (/.f64 2 y) x) -2)) (-.f64 1 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1)) (neg.f64 (fma.f64 (*.f64 y (*.f64 x 1/2)) (fma.f64 (/.f64 x 2) y -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (pow.f64 (/.f64 (/.f64 2 y) x) -2))) (neg.f64 (-.f64 1 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 y x) 2) 1/4 -1) (fma.f64 (/.f64 x 2) y -1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (*.f64 y 1/2) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log1p.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (*.f64 y 1/2) 1) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (*.f64 y 1/2) 1) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (*.f64 y 1/2) 1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 y (*.f64 x 1/2)) (fma.f64 (/.f64 x 2) y -1) 1) (fma.f64 (pow.f64 (*.f64 y x) 3) 1/8 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 (*.f64 y (*.f64 x 1/2))) (-.f64 1 (pow.f64 (/.f64 (/.f64 2 y) x) -2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2)))) 2)) (cbrt.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))))) (sqrt.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (*.f64 y 1/2) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x (*.f64 y 1/2) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (*.f64 y 1/2) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (*.f64 y 1/2) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log1p.f64 (*.f64 y (*.f64 x 1/2)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 x (*.f64 y 1/2) 1))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/2 (log1p.f64 (*.f64 y (*.f64 x 1/2)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log1p.f64 (*.f64 y (*.f64 x 1/2))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y (*.f64 x 1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y (*.f64 x 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (/.f64 1 (/.f64 2 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 y 1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y x) 1/2 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (*.f64 x 1/2)) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (*.f64 (cbrt.f64 (*.f64 y x)) 1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y (*.f64 x 1/2))) (cbrt.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (/.f64 (/.f64 2 y) x) -2)) (cbrt.f64 (*.f64 y (*.f64 x 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (*.f64 (sqrt.f64 (*.f64 y x)) 1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y (*.f64 x 1/2))) (sqrt.f64 (*.f64 y (*.f64 x 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (neg.f64 x)) -1/2 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/2 (*.f64 y x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x 2) y 1)))))

simplify99.0ms (2.7%)

Algorithm
egg-herbie
Rules
792×fma-def_binary64
675×fma-neg_binary64
673×cancel-sign-sub-inv_binary64
528×distribute-neg-frac_binary64
414×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
050924
1144880
2434876
31726864
45293864
Stop Event
node limit
Counts
229 → 173
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x))))
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
y
(+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x))))
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
(*.f64 1/2 (*.f64 y x))
1
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(*.f64 1/2 (*.f64 y x))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(*.f64 1/2 (*.f64 y x))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
1
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(*.f64 1/2 (*.f64 y x))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(*.f64 1/2 (*.f64 y x))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
Outputs
y
(+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))
(+.f64 y (*.f64 -1/2 (*.f64 (*.f64 y y) x)))
(fma.f64 -1/2 (*.f64 y (*.f64 y x)) y)
(fma.f64 y (*.f64 -1/2 (*.f64 y x)) y)
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (+.f64 y (*.f64 -1/2 (*.f64 (*.f64 y y) x))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) y))
(fma.f64 -1/2 (*.f64 y (*.f64 y x)) (fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) y))
(fma.f64 x (fma.f64 y (*.f64 y -1/2) (*.f64 1/4 (*.f64 x (pow.f64 y 3)))) y)
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (+.f64 y (fma.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (*.f64 -1/2 (*.f64 (*.f64 y y) x)))))
(+.f64 (fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) y)) (*.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) (fma.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) y)))
(fma.f64 x (fma.f64 y (*.f64 y -1/2) (*.f64 1/4 (*.f64 x (pow.f64 y 3)))) (fma.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) y))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (/.f64 2 x) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 -4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x)))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (-.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (/.f64 4 (*.f64 y (*.f64 x x)))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (/.f64 -4 (*.f64 y (*.f64 x x)))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 (/.f64 -4 y) (*.f64 x x))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
(+.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (-.f64 (/.f64 2 x) (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (+.f64 (/.f64 -4 (*.f64 y (*.f64 x x))) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (/.f64 2 x) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 -4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x)))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (-.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (/.f64 4 (*.f64 y (*.f64 x x)))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (/.f64 -4 (*.f64 y (*.f64 x x)))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 (/.f64 -4 y) (*.f64 x x))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
(+.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (-.f64 (/.f64 2 x) (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (+.f64 (/.f64 -4 (*.f64 y (*.f64 x x))) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))))
y
(+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))
(+.f64 y (*.f64 -1/2 (*.f64 (*.f64 y y) x)))
(fma.f64 -1/2 (*.f64 y (*.f64 y x)) y)
(fma.f64 y (*.f64 -1/2 (*.f64 y x)) y)
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (*.f64 -1/2 (*.f64 (pow.f64 y 2) x))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (+.f64 y (*.f64 -1/2 (*.f64 (*.f64 y y) x))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) y))
(fma.f64 -1/2 (*.f64 y (*.f64 y x)) (fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) y))
(fma.f64 x (fma.f64 y (*.f64 y -1/2) (*.f64 1/4 (*.f64 x (pow.f64 y 3)))) y)
(+.f64 (*.f64 1/4 (*.f64 (pow.f64 y 3) (pow.f64 x 2))) (+.f64 y (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))) (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (+.f64 y (fma.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) (*.f64 -1/2 (*.f64 (*.f64 y y) x)))))
(+.f64 (fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) y)) (*.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3))))
(fma.f64 1/4 (*.f64 (pow.f64 y 3) (*.f64 x x)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) (fma.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) y)))
(fma.f64 x (fma.f64 y (*.f64 y -1/2) (*.f64 1/4 (*.f64 x (pow.f64 y 3)))) (fma.f64 -1/8 (*.f64 (pow.f64 y 4) (pow.f64 x 3)) y))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (/.f64 2 x) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 -4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x)))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (-.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (/.f64 4 (*.f64 y (*.f64 x x)))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (/.f64 -4 (*.f64 y (*.f64 x x)))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 (/.f64 -4 y) (*.f64 x x))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
(+.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (-.f64 (/.f64 2 x) (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (+.f64 (/.f64 -4 (*.f64 y (*.f64 x x))) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))))
(/.f64 2 x)
(-.f64 (*.f64 2 (/.f64 1 x)) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (/.f64 2 x) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 -4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x)))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2)))))
(-.f64 (+.f64 (/.f64 2 x) (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3)))) (/.f64 4 (*.f64 y (*.f64 x x))))
(+.f64 (/.f64 2 x) (-.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (/.f64 4 (*.f64 y (*.f64 x x)))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (/.f64 -4 (*.f64 y (*.f64 x x)))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 (/.f64 -4 y) (*.f64 x x))))
(-.f64 (+.f64 (*.f64 8 (/.f64 1 (*.f64 (pow.f64 y 2) (pow.f64 x 3)))) (*.f64 2 (/.f64 1 x))) (+.f64 (*.f64 16 (/.f64 1 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))) (*.f64 4 (/.f64 1 (*.f64 y (pow.f64 x 2))))))
(+.f64 (/.f64 8 (*.f64 (*.f64 y y) (pow.f64 x 3))) (-.f64 (/.f64 2 x) (+.f64 (/.f64 4 (*.f64 y (*.f64 x x))) (/.f64 16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (/.f64 2 x) (+.f64 (/.f64 8 (*.f64 y (*.f64 y (pow.f64 x 3)))) (+.f64 (/.f64 -4 (*.f64 y (*.f64 x x))) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4))))))
(+.f64 (+.f64 (/.f64 2 x) (/.f64 (/.f64 -4 y) (*.f64 x x))) (+.f64 (/.f64 (/.f64 (/.f64 8 (pow.f64 x 3)) y) y) (/.f64 -16 (*.f64 (pow.f64 y 3) (pow.f64 x 4)))))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
1
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
1
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(*.f64 1/2 (*.f64 y x))
(*.f64 y (*.f64 x 1/2))
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)
(+.f64 1 (*.f64 1/2 (*.f64 y x)))
(fma.f64 1/2 (*.f64 y x) 1)
(fma.f64 y (*.f64 x 1/2) 1)

eval222.0ms (6%)

Compiler

Compiled 3920 to 2721 computations (30.6% saved)

prune55.0ms (1.5%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New2363239
Fresh000
Picked011
Done101
Total2374241
Error
0b
Counts
241 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
24.4b
(-.f64 x (/.f64 2 x))
0.0b
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
16.4b
(-.f64 x y)
16.4b
(+.f64 x (/.f64 1 (/.f64 -1 y)))
Compiler

Compiled 34 to 24 computations (29.4% saved)

localize69.0ms (1.9%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(/.f64 1 (/.f64 -1 y))
Compiler

Compiled 21 to 15 computations (28.6% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
y
@0
(/.f64 1 (/.f64 -1 y))
0.0ms
y
@-inf
(/.f64 1 (/.f64 -1 y))
0.0ms
y
@inf
(/.f64 1 (/.f64 -1 y))

rewrite49.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
370×pow1_binary64
359×add-sqr-sqrt_binary64
351×*-un-lft-identity_binary64
343×add-log-exp_binary64
342×log1p-expm1-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
064
11201
214121
Stop Event
node limit
Counts
1 → 50
Calls
Call 1
Inputs
(/.f64 1 (/.f64 -1 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 y)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) 2)) (log.f64 (cbrt.f64 (exp.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 y))) (log.f64 (sqrt.f64 (exp.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 y)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) (cbrt.f64 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y y)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y y)) (neg.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y y)) (pow.f64 (neg.f64 (/.f64 1 (cbrt.f64 y))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (neg.f64 (sqrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (pow.f64 (neg.f64 (pow.f64 y -1/2)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 (*.f64 y y))) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1 (cbrt.f64 (*.f64 y y))) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1 (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 -1) 2) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (neg.f64 (pow.f64 y -1/2)) -1) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (neg.f64 (cbrt.f64 (pow.f64 y -2))) -1) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (pow.f64 y 3)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 y 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (*.f64 y y) -1) 1/3) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 y (cbrt.f64 y)) 2) 1/3) (cbrt.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 y 5/2) 1/3) (cbrt.f64 (sqrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2) 3) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cbrt.f64 y)) 3) (pow.f64 (sqrt.f64 (cbrt.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 -1 y) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 y 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y y) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y -2) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y -3) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (cbrt.f64 y)) -3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 y) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y -1/2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 y) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 y)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 y 3))))) (#(struct:change #<rule egg-rr> (2) ((x . y)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 y)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 y)) 2))))))

simplify10.0ms (0.3%)

Algorithm
egg-herbie
Rules
sub-neg_binary64
+-commutative_binary64
fma-def_binary64
*-commutative_binary64
associate-+l-_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0436
1636
2836
3936
41136
51536
61936
72436
Stop Event
saturated
Counts
62 → 50
Calls
Call 1
Inputs
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
(*.f64 -1 y)
Outputs
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)
(*.f64 -1 y)
(neg.f64 y)

localize3.0ms (0.1%)

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 x (/.f64 2 x))
Compiler

Compiled 12 to 8 computations (33.3% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite66.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
668×pow1_binary64
629×add-log-exp_binary64
628×log1p-expm1-u_binary64
628×expm1-log1p-u_binary64
617×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify48.0ms (1.3%)

Algorithm
egg-herbie
Rules
66×fma-neg_binary64
65×fma-def_binary64
30×associate-/r*_binary64
26×cancel-sign-sub-inv_binary64
23×associate-/l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0969
11969
23069
34769
46369
58869
613569
718869
824569
932869
1046169
1148669
1250469
Stop Event
saturated
Counts
48 → 39
Calls
Call 1
Inputs
(/.f64 -2 x)
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (*.f64 2 (/.f64 1 x)))
x
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (*.f64 2 (/.f64 1 x)))
x
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (*.f64 2 (/.f64 1 x)))
Outputs
(/.f64 -2 x)
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
x
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
x
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))
(-.f64 x (*.f64 2 (/.f64 1 x)))
(-.f64 x (/.f64 2 x))
(+.f64 x (/.f64 -2 x))

eval23.0ms (0.6%)

Compiler

Compiled 885 to 547 computations (38.2% saved)

prune14.0ms (0.4%)

Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New87289
Fresh000
Picked011
Done033
Total87693
Error
0b
Counts
93 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
16.4b
(+.f64 x (/.f64 1 (/.f64 -1 y)))
24.9b
x
24.4b
(-.f64 x (/.f64 2 x))
0.0b
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
16.4b
(-.f64 x y)
54.9b
(/.f64 -2 x)
Compiler

Compiled 42 to 30 computations (28.6% saved)

localize6.0ms (0.2%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune4.0ms (0.1%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New000
Fresh011
Picked011
Done044
Total066
Error
0b
Counts
6 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
16.4b
(+.f64 x (/.f64 1 (/.f64 -1 y)))
24.9b
x
24.4b
(-.f64 x (/.f64 2 x))
0.0b
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
16.4b
(-.f64 x y)
54.9b
(/.f64 -2 x)
Compiler

Compiled 42 to 30 computations (28.6% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune6.0ms (0.2%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done055
Total066
Error
0b
Counts
6 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
16.4b
(+.f64 x (/.f64 1 (/.f64 -1 y)))
24.9b
x
24.4b
(-.f64 x (/.f64 2 x))
0.0b
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
16.4b
(-.f64 x y)
54.9b
(/.f64 -2 x)
Compiler

Compiled 42 to 30 computations (28.6% saved)

regimes63.0ms (1.7%)

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

3 calls:

37.0ms
x
11.0ms
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
10.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
Compiler

Compiled 61 to 40 computations (34.4% saved)

regimes130.0ms (3.5%)

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

3 calls:

101.0ms
x
15.0ms
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
11.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
Compiler

Compiled 51 to 33 computations (35.3% saved)

regimes36.0ms (1%)

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

2 calls:

19.0ms
y
15.0ms
x
Results
ErrorSegmentsBranch
8.0b3x
4.0b3y
Compiler

Compiled 27 to 17 computations (37% saved)

bsearch48.0ms (1.3%)

Algorithm
binary-search
Steps
TimeLeftRight
25.0ms
4.0622479262351446e+72
2.156554919053368e+78
23.0ms
-1.5595933653061966e+106
-4.459307959341171e+102
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes71.0ms (1.9%)

Counts
3 → 3
Calls
Call 1
Inputs
x
(/.f64 -2 x)
(-.f64 x y)
Outputs
x
(-.f64 x y)
x
Calls

2 calls:

59.0ms
x
10.0ms
y
Results
ErrorSegmentsBranch
8.4b3x
11.2b3y
Compiler

Compiled 15 to 9 computations (40% saved)

bsearch128.0ms (3.5%)

Algorithm
binary-search
Steps
TimeLeftRight
107.0ms
0.0014032615343855333
8.05178646141362
21.0ms
-9337196.738203213
-8303277.443285079
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes19.0ms (0.5%)

Accuracy

Total -40.5b remaining (-180.7%)

Threshold costs -40.5b (-180.7%)

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

2 calls:

15.0ms
x
4.0ms
y
Results
ErrorSegmentsBranch
22.4b3x
24.9b1y
Compiler

Compiled 12 to 8 computations (33.3% saved)

bsearch46.0ms (1.3%)

Algorithm
binary-search
Steps
TimeLeftRight
22.0ms
-9.742732643486057e-188
-1.3884709621427346e-195
24.0ms
-1.358022098333293e-9
-1.0642028001987344e-19
Compiler

Compiled 18 to 13 computations (27.8% saved)

simplify13.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
04097
15197
26397
36997
47297
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y))))
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
(if (<=.f64 y -15595933653061966387140993209092354584332449458299182093780612502132152716332298511060275964014573220003840) (-.f64 x (/.f64 2 x)) (if (<=.f64 y 4062247926235144578745091454538352403496633085858629468296593223408680960) (-.f64 x y) (-.f64 x (/.f64 2 x))))
(if (<=.f64 x -40102954626900672/4294967296) x (if (<=.f64 x 25885606393290908/18446744073709551616) (-.f64 x y) x))
(if (<=.f64 x -6566991913129419/4835703278458516698824704) x (if (<=.f64 x -3818280827789627/39191066485258739495582803211213116836177854260974927689867324404930562930532401964915294470471057677470020717800991369135822596029816596680341771026342219486499009066287015365002034290763159969980219392) (/.f64 -2 x) x))
x
Outputs
(+.f64 x (/.f64 1 (fma.f64 x -1/2 (/.f64 -1 y))))
(-.f64 x (/.f64 y (+.f64 1 (/.f64 (*.f64 x y) 2))))
(if (<=.f64 y -15595933653061966387140993209092354584332449458299182093780612502132152716332298511060275964014573220003840) (-.f64 x (/.f64 2 x)) (if (<=.f64 y 4062247926235144578745091454538352403496633085858629468296593223408680960) (-.f64 x y) (-.f64 x (/.f64 2 x))))
(if (<=.f64 x -40102954626900672/4294967296) x (if (<=.f64 x 25885606393290908/18446744073709551616) (-.f64 x y) x))
(if (<=.f64 x -626608666045323/67108864) x (if (<=.f64 x 6471401598322727/4611686018427387904) (-.f64 x y) x))
(if (<=.f64 x -6566991913129419/4835703278458516698824704) x (if (<=.f64 x -3818280827789627/39191066485258739495582803211213116836177854260974927689867324404930562930532401964915294470471057677470020717800991369135822596029816596680341771026342219486499009066287015365002034290763159969980219392) (/.f64 -2 x) x))
x
Compiler

Compiled 81 to 54 computations (33.3% saved)

soundness491.0ms (13.4%)

Algorithm
egg-herbie
Rules
1478×fma-neg_binary64
989×div-sub_binary64
824×associate-/l/_binary64
519×fma-def_binary64
450×associate-/l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01016
11816
22814
34114
46014
59614
617214
725414
849714
9105614
10177114
11387814
12639314
13695014
14711614
15714614
16715214
17715214
18777514
19788714
20788714
Stop Event
node limit
Compiler

Compiled 726 to 547 computations (24.7% saved)

end51.0ms (1.4%)

Compiler

Compiled 71 to 43 computations (39.4% saved)

Profiling

Loading profile data...