Linear.Quaternion:$c/ from linear-1.19.1.3, D

Details

Time bar (total: 2.9s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 19 to 10 computations (47.4% saved)

sample1.5s (51.7%)

Results
767.0ms5069×body256valid
225.0ms631×body1024valid
195.0ms1429×body256infinite
129.0ms396×body2048valid
110.0ms456×body512valid
63.0ms174×body512infinite
19.0ms101×body1024infinite
Bogosity

preprocess70.0ms (2.4%)

Algorithm
egg-herbie
Rules
1614×sub-neg
1274×fma-def
756×distribute-lft-out
750×associate-+r+
666×distribute-lft-neg-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
025148
19984
234176
3105552
4452652
5714352
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 y)) (*.f64 y y)) (*.f64 y z))
(-.f64 (+.f64 (-.f64 (*.f64 y x) (*.f64 x x)) (*.f64 x x)) (*.f64 x z))
(-.f64 (+.f64 (-.f64 (*.f64 z y) (*.f64 y y)) (*.f64 y y)) (*.f64 y x))
(-.f64 (+.f64 (-.f64 (*.f64 x z) (*.f64 z z)) (*.f64 z z)) (*.f64 z y))
Outputs
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(+.f64 (*.f64 y (-.f64 x y)) (-.f64 (*.f64 y y) (*.f64 y z)))
(-.f64 (fma.f64 x y 0) (*.f64 y z))
(-.f64 (*.f64 x y) (*.f64 y z))
(*.f64 y (-.f64 x z))
(-.f64 (+.f64 (-.f64 (*.f64 y x) (*.f64 x x)) (*.f64 x x)) (*.f64 x z))
(-.f64 (+.f64 (*.f64 x x) (*.f64 x (-.f64 y x))) (*.f64 x z))
(-.f64 (fma.f64 x y 0) (*.f64 x z))
(-.f64 (*.f64 x y) (*.f64 x z))
(*.f64 x (-.f64 y z))
(-.f64 (+.f64 (-.f64 (*.f64 z y) (*.f64 y y)) (*.f64 y y)) (*.f64 y x))
(-.f64 (+.f64 (*.f64 y y) (*.f64 y (-.f64 z y))) (*.f64 x y))
(-.f64 (fma.f64 y z 0) (*.f64 x y))
(-.f64 (*.f64 y z) (*.f64 x y))
(*.f64 y (-.f64 z x))
(-.f64 (+.f64 (-.f64 (*.f64 x z) (*.f64 z z)) (*.f64 z z)) (*.f64 z y))
(+.f64 (*.f64 z (-.f64 x z)) (-.f64 (*.f64 z z) (*.f64 y z)))
(-.f64 (fma.f64 x z 0) (*.f64 y z))
(-.f64 (*.f64 x z) (*.f64 y z))
(*.f64 z (-.f64 x y))
Compiler

Compiled 21 to 12 computations (42.9% saved)

simplify219.0ms (7.4%)

Algorithm
egg-herbie
Rules
1474×distribute-rgt-in
1454×distribute-lft-in
1038×sub-neg
1022×unsub-neg
914×fma-def
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01137
13221
210219
328513
489413
5294313
6471913
7568613
8635413
9665913
10681413
11683213
12683213
13683213
Stop Event
node limit
Counts
1 → 5
Calls
Call 1
Inputs
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
Outputs
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
(+.f64 (*.f64 y (-.f64 x y)) (-.f64 (*.f64 y y) (*.f64 y z)))
(-.f64 (fma.f64 x y 0) (*.f64 y z))
(-.f64 (*.f64 x y) (*.f64 y z))
(*.f64 y (-.f64 x z))

eval1.0ms (0%)

Compiler

Compiled 51 to 19 computations (62.7% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New325
Fresh101
Picked000
Done000
Total426
Accurracy
100.0%
Counts
6 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
97.6%
(-.f64 (*.f64 x y) (*.f64 y z))
100.0%
(*.f64 y (-.f64 x z))
Compiler

Compiled 18 to 11 computations (38.9% saved)

localize23.0ms (0.8%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
100.0%
(*.f64 y (-.f64 x z))
Compiler

Compiled 15 to 6 computations (60% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

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

rewrite112.0ms (3.8%)

Algorithm
batch-egg-rewrite
Rules
1646×pow1
1520×add-exp-log
1520×log1p-expm1-u
1520×expm1-log1p-u
1488×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
114913
2202513
Stop Event
node limit
Counts
1 → 19
Calls
Call 1
Inputs
(*.f64 y (-.f64 x z))
Outputs
(+.f64 (*.f64 y x) (*.f64 y (neg.f64 z)))
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
(-.f64 (+.f64 1 (*.f64 y (-.f64 x z))) 1)
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 x x (*.f64 z (+.f64 x z))))
(/.f64 (*.f64 y (-.f64 (*.f64 x x) (*.f64 z z))) (+.f64 x z))
(/.f64 (*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) y) (fma.f64 x x (*.f64 z (+.f64 x z))))
(/.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 z z)) y) (+.f64 x z))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(log.f64 (pow.f64 (exp.f64 (-.f64 x z)) y))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (-.f64 x z) 3)))
(cbrt.f64 (*.f64 (pow.f64 (-.f64 x z) 3) (pow.f64 y 3)))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))

simplify76.0ms (2.6%)

Algorithm
egg-herbie
Rules
1376×fma-def
1306×log-prod
792×unsub-neg
750×associate-*r*
650×associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069611
1168611
2519611
33087611
46399611
Stop Event
node limit
Counts
43 → 28
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)))
(+.f64 (*.f64 y x) (*.f64 y (neg.f64 z)))
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
(-.f64 (+.f64 1 (*.f64 y (-.f64 x z))) 1)
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 x x (*.f64 z (+.f64 x z))))
(/.f64 (*.f64 y (-.f64 (*.f64 x x) (*.f64 z z))) (+.f64 x z))
(/.f64 (*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) y) (fma.f64 x x (*.f64 z (+.f64 x z))))
(/.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 z z)) y) (+.f64 x z))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(log.f64 (pow.f64 (exp.f64 (-.f64 x z)) y))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (-.f64 x z) 3)))
(cbrt.f64 (*.f64 (pow.f64 (-.f64 x z) 3) (pow.f64 y 3)))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
Outputs
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y))
(*.f64 y (-.f64 x z))
(-.f64 (+.f64 1 (*.f64 y (-.f64 x z))) 1)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 y (-.f64 (pow.f64 x 3) (pow.f64 z 3))) (fma.f64 x x (*.f64 z (+.f64 x z))))
(/.f64 y (/.f64 (fma.f64 x x (*.f64 z (+.f64 z x))) (-.f64 (pow.f64 x 3) (pow.f64 z 3))))
(*.f64 (/.f64 y (fma.f64 x x (*.f64 z (+.f64 z x)))) (-.f64 (pow.f64 x 3) (pow.f64 z 3)))
(*.f64 y (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) (fma.f64 z (+.f64 z x) (*.f64 x x))))
(/.f64 (*.f64 y (-.f64 (*.f64 x x) (*.f64 z z))) (+.f64 x z))
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) y) (fma.f64 x x (*.f64 z (+.f64 x z))))
(/.f64 y (/.f64 (fma.f64 x x (*.f64 z (+.f64 z x))) (-.f64 (pow.f64 x 3) (pow.f64 z 3))))
(*.f64 (/.f64 y (fma.f64 x x (*.f64 z (+.f64 z x)))) (-.f64 (pow.f64 x 3) (pow.f64 z 3)))
(*.f64 y (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 z 3)) (fma.f64 z (+.f64 z x) (*.f64 x x))))
(/.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 z z)) y) (+.f64 x z))
(*.f64 y (-.f64 x z))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(*.f64 y (-.f64 x z))
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(*.f64 y (-.f64 x z))
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(*.f64 y (-.f64 x z))
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(*.f64 y (-.f64 x z))
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(*.f64 y (-.f64 x z))
(log.f64 (pow.f64 (exp.f64 (-.f64 x z)) y))
(*.f64 y (-.f64 x z))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(*.f64 y (-.f64 x z))
(cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (-.f64 x z) 3)))
(*.f64 y (-.f64 x z))
(cbrt.f64 (*.f64 (pow.f64 (-.f64 x z) 3) (pow.f64 y 3)))
(*.f64 y (-.f64 x z))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(*.f64 y (-.f64 x z))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(*.f64 y (-.f64 x z))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
(*.f64 y (-.f64 x z))

localize55.0ms (1.9%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
98.0%
(-.f64 (*.f64 x y) (*.f64 y z))
Compiler

Compiled 20 to 7 computations (65% saved)

series3.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite66.0ms (2.3%)

Algorithm
batch-egg-rewrite
Rules
1968×pow1
1816×add-exp-log
1816×log1p-expm1-u
1816×expm1-log1p-u
192×add-sqr-sqrt
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
118113
2249313
Stop Event
node limit
Counts
1 → 50
Calls
Call 1
Inputs
(-.f64 (*.f64 x y) (*.f64 y z))
Outputs
(+.f64 (*.f64 x y) (*.f64 y (neg.f64 z)))
(+.f64 (*.f64 x y) (*.f64 (*.f64 y (neg.f64 z)) 1))
(+.f64 (*.f64 x y) (+.f64 (*.f64 y (neg.f64 z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 y) z (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (*.f64 y (neg.f64 z)) 1 (*.f64 y z)))
(+.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)))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 y z))) (sqrt.f64 (*.f64 y z)) (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x z)) (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) 1))
(+.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))))
(+.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(*.f64 (*.f64 y (-.f64 x z)) 1)
(*.f64 1 (*.f64 y (-.f64 x z)))
(*.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2) (cbrt.f64 (*.f64 y (-.f64 x z))))
(*.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) (sqrt.f64 (*.f64 y (-.f64 x z))))
(*.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 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z))) (/.f64 1 (*.f64 y (+.f64 x z))))
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))) (-.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))))
(/.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))))
(/.f64 1 (/.f64 (*.f64 y (+.f64 x z)) (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z)))))
(/.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)))))
(/.f64 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z))) (*.f64 y (+.f64 x z)))
(/.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))))))
(/.f64 (neg.f64 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z)))) (neg.f64 (*.f64 y (+.f64 x z))))
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y (neg.f64 z)) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (*.f64 (*.f64 y (neg.f64 z)) (*.f64 y (neg.f64 z))) (*.f64 (*.f64 x y) (*.f64 y (neg.f64 z))))))
(/.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 (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z))) (*.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))))
(/.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (*.f64 (*.f64 y (neg.f64 z)) (*.f64 y (neg.f64 z)))) (-.f64 (*.f64 x y) (*.f64 y (neg.f64 z))))
(/.f64 (-.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))) (-.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(log.f64 (exp.f64 (*.f64 y (-.f64 x z))))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
(fma.f64 x y (*.f64 y (neg.f64 z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(fma.f64 1 (*.f64 x y) (*.f64 y (neg.f64 z)))
(fma.f64 1 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2) (cbrt.f64 (*.f64 y (-.f64 x z))) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 y (neg.f64 z)))
(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)))
(fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 y (neg.f64 z)))

simplify57.0ms (1.9%)

Algorithm
egg-herbie
Rules
1048×associate-*r/
656×cancel-sign-sub-inv
622×distribute-lft-in
602×fma-neg
582×distribute-rgt-in
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01392154
14171628
219491510
Stop Event
node limit
Counts
86 → 65
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 (*.f64 x y) (*.f64 y (neg.f64 z)))
(+.f64 (*.f64 x y) (*.f64 (*.f64 y (neg.f64 z)) 1))
(+.f64 (*.f64 x y) (+.f64 (*.f64 y (neg.f64 z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 y) z (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (*.f64 y (neg.f64 z)) 1 (*.f64 y z)))
(+.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)))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 y z))) (sqrt.f64 (*.f64 y z)) (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x z)) (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) 1))
(+.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))))
(+.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 x y))
(*.f64 y (-.f64 x z))
(*.f64 (*.f64 y (-.f64 x z)) 1)
(*.f64 1 (*.f64 y (-.f64 x z)))
(*.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2) (cbrt.f64 (*.f64 y (-.f64 x z))))
(*.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) (sqrt.f64 (*.f64 y (-.f64 x z))))
(*.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 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z))) (/.f64 1 (*.f64 y (+.f64 x z))))
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))) (-.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))))
(/.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))))
(/.f64 1 (/.f64 (*.f64 y (+.f64 x z)) (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z)))))
(/.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)))))
(/.f64 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z))) (*.f64 y (+.f64 x z)))
(/.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))))))
(/.f64 (neg.f64 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z)))) (neg.f64 (*.f64 y (+.f64 x z))))
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y (neg.f64 z)) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (*.f64 (*.f64 y (neg.f64 z)) (*.f64 y (neg.f64 z))) (*.f64 (*.f64 x y) (*.f64 y (neg.f64 z))))))
(/.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 (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z))) (*.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))))
(/.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (*.f64 (*.f64 y (neg.f64 z)) (*.f64 y (neg.f64 z)))) (-.f64 (*.f64 x y) (*.f64 y (neg.f64 z))))
(/.f64 (-.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))) (-.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(log.f64 (exp.f64 (*.f64 y (-.f64 x z))))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(exp.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
(fma.f64 x y (*.f64 y (neg.f64 z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(fma.f64 1 (*.f64 x y) (*.f64 y (neg.f64 z)))
(fma.f64 1 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2) (cbrt.f64 (*.f64 y (-.f64 x z))) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 y (neg.f64 z)))
(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)))
(fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 y (neg.f64 z)))
Outputs
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y (-.f64 (*.f64 -1 x) (*.f64 -1 z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 x y) (*.f64 y (neg.f64 z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 x y) (*.f64 (*.f64 y (neg.f64 z)) 1))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 x y) (+.f64 (*.f64 y (neg.f64 z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 y) z (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (*.f64 y (neg.f64 z)) 1 (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.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)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 y z))) (sqrt.f64 (*.f64 y z)) (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) 1))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x 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))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (*.f64 y (-.f64 x z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 x y))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 (*.f64 y (-.f64 x z)) 1)
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 1 (*.f64 y (-.f64 x z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2) (cbrt.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) (sqrt.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.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 (*.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) 1) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 (*.f64 y z) (*.f64 y (+.f64 z x)))))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 (*.f64 y z) (+.f64 z x)) (pow.f64 (*.f64 y x) 2)))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 z (*.f64 y (+.f64 z x))) (pow.f64 (*.f64 y x) 2)))
(*.f64 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z))) (/.f64 1 (*.f64 y (+.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(*.f64 (+.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))) (-.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 y z))))
(*.f64 (+.f64 (sqrt.f64 (*.f64 y z)) (sqrt.f64 (*.f64 y x))) (-.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y z))))
(/.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))))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) 1) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 (*.f64 y z) (*.f64 y (+.f64 z x)))))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 (*.f64 y z) (+.f64 z x)) (pow.f64 (*.f64 y x) 2)))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 z (*.f64 y (+.f64 z x))) (pow.f64 (*.f64 y x) 2)))
(/.f64 1 (/.f64 (*.f64 y (+.f64 x z)) (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z)))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(/.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)))))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) 1) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 (*.f64 y z) (*.f64 y (+.f64 z x)))))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 (*.f64 y z) (+.f64 z x)) (pow.f64 (*.f64 y x) 2)))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 z (*.f64 y (+.f64 z x))) (pow.f64 (*.f64 y x) 2)))
(/.f64 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z))) (*.f64 y (+.f64 x z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(/.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))))))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) 1) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 (*.f64 y z) (*.f64 y (+.f64 z x)))))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 (*.f64 y z) (+.f64 z x)) (pow.f64 (*.f64 y x) 2)))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 z (*.f64 y (+.f64 z x))) (pow.f64 (*.f64 y x) 2)))
(/.f64 (neg.f64 (*.f64 (*.f64 y (+.f64 x z)) (*.f64 y (-.f64 x z)))) (neg.f64 (*.f64 y (+.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 y (neg.f64 z)) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (*.f64 (*.f64 y (neg.f64 z)) (*.f64 y (neg.f64 z))) (*.f64 (*.f64 x y) (*.f64 y (neg.f64 z))))))
(/.f64 (*.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) 1) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 (*.f64 y z) (*.f64 y (+.f64 z x)))))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 (*.f64 y z) (+.f64 z x)) (pow.f64 (*.f64 y x) 2)))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 y (*.f64 z (*.f64 y (+.f64 z x))) (pow.f64 (*.f64 y x) 2)))
(/.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 (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z))) (*.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))))
(/.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 (fma.f64 (neg.f64 z) y (*.f64 y z)) (-.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (*.f64 y (-.f64 x z))))))
(/.f64 (+.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) (pow.f64 (*.f64 0 (*.f64 y z)) 3)) (fma.f64 (*.f64 0 (*.f64 y z)) (-.f64 (*.f64 0 (*.f64 y z)) (*.f64 y (-.f64 x z))) (pow.f64 (*.f64 y (-.f64 x z)) 2)))
(/.f64 (+.f64 0 (pow.f64 (*.f64 y (-.f64 x z)) 3)) (pow.f64 (*.f64 y (-.f64 x z)) 2))
(/.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (*.f64 (*.f64 y (neg.f64 z)) (*.f64 y (neg.f64 z)))) (-.f64 (*.f64 x y) (*.f64 y (neg.f64 z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(/.f64 (-.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) (*.f64 (fma.f64 (neg.f64 z) y (*.f64 y z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))) (-.f64 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z))))
(/.f64 (+.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) (*.f64 (*.f64 0 (*.f64 y z)) (*.f64 0 (*.f64 y z)))) (fma.f64 y (-.f64 x z) (*.f64 0 (*.f64 y z))))
(/.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2) (*.f64 y (-.f64 x z)))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 3)
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(pow.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3) 1/3)
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(pow.f64 (sqrt.f64 (*.f64 y (-.f64 x z))) 2)
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(sqrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 2))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(log.f64 (exp.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(cbrt.f64 (pow.f64 (*.f64 y (-.f64 x z)) 3))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(expm1.f64 (log1p.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(exp.f64 (log.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(exp.f64 (*.f64 (log.f64 (*.f64 y (-.f64 x z))) 1))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(log1p.f64 (expm1.f64 (*.f64 y (-.f64 x z))))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 x y (*.f64 y (neg.f64 z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 1 (*.f64 x y) (*.f64 y (neg.f64 z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 1 (*.f64 y (-.f64 x z)) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 y (-.f64 x z))) 2) (cbrt.f64 (*.f64 y (-.f64 x z))) (fma.f64 (neg.f64 z) y (*.f64 y z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 y (neg.f64 z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(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)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))
(fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 y (neg.f64 z)))
(fma.f64 y x (*.f64 y (neg.f64 z)))
(*.f64 y (-.f64 x z))

eval16.0ms (0.6%)

Compiler

Compiled 1349 to 386 computations (71.4% saved)

prune16.0ms (0.5%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New91293
Fresh000
Picked011
Done011
Total91495
Accurracy
100.0%
Counts
95 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
97.6%
(-.f64 (*.f64 x y) (*.f64 y z))
100.0%
(*.f64 y (-.f64 x z))
55.6%
(*.f64 y (neg.f64 z))
55.8%
(*.f64 y x)
Compiler

Compiled 31 to 20 computations (35.5% saved)

localize51.0ms (1.7%)

Compiler

Compiled 9 to 5 computations (44.4% saved)

localize20.0ms (0.7%)

Compiler

Compiled 12 to 6 computations (50% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0.1%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done033
Total044
Accurracy
100.0%
Counts
4 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
97.6%
(-.f64 (*.f64 x y) (*.f64 y z))
100.0%
(*.f64 y (-.f64 x z))
55.6%
(*.f64 y (neg.f64 z))
55.8%
(*.f64 y x)
Compiler

Compiled 31 to 20 computations (35.5% saved)

regimes56.0ms (1.9%)

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 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
Outputs
(*.f64 y (-.f64 x z))
Calls

4 calls:

41.0ms
x
5.0ms
(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
4.0ms
y
4.0ms
z
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1z
100.0%1(-.f64 (+.f64 (-.f64 (*.f64 x y) (*.f64 y y)) (*.f64 y y)) (*.f64 y z))
Compiler

Compiled 67 to 33 computations (50.7% saved)

regimes65.0ms (2.2%)

Accuracy

Total -44.3b remaining (-389.4%)

Threshold costs -44.3b (-389.4%)

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

3 calls:

40.0ms
y
12.0ms
z
12.0ms
x
Results
AccuracySegmentsBranch
82.2%3x
73.9%13y
81.0%3z
Compiler

Compiled 22 to 15 computations (31.8% saved)

bsearch41.0ms (1.4%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
22.0ms
4.668714176891172e-56
1.3202482658664558e-50
19.0ms
-3.061431257084201e-5
-1.0274231197418686e-12
Results
19.0ms190×body256valid
6.0ms30×body1024valid
4.0msbody2048valid
3.0ms22×body512valid
3.0ms30×body256infinite
2.0msbody1024infinite
Compiler

Compiled 294 to 212 computations (27.9% saved)

simplify7.0ms (0.2%)

Algorithm
egg-herbie
Rules
14×*-commutative
sub-neg
+-commutative
neg-mul-1
neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02063
13563
24463
35063
45363
55463
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 y (-.f64 x z))
(if (<=.f64 x -4835703278458517/604462909807314587353088) (*.f64 y x) (if (<=.f64 x 3706992666733213/421249166674228746791672110734681729275580381602196445017243910144) (*.f64 y (neg.f64 z)) (*.f64 y x)))
(*.f64 y x)
Outputs
(*.f64 y (-.f64 x z))
(if (<=.f64 x -4835703278458517/604462909807314587353088) (*.f64 y x) (if (<=.f64 x 3706992666733213/421249166674228746791672110734681729275580381602196445017243910144) (*.f64 y (neg.f64 z)) (*.f64 y x)))
(*.f64 y x)
Compiler

Compiled 35 to 21 computations (40% saved)

soundness420.0ms (14.3%)

Rules
1474×distribute-rgt-in
1454×distribute-lft-in
1376×fma-def
1306×log-prod
1038×sub-neg
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01137
13221
210219
328513
489413
5294313
6471913
7568613
8635413
9665913
10681413
11683213
12683213
13683213
069611
1168611
2519611
33087611
46399611
Stop Event
node limit
node limit
Compiler

Compiled 88 to 34 computations (61.4% saved)

end43.0ms (1.5%)

Compiler

Compiled 110 to 56 computations (49.1% saved)

Profiling

Loading profile data...