Linear.Matrix:fromQuaternion from linear-1.19.1.3, A

Time bar (total: 2.1s)

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 12 to 8 computations (33.3% saved)

sample1.1s (50.2%)

Results
747.0ms5981×body256valid
302.0ms2275×body256infinite
Bogosity

preprocess113.0ms (5.3%)

Algorithm
egg-herbie
Rules
2344×fma-def
306×unsub-neg
300×associate-*r*
254×distribute-lft-in
188×associate-*l*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
023103
17495
217195
355295
4131995
5249495
6275995
7281995
8281995
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (-.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) y)))
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x (neg.f64 y))))
(*.f64 2 (-.f64 (*.f64 y y) (*.f64 y x)))
Outputs
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 2 (-.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) y)))
(*.f64 2 (*.f64 x (-.f64 x (neg.f64 y))))
(*.f64 2 (*.f64 x (+.f64 x y)))
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x (neg.f64 y))))
(*.f64 2 (*.f64 x (-.f64 x (neg.f64 y))))
(*.f64 2 (*.f64 x (+.f64 x y)))
(*.f64 2 (-.f64 (*.f64 y y) (*.f64 y x)))
(*.f64 2 (*.f64 y (-.f64 y x)))
(*.f64 (*.f64 2 y) (-.f64 y x))
(*.f64 (*.f64 y -2) (-.f64 x y))
(*.f64 (-.f64 x y) (*.f64 y -2))
Compiler

Compiled 11 to 7 computations (36.4% saved)

eval0.0ms (0%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 2 (*.f64 x (-.f64 x y)))
100.0%
(*.f64 2 (*.f64 x (-.f64 x y)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

localize29.0ms (1.4%)

Localize:

Found 1 expressions with local error:

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

Compiled 21 to 8 computations (61.9% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite62.0ms (2.9%)

Algorithm
batch-egg-rewrite
Rules
1844×pow1
1710×add-exp-log
1708×log1p-expm1-u
1708×expm1-log1p-u
1678×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
117319
2228519
Stop Event
node limit
Counts
1 → 15
Calls
Call 1
Inputs
(*.f64 2 (*.f64 x (-.f64 x y)))
Outputs
(+.f64 (*.f64 (*.f64 2 x) x) (*.f64 (*.f64 2 x) (neg.f64 y)))
(+.f64 (*.f64 x (*.f64 2 x)) (*.f64 (neg.f64 y) (*.f64 2 x)))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x (-.f64 x y)))) 1)
(/.f64 (*.f64 (*.f64 2 x) (-.f64 (pow.f64 x 3) (pow.f64 y 3))) (fma.f64 x x (*.f64 y (+.f64 x y))))
(/.f64 (*.f64 (*.f64 2 x) (-.f64 (*.f64 x x) (*.f64 y y))) (+.f64 x y))
(pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x (-.f64 x y)))) 3)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 2 (*.f64 x (-.f64 x y)))) 2)
(sqrt.f64 (*.f64 4 (pow.f64 (*.f64 x (-.f64 x y)) 2)))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x (-.f64 x y))))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))

simplify57.0ms (2.7%)

Algorithm
egg-herbie
Rules
1188×associate-*r*
1040×associate-*l*
976×log-prod
508×associate-+r+
456×associate-+l+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
063999
1176999
2607743
34032743
Stop Event
node limit
Counts
39 → 27
Calls
Call 1
Inputs
(*.f64 -2 (*.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(*.f64 -2 (*.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(*.f64 -2 (*.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (*.f64 2 x) x) (*.f64 (*.f64 2 x) (neg.f64 y)))
(+.f64 (*.f64 x (*.f64 2 x)) (*.f64 (neg.f64 y) (*.f64 2 x)))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x (-.f64 x y)))) 1)
(/.f64 (*.f64 (*.f64 2 x) (-.f64 (pow.f64 x 3) (pow.f64 y 3))) (fma.f64 x x (*.f64 y (+.f64 x y))))
(/.f64 (*.f64 (*.f64 2 x) (-.f64 (*.f64 x x) (*.f64 y y))) (+.f64 x y))
(pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x (-.f64 x y)))) 3)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 2 (*.f64 x (-.f64 x y)))) 2)
(sqrt.f64 (*.f64 4 (pow.f64 (*.f64 x (-.f64 x y)) 2)))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x (-.f64 x y))))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
Outputs
(*.f64 -2 (*.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (*.f64 x 2))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (*.f64 x 2))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (*.f64 x 2))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 -2 (*.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 -2 (*.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 -2 (*.f64 x y)) (*.f64 2 (pow.f64 x 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 (*.f64 2 x) x) (*.f64 (*.f64 2 x) (neg.f64 y)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 x (*.f64 2 x)) (*.f64 (neg.f64 y) (*.f64 2 x)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x (-.f64 x y)))) 1)
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(/.f64 (*.f64 (*.f64 2 x) (-.f64 (pow.f64 x 3) (pow.f64 y 3))) (fma.f64 x x (*.f64 y (+.f64 x y))))
(/.f64 (*.f64 x 2) (/.f64 (fma.f64 x x (*.f64 y (+.f64 x y))) (-.f64 (pow.f64 x 3) (pow.f64 y 3))))
(*.f64 (/.f64 (*.f64 x 2) (fma.f64 x x (*.f64 y (+.f64 x y)))) (-.f64 (pow.f64 x 3) (pow.f64 y 3)))
(*.f64 (-.f64 (pow.f64 x 3) (pow.f64 y 3)) (/.f64 (*.f64 x 2) (fma.f64 x x (*.f64 y (+.f64 x y)))))
(*.f64 (-.f64 (pow.f64 x 3) (pow.f64 y 3)) (*.f64 (/.f64 2 (fma.f64 x x (*.f64 y (+.f64 x y)))) x))
(/.f64 (*.f64 (*.f64 2 x) (-.f64 (*.f64 x x) (*.f64 y y))) (+.f64 x y))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 1)
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x (-.f64 x y)))) 3)
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 3) 1/3)
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(pow.f64 (sqrt.f64 (*.f64 2 (*.f64 x (-.f64 x y)))) 2)
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(sqrt.f64 (*.f64 4 (pow.f64 (*.f64 x (-.f64 x y)) 2)))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x (-.f64 x y))))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x (-.f64 x y))) 3))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x (-.f64 x y)))))
(fma.f64 -2 (*.f64 x y) (*.f64 x (*.f64 x 2)))
(fma.f64 x (*.f64 x 2) (*.f64 -2 (*.f64 x y)))
(*.f64 x (*.f64 2 (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))

eval5.0ms (0.3%)

Compiler

Compiled 308 to 159 computations (48.4% saved)

prune6.0ms (0.3%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New24327
Fresh000
Picked101
Done000
Total25328
Accuracy
100.0%
Counts
28 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.7%
(*.f64 x (*.f64 x 2))
57.1%
(*.f64 -2 (*.f64 x y))
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.7%
(*.f64 x (*.f64 x 2))
57.1%
(*.f64 -2 (*.f64 x y))
Compiler

Compiled 46 to 32 computations (30.4% saved)

localize47.0ms (2.2%)

Localize:

Found 1 expressions with local error:

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

Compiled 40 to 20 computations (50% saved)

series4.0ms (0.2%)

Counts
1 → 0
Calls

6 calls:

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

rewrite53.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
1304×pow1
1198×add-exp-log
1198×log1p-expm1-u
1198×expm1-log1p-u
1172×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
114113
2163413
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 -2 (*.f64 x y))
Outputs
(-.f64 (+.f64 1 (*.f64 -2 (*.f64 x y))) 1)
(pow.f64 (*.f64 -2 (*.f64 x y)) 1)
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 x y))) 3)
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 x y)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 -2 (*.f64 x y))) 2)
(sqrt.f64 (*.f64 (pow.f64 (*.f64 x y) 2) 4))
(log.f64 (pow.f64 (pow.f64 (exp.f64 y) x) -2))
(cbrt.f64 (pow.f64 (*.f64 -2 (*.f64 x y)) 3))
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 x y))))
(exp.f64 (log.f64 (*.f64 -2 (*.f64 x y))))
(log1p.f64 (expm1.f64 (*.f64 -2 (*.f64 x y))))

simplify53.0ms (2.5%)

Algorithm
egg-herbie
Rules
2070×log-prod
864×*-commutative
752×associate-*r*
696×exp-sum
646×associate-*l*
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
036275
191209
2335143
32195143
45998143
Stop Event
node limit
Counts
11 → 14
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 -2 (*.f64 x y))) 1)
(pow.f64 (*.f64 -2 (*.f64 x y)) 1)
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 x y))) 3)
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 x y)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 -2 (*.f64 x y))) 2)
(sqrt.f64 (*.f64 (pow.f64 (*.f64 x y) 2) 4))
(log.f64 (pow.f64 (pow.f64 (exp.f64 y) x) -2))
(cbrt.f64 (pow.f64 (*.f64 -2 (*.f64 x y)) 3))
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 x y))))
(exp.f64 (log.f64 (*.f64 -2 (*.f64 x y))))
(log1p.f64 (expm1.f64 (*.f64 -2 (*.f64 x y))))
Outputs
(-.f64 (+.f64 1 (*.f64 -2 (*.f64 x y))) 1)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(pow.f64 (*.f64 -2 (*.f64 x y)) 1)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 x y))) 3)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 x y)) 3) 1/3)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(pow.f64 (sqrt.f64 (*.f64 -2 (*.f64 x y))) 2)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(sqrt.f64 (*.f64 (pow.f64 (*.f64 x y) 2) 4))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(log.f64 (pow.f64 (pow.f64 (exp.f64 y) x) -2))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(cbrt.f64 (pow.f64 (*.f64 -2 (*.f64 x y)) 3))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 x y))))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(exp.f64 (log.f64 (*.f64 -2 (*.f64 x y))))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))
(log1p.f64 (expm1.f64 (*.f64 -2 (*.f64 x y))))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 x y)) 1))
(+.f64 (*.f64 -2 (*.f64 x y)) 0)
(*.f64 -2 (*.f64 x y))

eval3.0ms (0.1%)

Compiler

Compiled 108 to 68 computations (37% saved)

prune4.0ms (0.2%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New14014
Fresh000
Picked033
Done000
Total14317
Accuracy
100.0%
Counts
17 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.7%
(*.f64 x (*.f64 x 2))
57.1%
(*.f64 -2 (*.f64 x y))
Compiler

Compiled 58 to 35 computations (39.7% saved)

regimes30.0ms (1.4%)

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

4 calls:

16.0ms
x
5.0ms
(-.f64 (*.f64 x x) (*.f64 x y))
4.0ms
y
4.0ms
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
100.0%1(-.f64 (*.f64 x x) (*.f64 x y))
Compiler

Compiled 61 to 35 computations (42.6% saved)

regimes9.0ms (0.4%)

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

2 calls:

5.0ms
y
3.0ms
x
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
Compiler

Compiled 25 to 16 computations (36% saved)

regimes26.0ms (1.2%)

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

2 calls:

14.0ms
y
11.0ms
x
Results
AccuracySegmentsBranch
84.4%3x
87.1%5y
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes8.0ms (0.4%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

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

2 calls:

5.0ms
x
3.0ms
y
Results
AccuracySegmentsBranch
57.1%1y
57.1%1x
Compiler

Compiled 13 to 9 computations (30.8% saved)

bsearch102.0ms (4.8%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
85.0ms
1.294658975623178e+58
7.934723935183926e+63
17.0ms
-2.085243819503973e-108
-5.368117104304034e-119
Results
97.0ms290×body256valid
1.0ms14×body256infinite
Compiler

Compiled 320 to 239 computations (25.3% saved)

simplify7.0ms (0.3%)

Algorithm
egg-herbie
Rules
16×*-commutative
sub-neg
+-commutative
neg-mul-1
if-if-or-not
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023102
138102
243102
345102
446102
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (*.f64 x (-.f64 x y)))
(if (<=.f64 x -1164304656710889/5415370496329716522614090203404460358274291162843391748379842930887932241807862544999950011922147613471467208908991351228465152) (*.f64 x (*.f64 x 2)) (if (<=.f64 x 54000000000000004403143769571796424107466677842199825860263936) (*.f64 -2 (*.f64 x y)) (*.f64 x (*.f64 x 2))))
(*.f64 -2 (*.f64 x y))
Outputs
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (*.f64 x (-.f64 x y)))
(if (<=.f64 x -1164304656710889/5415370496329716522614090203404460358274291162843391748379842930887932241807862544999950011922147613471467208908991351228465152) (*.f64 x (*.f64 x 2)) (if (<=.f64 x 54000000000000004403143769571796424107466677842199825860263936) (*.f64 -2 (*.f64 x y)) (*.f64 x (*.f64 x 2))))
(if (or (<=.f64 x -1164304656710889/5415370496329716522614090203404460358274291162843391748379842930887932241807862544999950011922147613471467208908991351228465152) (not (<=.f64 x 54000000000000004403143769571796424107466677842199825860263936))) (*.f64 x (*.f64 x 2)) (*.f64 -2 (*.f64 x y)))
(*.f64 -2 (*.f64 x y))
Compiler

Compiled 46 to 32 computations (30.4% saved)

soundness368.0ms (17.4%)

Rules
2344×fma-def
1188×associate-*r*
1188×associate-*r*
1040×associate-*l*
1040×associate-*l*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
023103
17495
217195
355295
4131995
5249495
6275995
7281995
8281995
063999
1176999
2607743
34032743
063999
1176999
2607743
34032743
Stop Event
node limit
node limit
saturated
Compiler

Compiled 156 to 98 computations (37.2% saved)

end0.0ms (0%)

preprocess61.0ms (2.9%)

Compiler

Compiled 120 to 74 computations (38.3% saved)

Profiling

Loading profile data...