Linear.Matrix:fromQuaternion from linear-1.19.1.3, A

Time bar (total: 2.0s)

analyze1.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.0s (51.4%)

Results
794.0ms5980×body256valid
241.0ms2276×body256infinite
Bogosity

preprocess102.0ms (5%)

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.1%)

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)

localize31.0ms (1.5%)

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)))
1.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)))

rewrite68.0ms (3.4%)

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)))))

simplify64.0ms (3.2%)

Algorithm
egg-herbie
Rules
1178×associate-*r*
1046×associate-*l*
976×log-prod
512×associate-+r+
456×associate-+l+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
063999
1177935
2612743
34016743
Stop Event
node limit
Counts
39 → 28
Calls
Call 1
Inputs
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(+.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 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (*.f64 x 2))
(*.f64 2 (*.f64 x x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 -2 (*.f64 y x))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))
(+.f64 (*.f64 2 (pow.f64 x 2)) (*.f64 -2 (*.f64 y x)))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 y x))) (-.f64 (pow.f64 x 3) (pow.f64 y 3))))
(/.f64 (*.f64 (*.f64 x 2) (-.f64 (pow.f64 x 3) (pow.f64 y 3))) (fma.f64 x x (*.f64 y (+.f64 y x))))
(*.f64 (/.f64 2 (fma.f64 y (+.f64 y x) (*.f64 x x))) (*.f64 x (-.f64 (pow.f64 x 3) (pow.f64 y 3))))
(*.f64 (-.f64 (pow.f64 x 3) (pow.f64 y 3)) (*.f64 (/.f64 2 (fma.f64 y (+.f64 y x) (*.f64 x x))) x))
(/.f64 (*.f64 (*.f64 2 x) (-.f64 (*.f64 x x) (*.f64 y y))) (+.f64 x y))
(fma.f64 2 (*.f64 x x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.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 x) (*.f64 -2 (*.f64 y x)))
(*.f64 x (+.f64 (*.f64 -2 y) (*.f64 x 2)))
(*.f64 2 (*.f64 x (-.f64 x y)))
(*.f64 (*.f64 x 2) (-.f64 x y))

eval7.0ms (0.4%)

Compiler

Compiled 312 to 164 computations (47.4% saved)

prune5.0ms (0.3%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New25328
Fresh000
Picked101
Done000
Total26329
Accuracy
100.0%
Counts
29 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.1%
(*.f64 x (*.f64 x 2))
56.9%
(*.f64 -2 (*.f64 y x))
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.1%
(*.f64 x (*.f64 x 2))
56.9%
(*.f64 -2 (*.f64 y x))
Compiler

Compiled 46 to 32 computations (30.4% saved)

localize61.0ms (3%)

Localize:

Found 1 expressions with local error:

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

Compiled 40 to 20 computations (50% saved)

series3.0ms (0.1%)

Counts
1 → 0
Calls

6 calls:

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

rewrite57.0ms (2.8%)

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 y x))
Outputs
(-.f64 (+.f64 1 (*.f64 -2 (*.f64 y x))) 1)
(pow.f64 (*.f64 -2 (*.f64 y x)) 1)
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 y x))) 3)
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 -2 (*.f64 y x))) 2)
(sqrt.f64 (*.f64 (pow.f64 (*.f64 y x) 2) 4))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) y) -2))
(cbrt.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3))
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 y x))))
(exp.f64 (log.f64 (*.f64 -2 (*.f64 y x))))
(log1p.f64 (expm1.f64 (*.f64 -2 (*.f64 y x))))

simplify54.0ms (2.6%)

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 y x))) 1)
(pow.f64 (*.f64 -2 (*.f64 y x)) 1)
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 y x))) 3)
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 -2 (*.f64 y x))) 2)
(sqrt.f64 (*.f64 (pow.f64 (*.f64 y x) 2) 4))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) y) -2))
(cbrt.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3))
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 y x))))
(exp.f64 (log.f64 (*.f64 -2 (*.f64 y x))))
(log1p.f64 (expm1.f64 (*.f64 -2 (*.f64 y x))))
Outputs
(-.f64 (+.f64 1 (*.f64 -2 (*.f64 y x))) 1)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(pow.f64 (*.f64 -2 (*.f64 y x)) 1)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 y x))) 3)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3) 1/3)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(pow.f64 (sqrt.f64 (*.f64 -2 (*.f64 y x))) 2)
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(sqrt.f64 (*.f64 (pow.f64 (*.f64 y x) 2) 4))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) y) -2))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(cbrt.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 y x))))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(exp.f64 (log.f64 (*.f64 -2 (*.f64 y x))))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))
(log1p.f64 (expm1.f64 (*.f64 -2 (*.f64 y x))))
(+.f64 1 (-.f64 (*.f64 -2 (*.f64 y x)) 1))
(+.f64 (*.f64 -2 (*.f64 y x)) 0)
(*.f64 -2 (*.f64 y x))

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.1%
(*.f64 x (*.f64 x 2))
56.9%
(*.f64 -2 (*.f64 y x))
Compiler

Compiled 58 to 36 computations (37.9% saved)

regimes87.0ms (4.3%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 -2 (*.f64 y x))
(*.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:

73.0ms
x
5.0ms
(*.f64 2 (-.f64 (*.f64 x x) (*.f64 x y)))
4.0ms
y
4.0ms
(-.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 36 computations (41% saved)

regimes8.0ms (0.4%)

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

2 calls:

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

Compiled 25 to 16 computations (36% saved)

regimes34.0ms (1.7%)

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

2 calls:

25.0ms
y
9.0ms
x
Results
AccuracySegmentsBranch
82.3%3x
85.9%3y
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes6.0ms (0.3%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

2 calls:

3.0ms
y
3.0ms
x
Results
AccuracySegmentsBranch
56.9%1x
56.9%1y
Compiler

Compiled 13 to 9 computations (30.8% saved)

bsearch29.0ms (1.4%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
17.0ms
8.180900381069547e+41
7.005805711776481e+55
12.0ms
-2.4545531486314768e+95
-7.519198617054699e+94
Results
19.0ms173×body256valid
7.0ms67×body256infinite
Compiler

Compiled 256 to 191 computations (25.4% 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 y -75999999999999992643802360237968162601531671897059865195336218750612986149518035703532678545408) (*.f64 -2 (*.f64 y x)) (if (<=.f64 y 25999999999999998868362043562994043738393094914048) (*.f64 x (*.f64 x 2)) (*.f64 -2 (*.f64 y x))))
(*.f64 -2 (*.f64 y x))
Outputs
(*.f64 (*.f64 x 2) (-.f64 x y))
(*.f64 2 (*.f64 x (-.f64 x y)))
(if (<=.f64 y -75999999999999992643802360237968162601531671897059865195336218750612986149518035703532678545408) (*.f64 -2 (*.f64 y x)) (if (<=.f64 y 25999999999999998868362043562994043738393094914048) (*.f64 x (*.f64 x 2)) (*.f64 -2 (*.f64 y x))))
(if (or (<=.f64 y -75999999999999992643802360237968162601531671897059865195336218750612986149518035703532678545408) (not (<=.f64 y 25999999999999998868362043562994043738393094914048))) (*.f64 -2 (*.f64 x y)) (*.f64 x (*.f64 x 2)))
(*.f64 -2 (*.f64 y x))
(*.f64 -2 (*.f64 x y))
Compiler

Compiled 46 to 32 computations (30.4% saved)

soundness298.0ms (14.6%)

Rules
2344×fma-def
1178×associate-*r*
1178×associate-*r*
1046×associate-*l*
1046×associate-*l*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
023103
17495
217195
355295
4131995
5249495
6275995
7281995
8281995
063999
1177935
2612743
34016743
063999
1177935
2612743
34016743
Stop Event
node limit
node limit
saturated
Compiler

Compiled 134 to 83 computations (38.1% saved)

end0.0ms (0%)

preprocess56.0ms (2.8%)

Compiler

Compiled 120 to 74 computations (38.3% saved)

Profiling

Loading profile data...