Details

Time bar (total: 4.0s)

analyze396.0ms (9.9%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
0%99.9%0.1%5
0%99.9%0.1%6
12.5%87.4%0.1%7
18.7%81.1%0.1%8
18.7%81.1%0.1%9
28.1%71.8%0.1%10
32.8%67.1%0.1%11
39.8%60.1%0.1%12
Compiler

Compiled 19 to 10 computations (47.4% saved)

sample2.0s (50.5%)

Results
962.0ms6323×body256valid
289.0ms847×body1024valid
232.0ms565×body512valid
215.0ms520×body2048valid
189.0ms1627×body256invalid
56.0ms314×body512invalid
54.0ms198×body1024invalid
0.0msbody4096valid

preprocess53.0ms (1.3%)

Algorithm
egg-herbie
Rules
491×sub-neg_binary64
407×distribute-lft-out--_binary64
387×fma-def_binary64
381×*-commutative_binary64
349×distribute-neg-out_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02488
18840
230328
386728
4321928
5639628
033
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (-.f64 (-.f64 (*.f64 x y) (*.f64 y z)) (*.f64 y y)) (*.f64 y y))
(+.f64 (-.f64 (-.f64 (*.f64 y x) (*.f64 x z)) (*.f64 x x)) (*.f64 x x))
(+.f64 (-.f64 (-.f64 (*.f64 z y) (*.f64 y x)) (*.f64 y y)) (*.f64 y y))
(+.f64 (-.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (*.f64 z z)) (*.f64 z z))
Outputs
(+.f64 (-.f64 (-.f64 (*.f64 x y) (*.f64 y z)) (*.f64 y y)) (*.f64 y y))
(+.f64 (*.f64 y y) (-.f64 (-.f64 (*.f64 x y) (*.f64 y z)) (*.f64 y y)))
(+.f64 (*.f64 y (-.f64 x z)) 0)
(*.f64 y (-.f64 x z))
(+.f64 (-.f64 (-.f64 (*.f64 y x) (*.f64 x z)) (*.f64 x x)) (*.f64 x x))
(-.f64 (-.f64 (*.f64 x y) (*.f64 x z)) (-.f64 (*.f64 x x) (*.f64 x x)))
(+.f64 (*.f64 x (-.f64 y z)) 0)
(*.f64 x (-.f64 y z))
(+.f64 (-.f64 (-.f64 (*.f64 z y) (*.f64 y x)) (*.f64 y y)) (*.f64 y y))
(+.f64 (*.f64 y y) (-.f64 (*.f64 y z) (+.f64 (*.f64 x y) (*.f64 y y))))
(+.f64 (*.f64 y (-.f64 z x)) 0)
(*.f64 y (-.f64 z x))
(+.f64 (-.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (*.f64 z z)) (*.f64 z z))
(-.f64 (-.f64 (*.f64 x z) (*.f64 y z)) (-.f64 (*.f64 z z) (*.f64 z z)))
(+.f64 (*.f64 z (-.f64 x y)) 0)
(*.f64 z (-.f64 x y))
Compiler

Compiled 21 to 12 computations (42.9% saved)

simplify107.0ms (2.7%)

Algorithm
egg-herbie
Rules
750×unsub-neg_binary64
516×distribute-lft-out_binary64
498×distribute-lft-out--_binary64
467×*-commutative_binary64
408×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01022
12710
2897
32507
48027
533547
647977
754127
857017
958247
1058747
1171297
1273397
1375437
1475437
1579557
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (-.f64 (-.f64 (*.f64 x y) (*.f64 y z)) (*.f64 y y)) (*.f64 y y))
Outputs
(+.f64 (-.f64 (-.f64 (*.f64 x y) (*.f64 y z)) (*.f64 y y)) (*.f64 y y))
(-.f64 (-.f64 (*.f64 x y) (*.f64 y z)) (-.f64 (*.f64 y y) (*.f64 y y)))
(+.f64 (*.f64 y (-.f64 x z)) 0)
(*.f64 y (-.f64 x z))

eval1.0ms (0%)

Compiler

Compiled 23 to 11 computations (52.2% 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.0b
(*.f64 y (-.f64 x z))
15.7b
(+.f64 (-.f64 (-.f64 (*.f64 x y) (*.f64 y z)) (*.f64 y y)) (*.f64 y y))
Compiler

Compiled 26 to 14 computations (46.2% saved)

localize13.0ms (0.3%)

Local error

Found 6 expressions with local error:

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

Compiled 48 to 9 computations (81.3% saved)

series12.0ms (0.3%)

Counts
3 → 108
Calls

27 calls:

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

rewrite98.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
639×log-prod_binary64
632×fma-neg_binary64
335×pow2_binary64
227×pow1/3_binary64
226×expm1-udef_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify128.0ms (3.2%)

Algorithm
egg-herbie
Rules
1519×fma-neg_binary64
374×distribute-rgt-neg-in_binary64
277×cancel-sign-sub-inv_binary64
268×unswap-sqr_binary64
247×sub-neg_binary64
Iterations

Useful iterations: 9 (0.0ms)

IterNodesCost
0281100
184886
2196805
3540805
41629805
53537805
64288805
75102805
85595805
96143783
107234783
Stop Event
node limit
Counts
401 → 312
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2)))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(*.f64 -1 (pow.f64 y 2))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z)))))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z)))))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z)))))
(-.f64 (*.f64 y x) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x)) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x)) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x)) (pow.f64 y 2))
(*.f64 -1 (*.f64 y z))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(*.f64 -1 (*.f64 y z))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
Outputs
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2)))
(neg.f64 (fma.f64 y z (*.f64 y y)))
(neg.f64 (*.f64 y (+.f64 z y)))
(*.f64 y (neg.f64 (+.f64 y z)))
(*.f64 y (-.f64 (neg.f64 y) z))
(*.f64 y (-.f64 (neg.f64 z) y))
(*.f64 y (+.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 y x) (*.f64 -1 (+.f64 (*.f64 y z) (pow.f64 y 2))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(*.f64 y y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 y (-.f64 x z)))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(*.f64 -1 (pow.f64 y 2))
(neg.f64 (*.f64 y y))
(*.f64 y (neg.f64 y))
(*.f64 y y)
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z)))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z)))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z)))))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(-.f64 (*.f64 y x) (pow.f64 y 2))
(-.f64 (*.f64 y x) (*.f64 y y))
(*.f64 y (-.f64 x y))
(*.f64 y (+.f64 y x))
(-.f64 (+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x)) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(-.f64 (+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x)) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(-.f64 (+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x)) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(*.f64 y z)
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))
(-.f64 (+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z))) (pow.f64 y 2))
(fma.f64 y x (neg.f64 (fma.f64 y z (*.f64 y y))))
(-.f64 (*.f64 y x) (*.f64 y (+.f64 z y)))
(*.f64 y (-.f64 (-.f64 x z) y))
(*.f64 y (-.f64 x (+.f64 y z)))
(*.f64 y (+.f64 y (-.f64 z x)))

localize5.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

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

rewrite48.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
725×pow1_binary64
672×add-log-exp_binary64
672×log1p-expm1-u_binary64
672×expm1-log1p-u_binary64
657×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify28.0ms (0.7%)

Algorithm
egg-herbie
Rules
217×fma-def_binary64
132×fma-neg_binary64
41×cancel-sign-sub-inv_binary64
25×distribute-rgt-in_binary64
25×sub-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
010210
118210
235156
358156
486156
5138156
6254156
7410156
8576156
9730156
10744156
Stop Event
saturated
Counts
43 → 25
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
Outputs
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 z (neg.f64 y))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 z (neg.f64 y))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 z (neg.f64 y))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(-.f64 (*.f64 y x) (*.f64 y z))
(*.f64 y (-.f64 x z))

eval81.0ms (2%)

Compiler

Compiled 6504 to 1703 computations (73.8% saved)

prune50.0ms (1.2%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New3343337
Fresh000
Picked011
Done101
Total3354339
Error
0.0b
Counts
339 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
32.6b
(*.f64 y (neg.f64 z))
0.0b
(*.f64 y (-.f64 x z))
0.0b
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
27.4b
(*.f64 y x)
Compiler

Compiled 32 to 21 computations (34.4% saved)

localize3.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize10.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 23 to 7 computations (69.6% saved)

series3.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite182.0ms (4.6%)

Algorithm
batch-egg-rewrite
Rules
835×pow1_binary64
773×add-log-exp_binary64
772×log1p-expm1-u_binary64
772×expm1-log1p-u_binary64
756×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
089
11767
225617
Stop Event
node limit
Counts
1 → 44
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x y) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (+.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x y) 2) (*.f64 y (+.f64 x z))) (/.f64 (pow.f64 (*.f64 y z) 2) (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (+.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (+.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2) (/.f64 1 (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (+.f64 x z))) (cbrt.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2)) (cbrt.f64 (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) (+.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y (+.f64 x z))) (sqrt.f64 (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) (+.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y z) 3)) (/.f64 1 (-.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2) (*.f64 y (*.f64 x (*.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (+.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x z) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))) (-.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2) (*.f64 y (*.f64 x (*.f64 y z)))) (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y z) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 y (+.f64 x z)) (pow.f64 (*.f64 y (+.f64 x z)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2) (*.f64 y (+.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y z) 3)) (-.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2) (*.f64 y (*.f64 x (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y z) 3)) (+.f64 (pow.f64 (*.f64 y z) 2) (-.f64 (pow.f64 (*.f64 x y) 2) (*.f64 y (*.f64 x (*.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y z) 3))) (neg.f64 (-.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2) (*.f64 y (*.f64 x (*.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2)) (neg.f64 (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y z) 3)) (-.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2) (*.f64 y (*.f64 x (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y z) 2) (pow.f64 (*.f64 x y) 2)) (-.f64 (*.f64 y z) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (+.f64 x z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (+.f64 x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (+.f64 x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (+.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (+.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (+.f64 x z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y z (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z y (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (cbrt.f64 (*.f64 y z)) (*.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 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y z)) (sqrt.f64 (*.f64 y z)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (+.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (+.f64 x z))))))))

simplify23.0ms (0.6%)

Algorithm
egg-herbie
Rules
142×fma-def_binary64
108×fma-neg_binary64
32×unsub-neg_binary64
30×cancel-sign-sub-inv_binary64
28×associate-*r*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
017330
148240
2100240
3175240
4311240
5493240
6608240
7649240
Stop Event
saturated
Counts
80 → 52
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
Outputs
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (neg.f64 (*.f64 y z)))
(*.f64 y (-.f64 x z))

localize5.0ms (0.1%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

eval12.0ms (0.3%)

Compiler

Compiled 616 to 204 computations (66.9% saved)

prune9.0ms (0.2%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New51152
Fresh000
Picked011
Done123
Total52456
Error
0.0b
Counts
56 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
32.6b
(*.f64 y (neg.f64 z))
0.0b
(*.f64 y (-.f64 x z))
27.4b
(*.f64 y x)
0.0b
(-.f64 (*.f64 x y) (*.f64 y z))
Compiler

Compiled 31 to 20 computations (35.5% saved)

localize7.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 19 to 6 computations (68.4% saved)

rewrite0.0ms (0%)

Counts
0 → 0

simplify40.0ms (1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval23.0ms (0.6%)

Compiler

Compiled 1433 to 379 computations (73.6% saved)

prune16.0ms (0.4%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New91192
Fresh000
Picked011
Done033
Total91596
Error
0b
Counts
96 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
32.6b
(*.f64 y (neg.f64 z))
0.0b
(*.f64 y (-.f64 x z))
0.2b
(+.f64 (*.f64 y (-.f64 x z)) (+.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
27.4b
(*.f64 y x)
0.0b
(-.f64 (*.f64 x y) (*.f64 y z))
Compiler

Compiled 55 to 30 computations (45.5% saved)

localize125.0ms (3.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
51.3b
(fma.f64 (neg.f64 z) y (*.f64 y z))
0.0b
(*.f64 y (-.f64 x z))
0.0b
(*.f64 y (-.f64 x z))
51.3b
(fma.f64 (neg.f64 z) y (*.f64 y z))
Compiler

Compiled 62 to 10 computations (83.9% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
z
@inf
(fma.f64 (neg.f64 z) y (*.f64 y z))
1.0ms
z
@0
(fma.f64 (neg.f64 z) y (*.f64 y z))
1.0ms
y
@-inf
(fma.f64 (neg.f64 z) y (*.f64 y z))
1.0ms
y
@inf
(fma.f64 (neg.f64 z) y (*.f64 y z))
0.0ms
z
@-inf
(fma.f64 (neg.f64 z) y (*.f64 y z))

rewrite45.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
493×pow1_binary64
472×add-sqr-sqrt_binary64
452×add-log-exp_binary64
451×log1p-expm1-u_binary64
451×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify11.0ms (0.3%)

Algorithm
egg-herbie
Rules
30×fma-def_binary64
12×distribute-rgt-in_binary64
11×associate-*r*_binary64
10×distribute-lft-in_binary64
10×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
012168
13924
211424
313624
417024
518224
621424
Stop Event
saturated
Counts
44 → 25
Calls
Call 1
Inputs
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
Outputs
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 z (+.f64 y (*.f64 -1 y)))
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 z (+.f64 y (*.f64 -1 y))))
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 (+.f64 (*.f64 -1 z) z) y)
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
(*.f64 z (*.f64 0 y))
0
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) z) y))
(*.f64 z (*.f64 0 y))
0

eval18.0ms (0.4%)

Compiler

Compiled 1791 to 373 computations (79.2% saved)

prune12.0ms (0.3%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New75075
Fresh000
Picked011
Done044
Total75580
Error
0b
Counts
80 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
32.6b
(*.f64 y (neg.f64 z))
0.0b
(*.f64 y (-.f64 x z))
0.2b
(+.f64 (*.f64 y (-.f64 x z)) (+.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
27.4b
(*.f64 y x)
0.0b
(-.f64 (*.f64 x y) (*.f64 y z))
Compiler

Compiled 55 to 30 computations (45.5% saved)

regimes18.0ms (0.4%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 y (neg.f64 z))
(*.f64 y (-.f64 x z))
(-.f64 (*.f64 x y) (*.f64 y z))
(+.f64 (*.f64 y (-.f64 x z)) (+.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
Outputs
(*.f64 y (-.f64 x z))
Calls

3 calls:

7.0ms
z
4.0ms
y
4.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
Compiler

Compiled 55 to 23 computations (58.2% saved)

regimes62.0ms (1.5%)

Accuracy

Total -46.9b remaining (-402.4%)

Threshold costs -46.9b (-402.4%)

Counts
2 → 5
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 y (neg.f64 z))
Outputs
(*.f64 y x)
(*.f64 y (neg.f64 z))
(*.f64 y x)
(*.f64 y (neg.f64 z))
(*.f64 y x)
Calls

3 calls:

26.0ms
y
19.0ms
z
16.0ms
x
Results
ErrorSegmentsBranch
11.7b5x
20.6b7y
12.4b5z
Compiler

Compiled 22 to 15 computations (31.8% saved)

bsearch290.0ms (7.3%)

Algorithm
binary-search
Steps
TimeLeftRight
200.0ms
6.466551762932239e+90
6.670876581065402e+91
27.0ms
1.6598086213092437e+46
1.2306149804674623e+48
33.0ms
2.2015510177643053e-60
1.1594949200263921e-58
29.0ms
-1573167604718807.5
-188358479632689.72
Compiler

Compiled 114 to 80 computations (29.8% saved)

simplify4.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02259
13259
24159
34759
45059
55159
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 y (-.f64 x z))
(if (<=.f64 x -3146335209437615/2) (*.f64 y x) (if (<=.f64 x 254922191909468736/115792089237316195423570985008687907853269984665640564039457584007913129639936) (*.f64 y (neg.f64 z)) (if (<=.f64 x 16598086213092437379267666408188956701408362496) (*.f64 y x) (if (<=.f64 x 64999999999999997029919841484437323585319815687480662602966063024819390864950071815529562112) (*.f64 y (neg.f64 z)) (*.f64 y x)))))
(*.f64 y x)
Outputs
(*.f64 y (-.f64 x z))
(if (<=.f64 x -3146335209437615/2) (*.f64 y x) (if (<=.f64 x 254922191909468736/115792089237316195423570985008687907853269984665640564039457584007913129639936) (*.f64 y (neg.f64 z)) (if (<=.f64 x 16598086213092437379267666408188956701408362496) (*.f64 y x) (if (<=.f64 x 64999999999999997029919841484437323585319815687480662602966063024819390864950071815529562112) (*.f64 y (neg.f64 z)) (*.f64 y x)))))
(if (<=.f64 x -3146335209437615/2) (*.f64 y x) (if (<=.f64 x 3983159248585449/1809251394333065553493296640760748560207343510400633813116524750123642650624) (*.f64 y (neg.f64 z)) (if (<=.f64 x 16598086213092437379267666408188956701408362496) (*.f64 y x) (if (<=.f64 x 64999999999999997029919841484437323585319815687480662602966063024819390864950071815529562112) (*.f64 y (neg.f64 z)) (*.f64 y x)))))
(if (<=.f64 x -3146335209437615/2) (*.f64 y x) (if (<=.f64 x 3983159248585449/1809251394333065553493296640760748560207343510400633813116524750123642650624) (*.f64 (neg.f64 y) z) (if (<=.f64 x 16598086213092437379267666408188956701408362496) (*.f64 y x) (if (<=.f64 x 64999999999999997029919841484437323585319815687480662602966063024819390864950071815529562112) (*.f64 (neg.f64 y) z) (*.f64 y x)))))
(if (<=.f64 x -3146335209437615/2) (*.f64 y x) (if (<=.f64 x 3983159248585449/1809251394333065553493296640760748560207343510400633813116524750123642650624) (*.f64 z (neg.f64 y)) (if (<=.f64 x 16598086213092437379267666408188956701408362496) (*.f64 y x) (if (<=.f64 x 64999999999999997029919841484437323585319815687480662602966063024819390864950071815529562112) (*.f64 z (neg.f64 y)) (*.f64 y x)))))
(*.f64 y x)

end29.0ms (0.7%)

Stop Event
done
Compiler

Compiled 94 to 47 computations (50% saved)

Profiling

Loading profile data...