Details

Time bar (total: 1.3s)

analyze134.0ms (10.4%)

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
56.2%43.7%0.1%7
65.6%34.3%0.1%8
76.5%23.4%0.1%9
82%18%0.1%10
87.8%12.1%0.1%11
90.7%9.2%0.1%12
93.8%6.1%0.1%13
95.3%4.6%0.1%14
Compiler

Compiled 11 to 8 computations (27.3% saved)

sample818.0ms (63.3%)

Results
701.0ms7926×body128valid
41.0ms110×body1024valid
37.0ms101×body2048valid
16.0ms79×body512valid
7.0ms40×body256valid
0.0msbody128invalid
Compiler

Compiled 22 to 16 computations (27.3% saved)

preprocess24.0ms (1.9%)

Algorithm
egg-herbie
Rules
128×fma-neg_binary64
44×fma-def_binary64
40×cancel-sign-sub-inv_binary64
35×sub-neg_binary64
19×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01224
12024
22824
34024
47024
513424
618124
728524
835020
941320
1048520
1153020
1254320
1354820
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(+.f64 x (/.f64 (fabs.f64 (-.f64 y x)) 2))
(+.f64 y (/.f64 (fabs.f64 (-.f64 x y)) 2))
Outputs
(+.f64 x (/.f64 (fabs.f64 (-.f64 y x)) 2))
(+.f64 x (*.f64 1/2 (fabs.f64 (-.f64 y x))))
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 x)
(+.f64 y (/.f64 (fabs.f64 (-.f64 x y)) 2))
(+.f64 y (/.f64 (fabs.f64 (-.f64 y x)) 2))
(+.f64 y (*.f64 1/2 (fabs.f64 (-.f64 y x))))
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) y)
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 y)
Compiler

Compiled 10 to 7 computations (30% saved)

simplify13.0ms (1%)

Algorithm
egg-herbie
Rules
97×fma-neg_binary64
34×fma-def_binary64
32×cancel-sign-sub-inv_binary64
27×sub-neg_binary64
17×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
0812
11312
22012
32912
45012
510412
616012
720812
827210
931710
1037610
1142110
1244410
1345210
1445710
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 x (/.f64 (fabs.f64 (-.f64 y x)) 2))
Outputs
(+.f64 x (/.f64 (fabs.f64 (-.f64 y x)) 2))
(+.f64 x (/.f64 (fabs.f64 (-.f64 x y)) 2))
(+.f64 x (*.f64 1/2 (fabs.f64 (-.f64 y x))))
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 x)

prune2.0ms (0.2%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
0.0b
Counts
3 → 1
Alt Table
StatusErrorProgram
0.0b
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 x)
Compiler

Compiled 35 to 21 computations (40% saved)

localize7.0ms (0.5%)

Local error

Found 1 expressions with local error:

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

series3.0ms (0.2%)

Counts
1 → 24
Calls

6 calls:

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

rewrite36.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
777×pow1_binary64
725×log1p-expm1-u_binary64
725×expm1-log1p-u_binary64
82×add-sqr-sqrt_binary64
79×*-un-lft-identity_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify23.0ms (1.8%)

Algorithm
egg-herbie
Rules
97×fma-neg_binary64
46×fma-def_binary64
34×cancel-sign-sub-inv_binary64
26×sub-neg_binary64
19×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08221
115221
223221
332221
453221
5105221
6161221
7211221
8289221
9351221
10402221
11426221
12432221
13437221
Stop Event
saturated
Counts
47 → 28
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(*.f64 1/2 (fabs.f64 (-.f64 y x)))
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
x
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
x
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
Outputs
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(*.f64 1/2 (fabs.f64 (-.f64 y x)))
(*.f64 1/2 (fabs.f64 (-.f64 x y)))
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
x
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
x
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)
(+.f64 (*.f64 1/2 (fabs.f64 (-.f64 y x))) x)
(fma.f64 1/2 (fabs.f64 (-.f64 y x)) x)
(fma.f64 1/2 (fabs.f64 (-.f64 x y)) x)

prune19.0ms (1.5%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New27128
Fresh000
Picked011
Done000
Total27229
Error
0.0b
Counts
29 → 2
Alt Table
StatusErrorProgram
42.7b
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)
0.0b
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 x)
Compiler

Compiled 323 to 174 computations (46.1% saved)

localize6.0ms (0.4%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x))
0.0b
(fma.f64 (-.f64 y x) 1/2 x)
0.2b
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)

series29.0ms (2.2%)

Counts
3 → 40
Calls

18 calls:

TimeVariablePointExpression
7.0ms
x
@0
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)
7.0ms
y
@0
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)
5.0ms
x
@inf
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)
2.0ms
y
@inf
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)
1.0ms
x
@-inf
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)

rewrite45.0ms (3.5%)

Algorithm
batch-egg-rewrite
Rules
852×pow1_binary64
793×log1p-expm1-u_binary64
793×expm1-log1p-u_binary64
88×add-sqr-sqrt_binary64
84×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify31.0ms (2.4%)

Algorithm
egg-herbie
Rules
923×fma-def_binary64
388×cancel-sign-sub-inv_binary64
216×fma-neg_binary64
190×distribute-neg-frac_binary64
174×associate-/l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
072714
1196526
2597510
32581498
Stop Event
node limit
Counts
115 → 74
Calls
Call 1
Inputs
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) x)
(+.f64 (*.f64 1/2 y) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(+.f64 (*.f64 1/2 y) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(+.f64 (*.f64 1/2 y) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) y)
(+.f64 (*.f64 1/2 x) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) y))
(+.f64 (*.f64 1/2 x) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) y))
(+.f64 (*.f64 1/2 x) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) y))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(*.f64 1/2 y)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(*.f64 1/2 y)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(*.f64 1/2 y)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(*.f64 (sqrt.f64 1/2) (sqrt.f64 x))
(+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 x)) (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x)))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 x)) (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 x)) (+.f64 (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x)))) (*.f64 1/128 (*.f64 (/.f64 (pow.f64 y 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))))
(*.f64 (sqrt.f64 1/2) (sqrt.f64 y))
(+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 y)) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 y)) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 x 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 y)) (+.f64 (*.f64 1/128 (*.f64 (/.f64 (pow.f64 x 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 y 5))))) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y)))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 x 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))
Outputs
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) x)
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 y) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) y)
(*.f64 1/2 y)
(+.f64 (*.f64 1/2 x) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) y))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) y))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 (pow.f64 (sqrt.f64 1/2) 2) y))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 1/2 x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) x)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 1/2 y)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) y)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 1/2 y)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) y)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 1/2 y)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) y)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 1/2 x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) x)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 1/2 x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) x)
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(+.f64 (*.f64 1/2 y) (*.f64 1/2 x))
(fma.f64 1/2 y (*.f64 (pow.f64 (sqrt.f64 1/2) 2) x))
(*.f64 1/2 (+.f64 x y))
(*.f64 (sqrt.f64 1/2) (sqrt.f64 x))
(+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 x)) (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x)))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x)))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 x)) (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))))
(-.f64 (fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))))) (*.f64 (*.f64 1/32 (/.f64 (*.f64 y y) (pow.f64 (sqrt.f64 1/2) 3))) (sqrt.f64 (/.f64 1 (pow.f64 x 3)))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (fma.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))) (*.f64 (*.f64 (*.f64 (/.f64 y (sqrt.f64 1/2)) (/.f64 y 1/2)) (sqrt.f64 (/.f64 1 (pow.f64 x 3)))) -1/32)))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (fma.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))) (*.f64 -1/16 (/.f64 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (/.f64 (sqrt.f64 1/2) (*.f64 y y))))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (*.f64 (/.f64 y (sqrt.f64 1/2)) (-.f64 (*.f64 1/4 (sqrt.f64 (/.f64 1 x))) (*.f64 (*.f64 1/32 (sqrt.f64 (/.f64 1 (pow.f64 x 3)))) (/.f64 y 1/2)))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 x)) (+.f64 (*.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x)))) (*.f64 1/128 (*.f64 (/.f64 (pow.f64 y 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 y 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))))
(+.f64 (fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (fma.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))) (*.f64 1/128 (*.f64 (/.f64 (pow.f64 y 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))) (*.f64 -1/32 (*.f64 (/.f64 (*.f64 y y) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 x 3))))))
(+.f64 (fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (fma.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))) (*.f64 1/128 (*.f64 (/.f64 (pow.f64 y 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 x 5))))))) (*.f64 (*.f64 (*.f64 (/.f64 y (sqrt.f64 1/2)) (/.f64 y 1/2)) (sqrt.f64 (/.f64 1 (pow.f64 x 3)))) -1/32))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (fma.f64 1/4 (*.f64 (/.f64 y (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 x))) (fma.f64 1/128 (*.f64 (/.f64 (pow.f64 y 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 x 5)))) (*.f64 -1/16 (/.f64 (sqrt.f64 (/.f64 1 (pow.f64 x 3))) (/.f64 (sqrt.f64 1/2) (*.f64 y y)))))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 x) (fma.f64 1/128 (*.f64 (/.f64 (pow.f64 y 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 x 5)))) (*.f64 (/.f64 y (sqrt.f64 1/2)) (-.f64 (*.f64 1/4 (sqrt.f64 (/.f64 1 x))) (*.f64 (*.f64 1/32 (sqrt.f64 (/.f64 1 (pow.f64 x 3)))) (/.f64 y 1/2))))))
(*.f64 (sqrt.f64 1/2) (sqrt.f64 y))
(+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 y)) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y)))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y)))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (*.f64 1/4 (/.f64 x (/.f64 (sqrt.f64 1/2) (sqrt.f64 (/.f64 1 y))))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 y)) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 x 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))
(+.f64 (fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y))))) (*.f64 -1/32 (*.f64 (/.f64 (*.f64 x x) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (fma.f64 1/4 (/.f64 x (/.f64 (sqrt.f64 1/2) (sqrt.f64 (/.f64 1 y)))) (*.f64 (*.f64 -1/32 (/.f64 (/.f64 (*.f64 x x) 1/2) (sqrt.f64 1/2))) (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))
(fma.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y))) (fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (*.f64 -1/16 (/.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (/.f64 (sqrt.f64 1/2) (*.f64 x x))))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (*.f64 (/.f64 x (sqrt.f64 1/2)) (-.f64 (*.f64 1/4 (sqrt.f64 (/.f64 1 y))) (*.f64 (/.f64 x 1/2) (*.f64 1/32 (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/2) (sqrt.f64 y)) (+.f64 (*.f64 1/128 (*.f64 (/.f64 (pow.f64 x 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 y 5))))) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y)))))) (*.f64 1/32 (*.f64 (/.f64 (pow.f64 x 2) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))
(+.f64 (fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (fma.f64 1/128 (*.f64 (/.f64 (pow.f64 x 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 y 5)))) (*.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y)))))) (*.f64 -1/32 (*.f64 (/.f64 (*.f64 x x) (pow.f64 (sqrt.f64 1/2) 3)) (sqrt.f64 (/.f64 1 (pow.f64 y 3))))))
(+.f64 (fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (fma.f64 1/4 (/.f64 x (/.f64 (sqrt.f64 1/2) (sqrt.f64 (/.f64 1 y)))) (*.f64 1/128 (*.f64 (/.f64 (pow.f64 x 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 y 5))))))) (*.f64 (*.f64 -1/32 (/.f64 (/.f64 (*.f64 x x) 1/2) (sqrt.f64 1/2))) (sqrt.f64 (/.f64 1 (pow.f64 y 3)))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (fma.f64 1/4 (*.f64 (/.f64 x (sqrt.f64 1/2)) (sqrt.f64 (/.f64 1 y))) (fma.f64 1/128 (*.f64 (/.f64 (pow.f64 x 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 y 5)))) (*.f64 -1/16 (/.f64 (sqrt.f64 (/.f64 1 (pow.f64 y 3))) (/.f64 (sqrt.f64 1/2) (*.f64 x x)))))))
(fma.f64 (sqrt.f64 1/2) (sqrt.f64 y) (fma.f64 1/128 (*.f64 (/.f64 (pow.f64 x 3) (pow.f64 (sqrt.f64 1/2) 5)) (sqrt.f64 (/.f64 1 (pow.f64 y 5)))) (*.f64 (/.f64 x (sqrt.f64 1/2)) (-.f64 (*.f64 1/4 (sqrt.f64 (/.f64 1 y))) (*.f64 (/.f64 x 1/2) (*.f64 1/32 (sqrt.f64 (/.f64 1 (pow.f64 y 3)))))))))

prune37.0ms (2.9%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New74074
Fresh000
Picked011
Done011
Total74276
Error
0.0b
Counts
76 → 2
Alt Table
StatusErrorProgram
42.7b
(pow.f64 (sqrt.f64 (fma.f64 (-.f64 y x) 1/2 x)) 2)
0.0b
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 x)
Compiler

Compiled 1203 to 819 computations (31.9% saved)

regimes22.0ms (1.7%)

Accuracy

Total 0.0b remaining (3%)

Threshold costs 0.0b (3%)

Counts
10 → 1
Compiler

Compiled 86 to 47 computations (45.3% saved)

simplify2.0ms (0.2%)

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
0710
11110
21810
32310
42610
52710
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 x)
Outputs
(fma.f64 (fabs.f64 (-.f64 y x)) 1/2 x)

end42.0ms (3.3%)

Stop Event
done
Compiler

Compiled 38 to 26 computations (31.6% saved)

Profiling

Loading profile data...