Details

Time bar (total: 7.0s)

analyze146.0ms (2.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
37.5%37.5%62.4%0.1%0%0%0%6
50%43.7%43.7%0.1%12.5%0%0%7
60.7%53.1%34.3%0.1%12.5%0%0%8
71.2%57.8%23.4%0.1%18.7%0%0%9
77.9%63.2%18%0.1%18.7%0%0%10
84.5%66%12.1%0.1%21.9%0%0%11
88.3%68.9%9.2%0.1%21.9%0%0%12
Compiler

Compiled 10 to 7 computations (30% saved)

sample2.3s (32.7%)

Results
2.2s8256×body256valid
34.0ms360×body256infinite
Bogosity

preprocess67.0ms (1%)

Algorithm
egg-herbie
Rules
303×fma-neg_binary64
296×fma-def_binary64
157×distribute-rgt-in_binary64
98×distribute-lft-in_binary64
95×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
12320
26620
315020
434520
549720
679520
7129120
8160920
9177920
10185120
11185120
12185120
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 x y) (-.f64 1 y))
(*.f64 (*.f64 y x) (-.f64 1 x))
Outputs
(*.f64 (*.f64 x y) (-.f64 1 y))
(*.f64 (-.f64 1 y) (*.f64 x y))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 (*.f64 y x) (-.f64 1 x))
(*.f64 y (*.f64 x (-.f64 1 x)))
(*.f64 x (*.f64 y (-.f64 1 x)))
(*.f64 x (fma.f64 y (neg.f64 x) y))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify38.0ms (0.5%)

Algorithm
egg-herbie
Rules
601×fma-def_binary64
148×fma-neg_binary64
79×distribute-rgt-in_binary64
52×cancel-sign-sub-inv_binary64
49×distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
11510
23810
38510
419410
529210
645110
769410
8132710
9140510
10144110
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 x y) (-.f64 1 y))
Outputs
(*.f64 (*.f64 x y) (-.f64 1 y))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 x (fma.f64 y (neg.f64 y) y))

eval1.0ms (0%)

Compiler

Compiled 16 to 9 computations (43.8% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 18 to 11 computations (38.9% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
4.5b
(*.f64 x (fma.f64 y (neg.f64 y) y))
Compiler

Compiled 18 to 5 computations (72.2% saved)

series11.0ms (0.2%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
7.0ms
y
@0
(*.f64 x (fma.f64 y (neg.f64 y) y))
1.0ms
x
@0
(*.f64 x (fma.f64 y (neg.f64 y) y))
1.0ms
y
@inf
(*.f64 x (fma.f64 y (neg.f64 y) y))
1.0ms
x
@inf
(*.f64 x (fma.f64 y (neg.f64 y) y))
1.0ms
y
@-inf
(*.f64 x (fma.f64 y (neg.f64 y) y))

rewrite40.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
503×pow1_binary64
482×add-sqr-sqrt_binary64
462×add-log-exp_binary64
461×log1p-expm1-u_binary64
461×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify76.0ms (1.1%)

Algorithm
egg-herbie
Rules
396×unsub-neg_binary64
387×distribute-rgt-out--_binary64
358×fma-neg_binary64
357×sub-neg_binary64
317×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013253
130232
264232
3153232
4469232
51733232
64121232
76658232
Stop Event
node limit
Counts
37 → 19
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
Outputs
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (fma.f64 -1 (*.f64 y y) y) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y (-.f64 1 y)) x)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 x y) (-.f64 1 y))
Compiler

Compiled 18 to 9 computations (50% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite48.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
747×pow1_binary64
692×add-log-exp_binary64
692×log1p-expm1-u_binary64
692×expm1-log1p-u_binary64
678×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify88.0ms (1.3%)

Algorithm
egg-herbie
Rules
367×fma-neg_binary64
349×associate-*l*_binary64
306×distribute-rgt-neg-in_binary64
295×distribute-rgt-out--_binary64
295×neg-sub0_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
014232
134232
283232
3189232
4590232
51939232
63937232
76091232
87890232
Stop Event
node limit
Counts
43 → 25
Calls
Call 1
Inputs
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
Outputs
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 x (neg.f64 (*.f64 y y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (*.f64 (neg.f64 y) y))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 x (neg.f64 (*.f64 y y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y (fma.f64 y (neg.f64 x) x))

eval18.0ms (0.3%)

Compiler

Compiled 409 to 197 computations (51.8% saved)

prune16.0ms (0.2%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New35944
Fresh000
Picked011
Done101
Total361046
Error
0.0b
Counts
46 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 (*.f64 x y) (-.f64 1 y))
35.9b
(*.f64 y (*.f64 y (neg.f64 x)))
36.7b
(cbrt.f64 (*.f64 (pow.f64 (-.f64 1 y) 3) (pow.f64 (*.f64 x y) 3)))
1.2b
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y))) 3)
11.1b
(/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y)) (+.f64 1 (fma.f64 y y y)))
0.1b
(*.f64 y (*.f64 (-.f64 1 y) x))
20.1b
(*.f64 y x)
40.6b
(*.f64 x (neg.f64 (*.f64 y y)))
4.8b
(*.f64 (*.f64 y (-.f64 1 y)) x)
0.1b
(+.f64 (*.f64 x y) (*.f64 (*.f64 x y) (neg.f64 y)))
Compiler

Compiled 199 to 132 computations (33.7% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 25 to 6 computations (76% saved)

series8.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite57.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
730×pow1_binary64
678×add-log-exp_binary64
677×log1p-expm1-u_binary64
677×expm1-log1p-u_binary64
663×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify102.0ms (1.5%)

Algorithm
egg-herbie
Rules
642×fma-neg_binary64
434×unsub-neg_binary64
343×distribute-rgt-out--_binary64
341×distribute-rgt-neg-in_binary64
327×sub-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
017469
147448
2118448
3302448
41063448
52685448
64641448
77119448
Stop Event
node limit
Counts
109 → 68
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
Outputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (pow.f64 y 2)) y) x)
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 x (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(neg.f64 (*.f64 y (*.f64 y x)))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 x (fma.f64 -1 (*.f64 y y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))

localize3.0ms (0%)

Compiler

Compiled 7 to 3 computations (57.1% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 y (*.f64 y (neg.f64 x)))
Compiler

Compiled 16 to 5 computations (68.8% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite92.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
505×pow1_binary64
482×add-sqr-sqrt_binary64
464×add-log-exp_binary64
463×log1p-expm1-u_binary64
463×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify110.0ms (1.6%)

Algorithm
egg-herbie
Rules
572×fma-neg_binary64
566×distribute-lft-neg-in_binary64
557×distribute-rgt-neg-in_binary64
507×fma-def_binary64
366×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08216
118216
243216
3100216
4267216
5882216
61467216
72632216
83726216
94571216
105180216
115952216
127098216
Stop Event
node limit
Counts
36 → 14
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))

localize12.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 12 computations (40% saved)

series3.0ms (0%)

Counts
2 → 36
Calls

9 calls:

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

rewrite73.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
745×pow1_binary64
690×add-log-exp_binary64
690×log1p-expm1-u_binary64
690×expm1-log1p-u_binary64
676×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify74.0ms (1.1%)

Algorithm
egg-herbie
Rules
714×fma-neg_binary64
493×distribute-rgt-neg-in_binary64
380×unswap-sqr_binary64
380×unsub-neg_binary64
365×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
016380
139308
287308
3206308
4644308
51499308
62797308
75357308
Stop Event
node limit
Counts
68 → 43
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (*.f64 x (neg.f64 y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 y (neg.f64 (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (*.f64 x (neg.f64 y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 y (neg.f64 (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)

localize24.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.9b
(*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y))
9.5b
(/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y)) (+.f64 1 (fma.f64 y y y)))
Compiler

Compiled 52 to 27 computations (48.1% saved)

series12.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
3.0ms
y
@-inf
(/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y)) (+.f64 1 (fma.f64 y y y)))
2.0ms
x
@0
(/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y)) (+.f64 1 (fma.f64 y y y)))
1.0ms
y
@-inf
(*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y))
1.0ms
x
@inf
(/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y)) (+.f64 1 (fma.f64 y y y)))
1.0ms
y
@inf
(*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y))

rewrite78.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
684×log-prod_binary64
557×prod-diff_binary64
301×fma-def_binary64
235×pow1/3_binary64
228×expm1-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01236
126836
2366436
Stop Event
node limit
Counts
2 → 111
Calls
Call 1
Inputs
(/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y)) (+.f64 1 (fma.f64 y y y)))
(*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))) (cbrt.f64 (exp.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))))) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))) (/.f64 (pow.f64 y 3) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 1 (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 (*.f64 y x) (/.f64 1 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y x) (*.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 1 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (/.f64 1 (+.f64 1 (fma.f64 y y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))) (pow.f64 (cbrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))) 2) (cbrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 2) (*.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (/.f64 1 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))) (sqrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (*.f64 (sqrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (/.f64 1 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (neg.f64 (*.f64 y x))) (/.f64 1 (+.f64 (neg.f64 (fma.f64 y y y)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (+.f64 1 (fma.f64 y y y))) (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) x) (*.f64 y (/.f64 1 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) 1) (/.f64 (*.f64 y x) (+.f64 1 (fma.f64 y y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y x) 1) (/.f64 (-.f64 1 (pow.f64 y 3)) (+.f64 1 (fma.f64 y y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (+.f64 1 (fma.f64 y y y))) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 2) 1) (/.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (+.f64 1 (fma.f64 y y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 1) (/.f64 (sqrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (+.f64 1 (fma.f64 y y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) x) 1) (/.f64 y (+.f64 1 (fma.f64 y y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (+.f64 1 (fma.f64 y y y)) 2))) (/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (cbrt.f64 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (cbrt.f64 (pow.f64 (+.f64 1 (fma.f64 y y y)) 2))) (/.f64 (*.f64 y x) (cbrt.f64 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y x) (cbrt.f64 (pow.f64 (+.f64 1 (fma.f64 y y y)) 2))) (/.f64 (-.f64 1 (pow.f64 y 3)) (cbrt.f64 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 2) (cbrt.f64 (pow.f64 (+.f64 1 (fma.f64 y y y)) 2))) (cbrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (cbrt.f64 (pow.f64 (+.f64 1 (fma.f64 y y y)) 2))) (/.f64 (sqrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (cbrt.f64 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) x) (cbrt.f64 (pow.f64 (+.f64 1 (fma.f64 y y y)) 2))) (/.f64 y (cbrt.f64 (+.f64 1 (fma.f64 y y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))) (/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))) (/.f64 (*.f64 y x) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y x) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))) (/.f64 (-.f64 1 (pow.f64 y 3)) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 2) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))) (/.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) x) (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))) (/.f64 y (hypot.f64 1 (hypot.f64 y (sqrt.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (pow.f64 (fma.f64 y y y) 3))) (fma.f64 (fma.f64 y y y) (-.f64 (fma.f64 y y y) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (-.f64 1 (pow.f64 (fma.f64 y y y) 2))) (-.f64 1 (fma.f64 y y y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) 3) (pow.f64 (+.f64 1 (fma.f64 y y y)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 (neg.f64 (fma.f64 y y y)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) 3) (pow.f64 (+.f64 1 (fma.f64 y y y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (-.f64 1 (pow.f64 y 3)) (/.f64 (+.f64 1 (fma.f64 y y y)) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (log1p.f64 (fma.f64 y y y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (-.f64 (log.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) (log1p.f64 (fma.f64 y y y))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (-.f64 1 (pow.f64 y 3)))) (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (-.f64 1 (pow.f64 y 3)))))) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (-.f64 1 (pow.f64 y 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (-.f64 1 (pow.f64 y 3))))) (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (-.f64 1 (pow.f64 y 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 y 9)) (*.f64 y x)) (+.f64 (+.f64 1 (pow.f64 y 6)) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 y 6)) (*.f64 y x)) (+.f64 1 (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y x) (-.f64 1 (pow.f64 y 9))) (+.f64 (+.f64 1 (pow.f64 y 6)) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y x) (-.f64 1 (pow.f64 y 6))) (+.f64 1 (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (-.f64 1 (pow.f64 y 3)) 3) (pow.f64 (*.f64 y x) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (-.f64 1 (pow.f64 y 3)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (-.f64 1 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (-.f64 1 (pow.f64 y 3)) 3) (pow.f64 (*.f64 y x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (-.f64 1 (pow.f64 y 3)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y x) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y x) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y x) 1 (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y x) 1 (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y x)) (cbrt.f64 (pow.f64 (*.f64 y x) 2)) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y x)) (cbrt.f64 (pow.f64 (*.f64 y x) 2)) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 y x) 2)) (cbrt.f64 (*.f64 y x)) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 y x) 2)) (cbrt.f64 (*.f64 y x)) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y x)) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y x)) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 (neg.f64 (pow.f64 y 3)) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 (*.f64 y x) (neg.f64 (pow.f64 y 3))))))))

simplify60.0ms (0.9%)

Algorithm
egg-herbie
Rules
565×distribute-rgt-in_binary64
538×fma-def_binary64
537×distribute-lft-in_binary64
412×associate--r-_binary64
380×distribute-rgt-out_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
051734
1195680
2788584
33184584
Stop Event
node limit
Counts
159 → 129
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 x) x))) (*.f64 -1 (*.f64 (pow.f64 y 2) x))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 x) x))) (+.f64 (*.f64 (pow.f64 y 4) (+.f64 (*.f64 -1 x) x)) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 x) x)) (*.f64 -1 (*.f64 (pow.f64 y 2) x))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 x) x)) (+.f64 (/.f64 x y) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) (*.f64 -1 (/.f64 x y))))))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)))
(-.f64 (+.f64 (*.f64 y x) (+.f64 (/.f64 x y) (+.f64 (*.f64 -1 x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)))) (+.f64 (*.f64 2 (/.f64 x y)) (*.f64 -1 (/.f64 x y))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(*.f64 -1 (*.f64 (pow.f64 y 4) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(*.f64 -1 (*.f64 (pow.f64 y 4) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 x) x))) (*.f64 -1 (*.f64 (pow.f64 y 2) x))))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 x) x))) (+.f64 (*.f64 (pow.f64 y 4) (+.f64 (*.f64 -1 x) x)) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 x) x)) (*.f64 -1 (*.f64 (pow.f64 y 2) x))))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 x) x)) (+.f64 (/.f64 x y) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) (*.f64 -1 (/.f64 x y))))))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(-.f64 (+.f64 (*.f64 y x) (+.f64 (/.f64 x y) (+.f64 (*.f64 -1 x) (+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)))) (+.f64 (*.f64 2 (/.f64 x y)) (*.f64 -1 (/.f64 x y))))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x)) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 y (/.f64 (+.f64 1 (+.f64 y (*.f64 y y))) (*.f64 x (-.f64 1 (pow.f64 y 3)))))
(*.f64 (/.f64 y (+.f64 1 (fma.f64 y y y))) (*.f64 x (-.f64 1 (pow.f64 y 3))))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 4)) (+.f64 y (fma.f64 y y 1))))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 -1 (*.f64 (pow.f64 y 4) x))
(neg.f64 (*.f64 x (pow.f64 y 4)))
(*.f64 (neg.f64 x) (pow.f64 y 4))
(*.f64 x (neg.f64 (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 -1 (*.f64 (pow.f64 y 4) x))
(neg.f64 (*.f64 x (pow.f64 y 4)))
(*.f64 (neg.f64 x) (pow.f64 y 4))
(*.f64 x (neg.f64 (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 4) x)))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 3)) x))
(fma.f64 y x (neg.f64 (*.f64 x (pow.f64 y 4))))
(*.f64 x (+.f64 (neg.f64 (pow.f64 y 4)) y))
(*.f64 x (-.f64 y (pow.f64 y 4)))

eval151.0ms (2.2%)

Compiler

Compiled 4276 to 2143 computations (49.9% saved)

prune46.0ms (0.7%)

Pruning

10 alts after pruning (7 fresh and 3 done)

PrunedKeptTotal
New2486254
Fresh314
Picked101
Done235
Total25410264
Error
0.0b
Counts
264 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 (*.f64 x y) (-.f64 1 y))
35.9b
(*.f64 y (*.f64 y (neg.f64 x)))
1.2b
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y))) 3)
4.8b
(*.f64 x (-.f64 y (*.f64 y y)))
47.4b
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))
47.4b
(/.f64 (*.f64 x (neg.f64 (pow.f64 y 4))) (+.f64 1 (fma.f64 y y y)))
33.5b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 y (-.f64 1 y)) 3)) x)
20.1b
(*.f64 y x)
40.6b
(*.f64 (*.f64 y (neg.f64 y)) x)
8.3b
(*.f64 (/.f64 (*.f64 (-.f64 1 (*.f64 y y)) y) (+.f64 y 1)) x)
Compiler

Compiled 206 to 128 computations (37.9% saved)

localize18.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 x y) (-.f64 1 y))
0.7b
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y))) 3)
7.7b
(cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y)))
Compiler

Compiled 37 to 20 computations (45.9% saved)

series14.0ms (0.2%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
4.0ms
y
@0
(cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y)))
2.0ms
x
@-inf
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y))) 3)
1.0ms
x
@0
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y))) 3)
1.0ms
x
@0
(cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y)))
1.0ms
y
@inf
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y))) 3)

rewrite71.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
915×pow1_binary64
857×add-log-exp_binary64
856×log1p-expm1-u_binary64
856×expm1-log1p-u_binary64
838×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
10.0b
(*.f64 (*.f64 y (neg.f64 y)) x)
Compiler

Compiled 16 to 5 computations (68.8% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite42.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
477×pow1_binary64
456×add-sqr-sqrt_binary64
450×*-un-lft-identity_binary64
438×add-log-exp_binary64
437×log1p-expm1-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify105.0ms (1.5%)

Algorithm
egg-herbie
Rules
572×fma-neg_binary64
566×distribute-lft-neg-in_binary64
557×distribute-rgt-neg-in_binary64
507×fma-def_binary64
366×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08216
118216
243216
3100216
4267216
5882216
61467216
72632216
83726216
94571216
105180216
115952216
127098216
Stop Event
node limit
Counts
36 → 14
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
Outputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
4.5b
(*.f64 x (-.f64 y (*.f64 y y)))
Compiler

Compiled 19 to 5 computations (73.7% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite47.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
714×pow1_binary64
666×add-log-exp_binary64
666×log1p-expm1-u_binary64
666×expm1-log1p-u_binary64
650×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify73.0ms (1%)

Algorithm
egg-herbie
Rules
396×unsub-neg_binary64
387×distribute-rgt-out--_binary64
363×sub-neg_binary64
358×fma-neg_binary64
317×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
012232
128232
263232
3148232
4453232
51706232
64095232
76641232
Stop Event
node limit
Counts
43 → 25
Calls
Call 1
Inputs
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
Outputs
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 (-.f64 y (pow.f64 y 2)) x)
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (-.f64 y (*.f64 y y)) x)
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (fma.f64 x (neg.f64 y) x))

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (-.f64 1 (*.f64 y y)) y)
3.3b
(/.f64 (*.f64 (-.f64 1 (*.f64 y y)) y) (+.f64 y 1))
4.5b
(*.f64 (/.f64 (*.f64 (-.f64 1 (*.f64 y y)) y) (+.f64 y 1)) x)
Compiler

Compiled 47 to 24 computations (48.9% saved)

series8.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite77.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
601×log-prod_binary64
314×prod-diff_binary64
294×pow2_binary64
253×fma-def_binary64
221×pow-unpow_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify55.0ms (0.8%)

Algorithm
egg-herbie
Rules
551×unsub-neg_binary64
500×fma-neg_binary64
435×fma-def_binary64
313×cancel-sign-sub-inv_binary64
260×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
022546
158492
2138456
3370456
41419456
54422456
Stop Event
node limit
Counts
177 → 145
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
y
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(*.f64 -1 (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(*.f64 -1 (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 (*.f64 y x) (-.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 y (/.f64 (+.f64 y 1) (*.f64 x (-.f64 1 (*.f64 y y)))))
(*.f64 (/.f64 y (+.f64 y 1)) (*.f64 x (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 y 1) (-.f64 y (pow.f64 y 3))))
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
y
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(*.f64 -1 (pow.f64 y 3))
(neg.f64 (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(*.f64 -1 (pow.f64 y 3))
(neg.f64 (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))
(+.f64 y (*.f64 -1 (pow.f64 y 3)))
(+.f64 y (neg.f64 (pow.f64 y 3)))
(-.f64 y (pow.f64 y 3))

localize18.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 y (-.f64 1 y))
0.1b
(pow.f64 (*.f64 y (-.f64 1 y)) 3)
4.5b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 y (-.f64 1 y)) 3)) x)
34.4b
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 1 y)) 3))
Compiler

Compiled 39 to 27 computations (30.8% saved)

series5.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite65.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
896×pow1_binary64
839×add-log-exp_binary64
838×log1p-expm1-u_binary64
838×expm1-log1p-u_binary64
820×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify76.0ms (1.1%)

Algorithm
egg-herbie
Rules
773×fma-neg_binary64
611×fma-def_binary64
486×associate-*r*_binary64
460×unswap-sqr_binary64
344×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
045647
1123545
2314527
3926527
43485512
57785512
Stop Event
node limit
Counts
121 → 104
Calls
Call 1
Inputs
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 (pow.f64 y 2) (cbrt.f64 -1))
(+.f64 (*.f64 -1 (*.f64 y (cbrt.f64 -1))) (*.f64 (pow.f64 y 2) (cbrt.f64 -1)))
(+.f64 (*.f64 -1 (*.f64 y (cbrt.f64 -1))) (*.f64 (pow.f64 y 2) (cbrt.f64 -1)))
(+.f64 (*.f64 -1 (*.f64 y (cbrt.f64 -1))) (*.f64 (pow.f64 y 2) (cbrt.f64 -1)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x))) (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x))) (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x))) (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(pow.f64 y 3)
(+.f64 (pow.f64 y 3) (*.f64 -3 (pow.f64 y 4)))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (*.f64 -3 (pow.f64 y 4))))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4)))))
(*.f64 -1 (pow.f64 y 6))
(+.f64 (*.f64 3 (pow.f64 y 5)) (*.f64 -1 (pow.f64 y 6)))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4))))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4)))))
(*.f64 -1 (pow.f64 y 6))
(+.f64 (*.f64 3 (pow.f64 y 5)) (*.f64 -1 (pow.f64 y 6)))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4))))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4)))))
Outputs
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 y (-.f64 1 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 y (-.f64 1 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 y (-.f64 1 y))
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 y (-.f64 1 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 y (-.f64 1 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 y (-.f64 1 y))
(*.f64 (pow.f64 y 2) (cbrt.f64 -1))
(*.f64 (*.f64 y y) (cbrt.f64 -1))
(*.f64 y (*.f64 y (cbrt.f64 -1)))
(+.f64 (*.f64 -1 (*.f64 y (cbrt.f64 -1))) (*.f64 (pow.f64 y 2) (cbrt.f64 -1)))
(fma.f64 -1 (*.f64 y (cbrt.f64 -1)) (*.f64 (*.f64 y y) (cbrt.f64 -1)))
(*.f64 (cbrt.f64 -1) (+.f64 (*.f64 y y) (neg.f64 y)))
(*.f64 (cbrt.f64 -1) (*.f64 y (+.f64 y -1)))
(*.f64 y (*.f64 (cbrt.f64 -1) (+.f64 y -1)))
(+.f64 (*.f64 -1 (*.f64 y (cbrt.f64 -1))) (*.f64 (pow.f64 y 2) (cbrt.f64 -1)))
(fma.f64 -1 (*.f64 y (cbrt.f64 -1)) (*.f64 (*.f64 y y) (cbrt.f64 -1)))
(*.f64 (cbrt.f64 -1) (+.f64 (*.f64 y y) (neg.f64 y)))
(*.f64 (cbrt.f64 -1) (*.f64 y (+.f64 y -1)))
(*.f64 y (*.f64 (cbrt.f64 -1) (+.f64 y -1)))
(+.f64 (*.f64 -1 (*.f64 y (cbrt.f64 -1))) (*.f64 (pow.f64 y 2) (cbrt.f64 -1)))
(fma.f64 -1 (*.f64 y (cbrt.f64 -1)) (*.f64 (*.f64 y y) (cbrt.f64 -1)))
(*.f64 (cbrt.f64 -1) (+.f64 (*.f64 y y) (neg.f64 y)))
(*.f64 (cbrt.f64 -1) (*.f64 y (+.f64 y -1)))
(*.f64 y (*.f64 (cbrt.f64 -1) (+.f64 y -1)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x))
(*.f64 (*.f64 y y) (*.f64 (cbrt.f64 -1) x))
(*.f64 (cbrt.f64 -1) (*.f64 y (*.f64 y x)))
(*.f64 y (*.f64 y (*.f64 (cbrt.f64 -1) x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x))) (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x)))
(fma.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x)) (*.f64 (*.f64 y y) (*.f64 (cbrt.f64 -1) x)))
(*.f64 (*.f64 (cbrt.f64 -1) x) (+.f64 (*.f64 y y) (neg.f64 y)))
(*.f64 (cbrt.f64 -1) (*.f64 x (*.f64 y (+.f64 y -1))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 y x) (+.f64 y -1)))
(*.f64 (cbrt.f64 -1) (*.f64 y (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x))) (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x)))
(fma.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x)) (*.f64 (*.f64 y y) (*.f64 (cbrt.f64 -1) x)))
(*.f64 (*.f64 (cbrt.f64 -1) x) (+.f64 (*.f64 y y) (neg.f64 y)))
(*.f64 (cbrt.f64 -1) (*.f64 x (*.f64 y (+.f64 y -1))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 y x) (+.f64 y -1)))
(*.f64 (cbrt.f64 -1) (*.f64 y (*.f64 x (+.f64 y -1))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x))) (*.f64 (pow.f64 y 2) (*.f64 (cbrt.f64 -1) x)))
(fma.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) x)) (*.f64 (*.f64 y y) (*.f64 (cbrt.f64 -1) x)))
(*.f64 (*.f64 (cbrt.f64 -1) x) (+.f64 (*.f64 y y) (neg.f64 y)))
(*.f64 (cbrt.f64 -1) (*.f64 x (*.f64 y (+.f64 y -1))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 y x) (+.f64 y -1)))
(*.f64 (cbrt.f64 -1) (*.f64 y (*.f64 x (+.f64 y -1))))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(fma.f64 y x (*.f64 (neg.f64 (*.f64 y y)) x))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 x (-.f64 1 y)))
(*.f64 x (*.f64 y (-.f64 1 y)))
(pow.f64 y 3)
(+.f64 (pow.f64 y 3) (*.f64 -3 (pow.f64 y 4)))
(fma.f64 -3 (pow.f64 y 4) (pow.f64 y 3))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (*.f64 -3 (pow.f64 y 4))))
(fma.f64 3 (pow.f64 y 5) (+.f64 (pow.f64 y 3) (*.f64 -3 (pow.f64 y 4))))
(fma.f64 3 (pow.f64 y 5) (fma.f64 -3 (pow.f64 y 4) (pow.f64 y 3)))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4)))))
(fma.f64 3 (pow.f64 y 5) (+.f64 (pow.f64 y 3) (fma.f64 -1 (pow.f64 y 6) (*.f64 -3 (pow.f64 y 4)))))
(+.f64 (-.f64 (*.f64 -3 (pow.f64 y 4)) (pow.f64 y 6)) (fma.f64 3 (pow.f64 y 5) (pow.f64 y 3)))
(-.f64 (fma.f64 3 (pow.f64 y 5) (fma.f64 -3 (pow.f64 y 4) (pow.f64 y 3))) (pow.f64 y 6))
(fma.f64 (pow.f64 y 4) (-.f64 -3 (*.f64 y y)) (fma.f64 3 (pow.f64 y 5) (pow.f64 y 3)))
(+.f64 (pow.f64 y 3) (fma.f64 -3 (pow.f64 y 4) (*.f64 (pow.f64 y 5) (-.f64 3 y))))
(*.f64 -1 (pow.f64 y 6))
(neg.f64 (pow.f64 y 6))
(+.f64 (*.f64 3 (pow.f64 y 5)) (*.f64 -1 (pow.f64 y 6)))
(fma.f64 3 (pow.f64 y 5) (neg.f64 (pow.f64 y 6)))
(-.f64 (*.f64 3 (pow.f64 y 5)) (pow.f64 y 6))
(*.f64 (pow.f64 y 5) (-.f64 3 y))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4))))
(fma.f64 3 (pow.f64 y 5) (fma.f64 -1 (pow.f64 y 6) (*.f64 -3 (pow.f64 y 4))))
(fma.f64 3 (pow.f64 y 5) (-.f64 (*.f64 -3 (pow.f64 y 4)) (pow.f64 y 6)))
(-.f64 (fma.f64 3 (pow.f64 y 5) (*.f64 -3 (pow.f64 y 4))) (pow.f64 y 6))
(-.f64 (fma.f64 -3 (pow.f64 y 4) (*.f64 3 (pow.f64 y 5))) (pow.f64 y 6))
(fma.f64 -3 (pow.f64 y 4) (*.f64 (pow.f64 y 5) (-.f64 3 y)))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4)))))
(fma.f64 3 (pow.f64 y 5) (+.f64 (pow.f64 y 3) (fma.f64 -1 (pow.f64 y 6) (*.f64 -3 (pow.f64 y 4)))))
(+.f64 (-.f64 (*.f64 -3 (pow.f64 y 4)) (pow.f64 y 6)) (fma.f64 3 (pow.f64 y 5) (pow.f64 y 3)))
(-.f64 (fma.f64 3 (pow.f64 y 5) (fma.f64 -3 (pow.f64 y 4) (pow.f64 y 3))) (pow.f64 y 6))
(fma.f64 (pow.f64 y 4) (-.f64 -3 (*.f64 y y)) (fma.f64 3 (pow.f64 y 5) (pow.f64 y 3)))
(+.f64 (pow.f64 y 3) (fma.f64 -3 (pow.f64 y 4) (*.f64 (pow.f64 y 5) (-.f64 3 y))))
(*.f64 -1 (pow.f64 y 6))
(neg.f64 (pow.f64 y 6))
(+.f64 (*.f64 3 (pow.f64 y 5)) (*.f64 -1 (pow.f64 y 6)))
(fma.f64 3 (pow.f64 y 5) (neg.f64 (pow.f64 y 6)))
(-.f64 (*.f64 3 (pow.f64 y 5)) (pow.f64 y 6))
(*.f64 (pow.f64 y 5) (-.f64 3 y))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4))))
(fma.f64 3 (pow.f64 y 5) (fma.f64 -1 (pow.f64 y 6) (*.f64 -3 (pow.f64 y 4))))
(fma.f64 3 (pow.f64 y 5) (-.f64 (*.f64 -3 (pow.f64 y 4)) (pow.f64 y 6)))
(-.f64 (fma.f64 3 (pow.f64 y 5) (*.f64 -3 (pow.f64 y 4))) (pow.f64 y 6))
(-.f64 (fma.f64 -3 (pow.f64 y 4) (*.f64 3 (pow.f64 y 5))) (pow.f64 y 6))
(fma.f64 -3 (pow.f64 y 4) (*.f64 (pow.f64 y 5) (-.f64 3 y)))
(+.f64 (*.f64 3 (pow.f64 y 5)) (+.f64 (pow.f64 y 3) (+.f64 (*.f64 -1 (pow.f64 y 6)) (*.f64 -3 (pow.f64 y 4)))))
(fma.f64 3 (pow.f64 y 5) (+.f64 (pow.f64 y 3) (fma.f64 -1 (pow.f64 y 6) (*.f64 -3 (pow.f64 y 4)))))
(+.f64 (-.f64 (*.f64 -3 (pow.f64 y 4)) (pow.f64 y 6)) (fma.f64 3 (pow.f64 y 5) (pow.f64 y 3)))
(-.f64 (fma.f64 3 (pow.f64 y 5) (fma.f64 -3 (pow.f64 y 4) (pow.f64 y 3))) (pow.f64 y 6))
(fma.f64 (pow.f64 y 4) (-.f64 -3 (*.f64 y y)) (fma.f64 3 (pow.f64 y 5) (pow.f64 y 3)))
(+.f64 (pow.f64 y 3) (fma.f64 -3 (pow.f64 y 4) (*.f64 (pow.f64 y 5) (-.f64 3 y))))

eval131.0ms (1.9%)

Compiler

Compiled 5454 to 3397 computations (37.7% saved)

prune60.0ms (0.9%)

Pruning

10 alts after pruning (5 fresh and 5 done)

PrunedKeptTotal
New4014405
Fresh112
Picked101
Done257
Total40510415
Error
0.0b
Counts
415 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 (*.f64 x y) (-.f64 1 y))
35.9b
(*.f64 y (*.f64 y (neg.f64 x)))
47.4b
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))
5.0b
(/.f64 x (/.f64 1 (*.f64 (-.f64 1 y) y)))
4.8b
(*.f64 x (-.f64 y (*.f64 y y)))
8.3b
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
34.5b
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y))))
20.1b
(*.f64 y x)
40.6b
(*.f64 (*.f64 y (neg.f64 y)) x)
4.9b
(*.f64 (*.f64 (-.f64 1 (*.f64 y y)) (*.f64 y (/.f64 1 (+.f64 1 y)))) x)
Compiler

Compiled 193 to 120 computations (37.8% saved)

localize22.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (-.f64 1 (*.f64 y y)) (*.f64 y (/.f64 1 (+.f64 1 y))))
0.0b
(/.f64 1 (+.f64 1 y))
0.1b
(*.f64 y (/.f64 1 (+.f64 1 y)))
4.5b
(*.f64 (*.f64 (-.f64 1 (*.f64 y y)) (*.f64 y (/.f64 1 (+.f64 1 y)))) x)
Compiler

Compiled 56 to 34 computations (39.3% saved)

series5.0ms (0.1%)

Counts
4 → 60
Calls

15 calls:

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

rewrite80.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
634×log-prod_binary64
397×prod-diff_binary64
307×pow2_binary64
295×fma-def_binary64
286×pow-unpow_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify61.0ms (0.9%)

Algorithm
egg-herbie
Rules
618×fma-def_binary64
499×times-frac_binary64
440×sub-neg_binary64
272×associate-*l*_binary64
263×distribute-rgt-out--_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
048773
1134725
2362681
31075676
44492674
Stop Event
node limit
Counts
233 → 209
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 (pow.f64 y 3) y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 (pow.f64 y 3) (+.f64 y (*.f64 -1 (pow.f64 y 4)))))
1
(-.f64 1 (/.f64 1 y))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (/.f64 1 y))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))))
1
(-.f64 1 (/.f64 1 y))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (/.f64 1 y))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))))
1
(+.f64 1 (*.f64 -1 y))
(+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 -1 y)))
(+.f64 1 (+.f64 (*.f64 -1 (pow.f64 y 3)) (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(/.f64 1 y)
(-.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 2)))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (/.f64 1 (pow.f64 y 2)))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 4))))
(/.f64 1 y)
(-.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 2)))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (/.f64 1 (pow.f64 y 2)))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 4))))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 y (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 y (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (-.f64 x (*.f64 y x)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(/.f64 (*.f64 y (*.f64 x (-.f64 1 (*.f64 y y)))) (+.f64 y 1))
(/.f64 (*.f64 (*.f64 y x) (-.f64 1 (*.f64 y y))) (+.f64 y 1))
(*.f64 (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)) x)
(*.f64 x (/.f64 (-.f64 y (pow.f64 y 3)) (+.f64 y 1)))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 (pow.f64 y 3) y))
(fma.f64 -1 (*.f64 y y) (+.f64 y (pow.f64 y 3)))
(+.f64 y (*.f64 (*.f64 y y) (+.f64 -1 y)))
(fma.f64 (*.f64 y y) (+.f64 y -1) y)
(*.f64 y (-.f64 (fma.f64 y y 1) y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 (pow.f64 y 3) (+.f64 y (*.f64 -1 (pow.f64 y 4)))))
(fma.f64 -1 (*.f64 y y) (+.f64 (pow.f64 y 3) (+.f64 y (neg.f64 (pow.f64 y 4)))))
(+.f64 (-.f64 y (pow.f64 y 4)) (*.f64 (*.f64 y y) (+.f64 -1 y)))
(-.f64 (fma.f64 (*.f64 y y) (+.f64 y -1) y) (pow.f64 y 4))
(*.f64 (fma.f64 y y 1) (-.f64 y (*.f64 y y)))
(*.f64 (+.f64 y (pow.f64 y 3)) (-.f64 1 y))
1
(-.f64 1 (/.f64 1 y))
(+.f64 1 (/.f64 -1 y))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (/.f64 1 y))
(+.f64 (/.f64 1 (*.f64 y y)) (-.f64 1 (/.f64 1 y)))
(+.f64 1 (-.f64 (/.f64 (/.f64 1 y) y) (/.f64 1 y)))
(+.f64 1 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 -1 y)))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))))
(+.f64 (/.f64 1 (*.f64 y y)) (-.f64 1 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3)))))
(+.f64 1 (-.f64 (/.f64 (/.f64 1 y) y) (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3)))))
(+.f64 1 (+.f64 (/.f64 1 (*.f64 y y)) (+.f64 (/.f64 -1 y) (/.f64 -1 (pow.f64 y 3)))))
(+.f64 (/.f64 1 (*.f64 y y)) (+.f64 1 (-.f64 (/.f64 -1 y) (/.f64 1 (pow.f64 y 3)))))
1
(-.f64 1 (/.f64 1 y))
(+.f64 1 (/.f64 -1 y))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (/.f64 1 y))
(+.f64 (/.f64 1 (*.f64 y y)) (-.f64 1 (/.f64 1 y)))
(+.f64 1 (-.f64 (/.f64 (/.f64 1 y) y) (/.f64 1 y)))
(+.f64 1 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 -1 y)))
(-.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) 1) (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))))
(+.f64 (/.f64 1 (*.f64 y y)) (-.f64 1 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3)))))
(+.f64 1 (-.f64 (/.f64 (/.f64 1 y) y) (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3)))))
(+.f64 1 (+.f64 (/.f64 1 (*.f64 y y)) (+.f64 (/.f64 -1 y) (/.f64 -1 (pow.f64 y 3)))))
(+.f64 (/.f64 1 (*.f64 y y)) (+.f64 1 (-.f64 (/.f64 -1 y) (/.f64 1 (pow.f64 y 3)))))
1
(+.f64 1 (*.f64 -1 y))
(+.f64 1 (neg.f64 y))
(-.f64 1 y)
(+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 -1 y)))
(+.f64 1 (+.f64 (*.f64 y y) (neg.f64 y)))
(+.f64 (*.f64 y y) (-.f64 1 y))
(fma.f64 y (+.f64 y -1) 1)
(-.f64 (fma.f64 y y 1) y)
(+.f64 1 (+.f64 (*.f64 -1 (pow.f64 y 3)) (+.f64 (pow.f64 y 2) (*.f64 -1 y))))
(+.f64 1 (fma.f64 -1 (pow.f64 y 3) (+.f64 (*.f64 y y) (neg.f64 y))))
(+.f64 1 (-.f64 (fma.f64 y y (neg.f64 y)) (pow.f64 y 3)))
(-.f64 (fma.f64 y (+.f64 y -1) 1) (pow.f64 y 3))
(fma.f64 y (-.f64 y (fma.f64 y y 1)) 1)
(*.f64 (-.f64 1 y) (fma.f64 y y 1))
(/.f64 1 y)
(-.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 2)))
(-.f64 (/.f64 1 y) (/.f64 1 (*.f64 y y)))
(+.f64 (/.f64 1 y) (/.f64 -1 (*.f64 y y)))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (/.f64 1 (pow.f64 y 2)))
(+.f64 (/.f64 1 y) (-.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (*.f64 y y))))
(+.f64 (/.f64 1 y) (-.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 (/.f64 1 y) y)))
(+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 y) (/.f64 -1 (*.f64 y y))))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 4))))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (pow.f64 y 4))))
(+.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (-.f64 (/.f64 -1 (*.f64 y y)) (/.f64 1 (pow.f64 y 4))))
(+.f64 (/.f64 1 y) (+.f64 (/.f64 1 (pow.f64 y 3)) (-.f64 (/.f64 -1 (*.f64 y y)) (/.f64 1 (pow.f64 y 4)))))
(+.f64 (/.f64 1 y) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 4)))))
(/.f64 1 y)
(-.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 2)))
(-.f64 (/.f64 1 y) (/.f64 1 (*.f64 y y)))
(+.f64 (/.f64 1 y) (/.f64 -1 (*.f64 y y)))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (/.f64 1 (pow.f64 y 2)))
(+.f64 (/.f64 1 y) (-.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (*.f64 y y))))
(+.f64 (/.f64 1 y) (-.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 (/.f64 1 y) y)))
(+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 y) (/.f64 -1 (*.f64 y y))))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 4))))
(-.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (pow.f64 y 4))))
(+.f64 (+.f64 (/.f64 1 y) (/.f64 1 (pow.f64 y 3))) (-.f64 (/.f64 -1 (*.f64 y y)) (/.f64 1 (pow.f64 y 4))))
(+.f64 (/.f64 1 y) (+.f64 (/.f64 1 (pow.f64 y 3)) (-.f64 (/.f64 -1 (*.f64 y y)) (/.f64 1 (pow.f64 y 4)))))
(+.f64 (/.f64 1 y) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 4)))))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))

localize13.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (-.f64 1 y) y)
0.2b
(/.f64 1 (*.f64 (-.f64 1 y) y))
4.5b
(/.f64 x (/.f64 1 (*.f64 (-.f64 1 y) y)))
Compiler

Compiled 29 to 19 computations (34.5% saved)

series4.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite65.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
958×pow1_binary64
891×add-log-exp_binary64
891×log1p-expm1-u_binary64
891×expm1-log1p-u_binary64
91×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify69.0ms (1%)

Algorithm
egg-herbie
Rules
586×fma-def_binary64
586×fma-neg_binary64
539×associate-/r*_binary64
382×times-frac_binary64
337×div-sub_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
043530
1110507
2288507
3827507
42428507
57476507
Stop Event
node limit
Counts
142 → 120
Calls
Call 1
Inputs
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(/.f64 1 y)
(+.f64 (/.f64 1 y) 1)
(+.f64 (/.f64 1 y) (+.f64 1 y))
(+.f64 (/.f64 1 y) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(/.f64 -1 (pow.f64 y 2))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 3))))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (pow.f64 y 4)))))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))))
(/.f64 -1 (pow.f64 y 2))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 3))))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (pow.f64 y 4)))))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
Outputs
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (*.f64 x (neg.f64 y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 (neg.f64 (*.f64 y y)) x)
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 y (*.f64 x (neg.f64 y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(/.f64 1 y)
(+.f64 (/.f64 1 y) 1)
(+.f64 1 (/.f64 1 y))
(+.f64 (/.f64 1 y) (+.f64 1 y))
(+.f64 (/.f64 1 y) (+.f64 y 1))
(+.f64 y (+.f64 1 (/.f64 1 y)))
(+.f64 (/.f64 1 y) (+.f64 1 (+.f64 y (pow.f64 y 2))))
(+.f64 (/.f64 1 y) (+.f64 1 (+.f64 y (*.f64 y y))))
(+.f64 1 (+.f64 (/.f64 1 y) (fma.f64 y y y)))
(+.f64 y (+.f64 (fma.f64 y y 1) (/.f64 1 y)))
(+.f64 y (+.f64 (/.f64 1 y) (fma.f64 y y 1)))
(/.f64 -1 (pow.f64 y 2))
(/.f64 -1 (*.f64 y y))
(/.f64 (/.f64 -1 y) y)
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 3))))
(neg.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (pow.f64 y 3))))
(+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3)))
(+.f64 (/.f64 (/.f64 -1 y) y) (/.f64 -1 (pow.f64 y 3)))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (pow.f64 y 4)))))
(neg.f64 (+.f64 (/.f64 1 (*.f64 y y)) (+.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (pow.f64 y 4)))))
(-.f64 (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3))) (/.f64 1 (pow.f64 y 4)))
(+.f64 (/.f64 (/.f64 -1 y) y) (+.f64 (/.f64 -1 (pow.f64 y 3)) (/.f64 -1 (pow.f64 y 4))))
(-.f64 (/.f64 -1 (pow.f64 y 3)) (+.f64 (/.f64 (/.f64 1 y) y) (/.f64 1 (pow.f64 y 4))))
(+.f64 (/.f64 -1 (pow.f64 y 3)) (+.f64 (/.f64 (/.f64 -1 y) y) (/.f64 -1 (pow.f64 y 4))))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))))
(neg.f64 (+.f64 (/.f64 1 (*.f64 y y)) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))))
(-.f64 (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3))) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))
(-.f64 (+.f64 (/.f64 (/.f64 -1 y) y) (+.f64 (/.f64 -1 (pow.f64 y 3)) (/.f64 -1 (pow.f64 y 4)))) (/.f64 1 (pow.f64 y 5)))
(+.f64 (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3))) (+.f64 (/.f64 -1 (pow.f64 y 4)) (/.f64 -1 (pow.f64 y 5))))
(+.f64 (+.f64 (/.f64 -1 (pow.f64 y 3)) (/.f64 -1 (pow.f64 y 4))) (-.f64 (/.f64 (/.f64 -1 y) y) (/.f64 1 (pow.f64 y 5))))
(/.f64 -1 (pow.f64 y 2))
(/.f64 -1 (*.f64 y y))
(/.f64 (/.f64 -1 y) y)
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (/.f64 1 (pow.f64 y 3))))
(neg.f64 (+.f64 (/.f64 1 (*.f64 y y)) (/.f64 1 (pow.f64 y 3))))
(+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3)))
(+.f64 (/.f64 (/.f64 -1 y) y) (/.f64 -1 (pow.f64 y 3)))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (pow.f64 y 4)))))
(neg.f64 (+.f64 (/.f64 1 (*.f64 y y)) (+.f64 (/.f64 1 (pow.f64 y 3)) (/.f64 1 (pow.f64 y 4)))))
(-.f64 (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3))) (/.f64 1 (pow.f64 y 4)))
(+.f64 (/.f64 (/.f64 -1 y) y) (+.f64 (/.f64 -1 (pow.f64 y 3)) (/.f64 -1 (pow.f64 y 4))))
(-.f64 (/.f64 -1 (pow.f64 y 3)) (+.f64 (/.f64 (/.f64 1 y) y) (/.f64 1 (pow.f64 y 4))))
(+.f64 (/.f64 -1 (pow.f64 y 3)) (+.f64 (/.f64 (/.f64 -1 y) y) (/.f64 -1 (pow.f64 y 4))))
(neg.f64 (+.f64 (/.f64 1 (pow.f64 y 2)) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))))
(neg.f64 (+.f64 (/.f64 1 (*.f64 y y)) (+.f64 (/.f64 1 (pow.f64 y 3)) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))))
(-.f64 (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3))) (+.f64 (/.f64 1 (pow.f64 y 4)) (/.f64 1 (pow.f64 y 5))))
(-.f64 (+.f64 (/.f64 (/.f64 -1 y) y) (+.f64 (/.f64 -1 (pow.f64 y 3)) (/.f64 -1 (pow.f64 y 4)))) (/.f64 1 (pow.f64 y 5)))
(+.f64 (+.f64 (/.f64 -1 (*.f64 y y)) (/.f64 -1 (pow.f64 y 3))) (+.f64 (/.f64 -1 (pow.f64 y 4)) (/.f64 -1 (pow.f64 y 5))))
(+.f64 (+.f64 (/.f64 -1 (pow.f64 y 3)) (/.f64 -1 (pow.f64 y 4))) (-.f64 (/.f64 (/.f64 -1 y) y) (/.f64 1 (pow.f64 y 5))))
y
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) y)
(fma.f64 -1 (*.f64 y y) y)
(-.f64 y (*.f64 y y))
(fma.f64 y (neg.f64 y) y)

localize21.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x))
4.5b
(*.f64 (-.f64 1 (pow.f64 y 2)) x)
7.3b
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
Compiler

Compiled 46 to 32 computations (30.4% saved)

series7.0ms (0.1%)

Counts
3 → 36
Calls

18 calls:

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

rewrite82.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
621×log-prod_binary64
380×prod-diff_binary64
303×pow2_binary64
266×fma-def_binary64
213×pow1/3_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify93.0ms (1.3%)

Algorithm
egg-herbie
Rules
597×difference-of-squares_binary64
453×distribute-rgt-neg-in_binary64
436×distribute-lft-neg-in_binary64
367×fma-neg_binary64
363×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
016405
145369
2118333
3320333
41037333
52364333
64639333
77779333
Stop Event
node limit
Counts
149 → 125
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
x
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 y 3) x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 y 3) x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 (*.f64 y x) (neg.f64 y))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 (*.f64 y x) (neg.f64 y))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))
(*.f64 x (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 y (-.f64 x (*.f64 y x)))
x
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 (*.f64 y x) (neg.f64 y))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(*.f64 y (neg.f64 (*.f64 y x)))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 (*.f64 y x) (neg.f64 y))
(*.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1 (*.f64 x (*.f64 y y)) x)
(-.f64 x (*.f64 y (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 y y)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(*.f64 -1 (*.f64 (pow.f64 y 3) x))
(neg.f64 (*.f64 x (pow.f64 y 3)))
(*.f64 x (neg.f64 (pow.f64 y 3)))
(*.f64 (pow.f64 y 3) (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(*.f64 -1 (*.f64 (pow.f64 y 3) x))
(neg.f64 (*.f64 x (pow.f64 y 3)))
(*.f64 x (neg.f64 (pow.f64 y 3)))
(*.f64 (pow.f64 y 3) (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))
(+.f64 (*.f64 -1 (*.f64 (pow.f64 y 3) x)) (*.f64 y x))
(fma.f64 -1 (*.f64 x (pow.f64 y 3)) (*.f64 y x))
(*.f64 x (+.f64 y (neg.f64 (pow.f64 y 3))))
(*.f64 x (-.f64 y (pow.f64 y 3)))

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 y (-.f64 1 y))
1.0b
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
1.3b
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y))))
Compiler

Compiled 34 to 18 computations (47.1% saved)

series8.0ms (0.1%)

Counts
2 → 36
Calls

12 calls:

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

rewrite66.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
930×pow1_binary64
861×add-log-exp_binary64
861×log1p-expm1-u_binary64
861×expm1-log1p-u_binary64
842×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify65.0ms (0.9%)

Algorithm
egg-herbie
Rules
727×fma-neg_binary64
582×unswap-sqr_binary64
548×fma-def_binary64
406×distribute-rgt-neg-in_binary64
312×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
023413
160386
2194368
3568368
41481368
53849368
Stop Event
node limit
Counts
67 → 43
Calls
Call 1
Inputs
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (sqrt.f64 x))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
Outputs
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 (-.f64 1 y) x))))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 y (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 x (*.f64 y y)))
(*.f64 x (neg.f64 (*.f64 y y)))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 y (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (pow.f64 y 2) x)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (fma.f64 y (neg.f64 x) x))
(*.f64 y (sqrt.f64 x))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x)))
(neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (neg.f64 (*.f64 y y)))
(*.f64 (*.f64 y y) (neg.f64 (sqrt.f64 x)))
(*.f64 y (*.f64 (sqrt.f64 x) (neg.f64 y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x)))
(neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (neg.f64 (*.f64 y y)))
(*.f64 (*.f64 y y) (neg.f64 (sqrt.f64 x)))
(*.f64 y (*.f64 (sqrt.f64 x) (neg.f64 y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1 (*.f64 (pow.f64 y 2) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (neg.f64 (*.f64 (*.f64 y y) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (neg.f64 (*.f64 y y))))
(*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y)))
(*.f64 (-.f64 1 y) (*.f64 y (sqrt.f64 x)))
(*.f64 y (*.f64 (-.f64 1 y) (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (-.f64 y (*.f64 y y)))

localize14.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y))
0.1b
(*.f64 (sqrt.f64 x) y)
0.1b
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))
7.3b
(sqrt.f64 (*.f64 x y))
Compiler

Compiled 54 to 9 computations (83.3% saved)

series38.0ms (0.5%)

Counts
4 → 16
Calls

24 calls:

TimeVariablePointExpression
9.0ms
y
@0
(sqrt.f64 (*.f64 x y))
6.0ms
x
@0
(sqrt.f64 (*.f64 x y))
6.0ms
x
@-inf
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))
3.0ms
x
@0
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))
2.0ms
y
@0
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))

rewrite107.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
577×log-prod_binary64
497×fma-def_binary64
461×pow-prod-down_binary64
292×fma-neg_binary64
276×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01056
121736
2305936
Stop Event
node limit
Counts
4 → 222
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 x y))
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))
(*.f64 (sqrt.f64 x) y)
(+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 x y)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 x y))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x y) 1/6) (cbrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (*.f64 x y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (*.f64 (pow.f64 x 1/6) (sqrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x y) 1/4) (pow.f64 (*.f64 x y) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/4) (sqrt.f64 (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x y) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x y) 2) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x y) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x y) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x y)) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x y) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x y) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x y) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x y))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 x y))) (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 x y))) (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (*.f64 y (neg.f64 (sqrt.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (*.f64 y (sqrt.f64 x))) (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))) (log.f64 (sqrt.f64 (exp.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 2) (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3))) (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (fma.f64 x y (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3)) (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2))) (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2)) (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2)) (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3))) (*.f64 (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y)) (fma.f64 x y (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3)) (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2))) (*.f64 (fma.f64 x y (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))) (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 y (sqrt.f64 x)) 4)) (fma.f64 x y (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y (sqrt.f64 x)) 6)) (+.f64 (pow.f64 (*.f64 x y) 2) (+.f64 (pow.f64 (*.f64 y (sqrt.f64 x)) 4) (*.f64 (*.f64 x y) (*.f64 x (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (fma.f64 x y (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3))) (fma.f64 x y (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2))) (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (exp.f64 (*.f64 x y)) (exp.f64 (*.f64 x (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (exp.f64 (*.f64 x (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 y (sqrt.f64 x)) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 y (sqrt.f64 x)) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (*.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 x y)) (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (*.f64 y (neg.f64 (sqrt.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 x y)) (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (*.f64 y (sqrt.f64 x)) (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 2)) (*.f64 (cbrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (cbrt.f64 x) y) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (cbrt.f64 x) y) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) 2) (*.f64 (cbrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (cbrt.f64 (pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 2)) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 2)) (cbrt.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 1/4) (pow.f64 (*.f64 x y) 3/4) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 1/4) (pow.f64 (*.f64 x y) 3/4) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (sqrt.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 1 (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 3/4) (pow.f64 (*.f64 x y) 1/4) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 3/4) (pow.f64 (*.f64 x y) 1/4) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (cbrt.f64 (*.f64 x x))) (cbrt.f64 x) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (cbrt.f64 (*.f64 x x))) (cbrt.f64 x) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) (sqrt.f64 y) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) (sqrt.f64 y) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 5/6) (pow.f64 (*.f64 x y) 1/6) (neg.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 5/6) (pow.f64 (*.f64 x y) 1/6) (*.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) 2)) (cbrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)))) (sqrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 2))) (cbrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (sqrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))) (sqrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (fma.f64 (*.f64 y (neg.f64 (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)) (*.f64 x (*.f64 y y))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (sqrt.f64 x))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (sqrt.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (sqrt.f64 x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 y) (sqrt.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 y (sqrt.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 y y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (sqrt.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (sqrt.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (sqrt.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 y (sqrt.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (sqrt.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 y (sqrt.f64 x))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 x y) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) (/.f64 (*.f64 x (*.f64 y y)) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (+.f64 y (sqrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 2)) (cbrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) (sqrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2)) (/.f64 1 (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (/.f64 1 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (-.f64 (pow.f64 (*.f64 x y) 3/2) (pow.f64 (*.f64 y (sqrt.f64 x)) 3))) (fma.f64 x y (*.f64 (*.f64 y (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y)) (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2)) (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2)) (fma.f64 x (*.f64 y y) (-.f64 (*.f64 x y) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) (neg.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2))) (neg.f64 (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x (*.f64 y y)) (*.f64 x y)) (-.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) 1) (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))) 2)) (cbrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y))) (sqrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)))) (sqrt.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (fma.f64 x y (*.f64 x (*.f64 y y))) (*.f64 (pow.f64 (*.f64 (*.f64 x y) x) 1/2) y)) (fma.f64 (pow.f64 x 3/2) (pow.f64 y 3) (pow.f64 (*.f64 x y) 3/2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 (sqrt.f64 x) (-.f64 (sqrt.f64 y) y)) (-.f64 (*.f64 x y) (*.f64 x (*.f64 y y)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sqrt.f64 x)) (+.f64 (sqrt.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 x y)))) (pow.f64 (exp.f64 y) (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (sqrt.f64 (*.f64 x y))) (+.f64 1 (expm1.f64 (*.f64 y (sqrt.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 x y)))) (+.f64 1 (expm1.f64 (*.f64 y (sqrt.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 y (sqrt.f64 x)))) (exp.f64 (sqrt.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 y) (sqrt.f64 x)) (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 y (sqrt.f64 x)))) (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sqrt.f64 x) (+.f64 (sqrt.f64 y) y))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y (sqrt.f64 x) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) 1 (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 y) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) y (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 y) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) 1 (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sqrt.f64 (*.f64 x y)) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y (sqrt.f64 x)) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 1/6) (cbrt.f64 (*.f64 x y)) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (*.f64 x y) 1/6) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (*.f64 (pow.f64 x 1/6) (sqrt.f64 y)) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (*.f64 (pow.f64 x 1/6) y) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) (sqrt.f64 x)) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y (sqrt.f64 x))) (cbrt.f64 (*.f64 x (*.f64 y y))) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x (*.f64 y y))) (cbrt.f64 (*.f64 y (sqrt.f64 x))) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x y) 1/4) (pow.f64 (*.f64 x y) 1/4) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 1/4) (sqrt.f64 (*.f64 y (sqrt.f64 x))) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 1/4) (*.f64 (pow.f64 x 1/4) y) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (sqrt.f64 x) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y (sqrt.f64 x))) (sqrt.f64 (*.f64 y (sqrt.f64 x))) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 x y)) (*.f64 y (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (cbrt.f64 x)) (pow.f64 x 1/6) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 x 1/4)) (pow.f64 x 1/4) (sqrt.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (sqrt.f64 (*.f64 x y)))))))

simplify108.0ms (1.5%)

Algorithm
egg-herbie
Rules
572×fma-neg_binary64
567×distribute-lft-neg-in_binary64
557×distribute-rgt-neg-in_binary64
507×fma-def_binary64
365×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010102
121102
246102
3107102
4282102
5930102
61519102
72684102
83778102
94627102
105236102
116008102
127159102
Stop Event
node limit
Counts
238 → 225
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
Outputs
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 (pow.f64 y 2) x))
(neg.f64 (*.f64 (*.f64 y y) x))
(*.f64 (*.f64 y y) (neg.f64 x))
(*.f64 x (*.f64 y (neg.f64 y)))
(*.f64 (neg.f64 y) (*.f64 y x))
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))
(*.f64 y (sqrt.f64 x))

eval328.0ms (4.7%)

Compiler

Compiled 14960 to 6247 computations (58.2% saved)

prune197.0ms (2.8%)

Pruning

11 alts after pruning (6 fresh and 5 done)

PrunedKeptTotal
New7896795
Fresh000
Picked101
Done459
Total79411805
Error
0b
Counts
805 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 (*.f64 x y) (-.f64 1 y))
35.9b
(*.f64 y (*.f64 y (neg.f64 x)))
0.1b
(*.f64 (/.f64 x (/.f64 1 (-.f64 1 y))) y)
40.5b
(/.f64 x (/.f64 (/.f64 -1 y) y))
5.0b
(/.f64 x (/.f64 1 (/.f64 (-.f64 1 y) (/.f64 1 y))))
20.1b
(*.f64 y x)
48.6b
(*.f64 (*.f64 (-.f64 1 (*.f64 y y)) (*.f64 y (/.f64 1 y))) x)
4.8b
(*.f64 x (-.f64 y (*.f64 y y)))
40.6b
(*.f64 (*.f64 y (neg.f64 y)) x)
20.2b
(/.f64 x (/.f64 1 y))
8.3b
(*.f64 (/.f64 1 (+.f64 y 1)) (*.f64 y (*.f64 (-.f64 1 (*.f64 y y)) x)))
Compiler

Compiled 111 to 75 computations (32.4% saved)

regimes68.0ms (1%)

Counts
27 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(/.f64 x (/.f64 1 y))
(*.f64 (*.f64 y (neg.f64 y)) x)
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 x (neg.f64 (*.f64 y y)))
(/.f64 x (/.f64 (/.f64 -1 y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (*.f64 x y) (-.f64 1 y))
(*.f64 (/.f64 x (/.f64 1 (-.f64 1 y))) y)
(/.f64 x (/.f64 1 (*.f64 (-.f64 1 y) y)))
(+.f64 (*.f64 x y) (*.f64 (*.f64 x y) (neg.f64 y)))
(/.f64 x (/.f64 1 (/.f64 (-.f64 1 y) (/.f64 1 y))))
(*.f64 (*.f64 (-.f64 1 (*.f64 y y)) (*.f64 y (/.f64 1 y))) x)
(*.f64 (/.f64 (*.f64 (-.f64 1 (*.f64 y y)) y) (+.f64 y 1)) x)
(*.f64 (/.f64 1 (+.f64 y 1)) (*.f64 y (*.f64 (-.f64 1 (*.f64 y y)) x)))
(*.f64 (*.f64 (-.f64 1 (*.f64 y y)) (*.f64 y (/.f64 1 (+.f64 1 y)))) x)
(*.f64 x (fma.f64 y (neg.f64 y) y))
(/.f64 (*.f64 y (*.f64 (-.f64 1 (pow.f64 y 2)) x)) (+.f64 1 y))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 y (-.f64 1 y)) 3)) x)
(pow.f64 (cbrt.f64 (*.f64 (*.f64 x y) (-.f64 1 y))) 3)
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 y (-.f64 1 y))))
(/.f64 (*.f64 x (neg.f64 (pow.f64 y 4))) (+.f64 1 (fma.f64 y y y)))
(/.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) (*.f64 x y)) (+.f64 1 (fma.f64 y y y)))
(cbrt.f64 (*.f64 (pow.f64 (-.f64 1 y) 3) (pow.f64 (*.f64 x y) 3)))
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)) (-.f64 (sqrt.f64 (*.f64 x y)) (*.f64 (sqrt.f64 x) y)))
Outputs
(+.f64 (*.f64 x y) (*.f64 (*.f64 x y) (neg.f64 y)))
Calls

4 calls:

17.0ms
y
15.0ms
x
13.0ms
(*.f64 (*.f64 x y) (-.f64 1 y))
13.0ms
(*.f64 (*.f64 x y) (-.f64 1 y))
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1(*.f64 (*.f64 x y) (-.f64 1 y))
0.1b1(*.f64 (*.f64 x y) (-.f64 1 y))
Compiler

Compiled 293 to 162 computations (44.7% saved)

regimes48.0ms (0.7%)

Counts
12 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(/.f64 x (/.f64 1 y))
(*.f64 (*.f64 y (neg.f64 y)) x)
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 x (neg.f64 (*.f64 y y)))
(/.f64 x (/.f64 (/.f64 -1 y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (*.f64 y (-.f64 1 y)) x)
(*.f64 (*.f64 x y) (-.f64 1 y))
(*.f64 (/.f64 x (/.f64 1 (-.f64 1 y))) y)
(/.f64 x (/.f64 1 (*.f64 (-.f64 1 y) y)))
Outputs
(*.f64 (*.f64 x y) (-.f64 1 y))
Calls

3 calls:

15.0ms
y
14.0ms
x
13.0ms
(*.f64 (*.f64 x y) (-.f64 1 y))
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1(*.f64 (*.f64 x y) (-.f64 1 y))
Compiler

Compiled 96 to 55 computations (42.7% saved)

regimes29.0ms (0.4%)

Counts
9 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(/.f64 x (/.f64 1 y))
(*.f64 (*.f64 y (neg.f64 y)) x)
(*.f64 y (*.f64 y (neg.f64 x)))
(*.f64 x (neg.f64 (*.f64 y y)))
(/.f64 x (/.f64 (/.f64 -1 y) y))
(*.f64 x (-.f64 y (*.f64 y y)))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 (*.f64 y (-.f64 1 y)) x)
Outputs
(*.f64 y (*.f64 (-.f64 1 y) x))
Calls

2 calls:

13.0ms
y
12.0ms
x
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
Compiler

Compiled 62 to 33 computations (46.8% saved)

regimes81.0ms (1.2%)

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

2 calls:

49.0ms
x
29.0ms
y
Results
ErrorSegmentsBranch
2.5b5x
0.1b3y
Compiler

Compiled 48 to 25 computations (47.9% saved)

bsearch22.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
8.0ms
2.4142342968235342e+89
5.544287756900422e+89
14.0ms
-2.786149763492468e+53
-5.3743621017710844e+51
Compiler

Compiled 52 to 34 computations (34.6% saved)

regimes69.0ms (1%)

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

2 calls:

38.0ms
x
28.0ms
y
Results
ErrorSegmentsBranch
15.0b3x
2.5b3y
Compiler

Compiled 41 to 23 computations (43.9% saved)

bsearch61.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
31.0ms
0.0032189468108935145
91.03903371190637
30.0ms
-2.0753885416948745
-3.3712542259752183e-6
Compiler

Compiled 14 to 10 computations (28.6% saved)

regimes31.0ms (0.4%)

Counts
3 → 3
Calls
Call 1
Inputs
(*.f64 y x)
(/.f64 x (/.f64 1 y))
(*.f64 (*.f64 y (neg.f64 y)) x)
Outputs
(*.f64 (*.f64 y (neg.f64 y)) x)
(*.f64 y x)
(*.f64 (*.f64 y (neg.f64 y)) x)
Calls

2 calls:

21.0ms
y
8.0ms
x
Results
ErrorSegmentsBranch
20.1b1x
7.2b3y
Compiler

Compiled 22 to 13 computations (40.9% saved)

bsearch104.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
30.0ms
0.0032189468108935145
91.03903371190637
74.0ms
-2.0753885416948745
-3.3712542259752183e-6
Compiler

Compiled 14 to 10 computations (28.6% saved)

regimes16.0ms (0.2%)

Accuracy

Total -0.1b remaining (-0.7%)

Threshold costs -0.1b (-0.7%)

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

2 calls:

8.0ms
y
7.0ms
x
Results
ErrorSegmentsBranch
20.1b1x
20.1b1y
Compiler

Compiled 16 to 10 computations (37.5% saved)

simplify18.0ms (0.3%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
036147
164145
287145
3101145
4106145
5107145
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (*.f64 x y) (neg.f64 y)))
(*.f64 (*.f64 x y) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(if (<=.f64 y -99999999999999999322094867436162797646170844194406400) (*.f64 y (*.f64 y (neg.f64 x))) (if (<=.f64 y 499999999999999983242056357731950024912593046310062751489837298654589877718689615343255552) (*.f64 x (-.f64 y (*.f64 y y))) (*.f64 y (*.f64 y (neg.f64 x)))))
(if (<=.f64 y -4673359531513017/2251799813685248) (*.f64 y (*.f64 y (neg.f64 x))) (if (<=.f64 y 7422386000929525/2305843009213693952) (*.f64 y x) (*.f64 y (*.f64 y (neg.f64 x)))))
(if (<=.f64 y -4673359531513017/2251799813685248) (*.f64 (*.f64 y (neg.f64 y)) x) (if (<=.f64 y 7422386000929525/2305843009213693952) (*.f64 y x) (*.f64 (*.f64 y (neg.f64 y)) x)))
(*.f64 y x)
Outputs
(+.f64 (*.f64 x y) (*.f64 (*.f64 x y) (neg.f64 y)))
(-.f64 (*.f64 x y) (*.f64 y (*.f64 x y)))
(*.f64 (*.f64 x y) (-.f64 1 y))
(*.f64 y (*.f64 (-.f64 1 y) x))
(*.f64 y (*.f64 x (-.f64 1 y)))
(if (<=.f64 y -99999999999999999322094867436162797646170844194406400) (*.f64 y (*.f64 y (neg.f64 x))) (if (<=.f64 y 499999999999999983242056357731950024912593046310062751489837298654589877718689615343255552) (*.f64 x (-.f64 y (*.f64 y y))) (*.f64 y (*.f64 y (neg.f64 x)))))
(if (<=.f64 y -4673359531513017/2251799813685248) (*.f64 y (*.f64 y (neg.f64 x))) (if (<=.f64 y 7422386000929525/2305843009213693952) (*.f64 y x) (*.f64 y (*.f64 y (neg.f64 x)))))
(if (<=.f64 y -4673359531513017/2251799813685248) (*.f64 y (*.f64 y (neg.f64 x))) (if (<=.f64 y 7422386000929525/2305843009213693952) (*.f64 x y) (*.f64 y (*.f64 y (neg.f64 x)))))
(if (<=.f64 y -4673359531513017/2251799813685248) (*.f64 (*.f64 y (neg.f64 y)) x) (if (<=.f64 y 7422386000929525/2305843009213693952) (*.f64 y x) (*.f64 (*.f64 y (neg.f64 y)) x)))
(if (<=.f64 y -4673359531513017/2251799813685248) (*.f64 x (*.f64 y (neg.f64 y))) (if (<=.f64 y 7422386000929525/2305843009213693952) (*.f64 x y) (*.f64 x (*.f64 y (neg.f64 y)))))
(*.f64 y x)
(*.f64 x y)
Compiler

Compiled 113 to 58 computations (48.7% saved)

soundness235.0ms (3.4%)

Algorithm
egg-herbie
Rules
601×fma-def_binary64
396×unsub-neg_binary64
387×distribute-rgt-out--_binary64
358×fma-neg_binary64
357×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
11510
23810
38510
419410
529210
645110
769410
8132710
9140510
10144110
013253
130232
264232
3153232
4469232
51733232
64121232
76658232
Stop Event
node limit
saturated
Compiler

Compiled 110 to 74 computations (32.7% saved)

end60.0ms (0.9%)

Compiler

Compiled 101 to 39 computations (61.4% saved)

Profiling

Loading profile data...