Linear.Matrix:fromQuaternion from linear-1.19.1.3, A

Time bar (total: 2.2s)

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)

sample969.0ms (45%)

Results
742.0ms5874×body256valid
216.0ms2382×body256infinite
Bogosity

preprocess82.0ms (3.8%)

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)

localize25.0ms (1.1%)

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)

series7.0ms (0.3%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
5.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)))

rewrite59.0ms (2.7%)

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

Compiler

Compiled 312 to 164 computations (47.4% saved)

prune6.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))
55.0%
(*.f64 2 (*.f64 x x))
59.3%
(*.f64 -2 (*.f64 y x))
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
55.0%
(*.f64 2 (*.f64 x x))
59.3%
(*.f64 -2 (*.f64 y x))
Compiler

Compiled 46 to 32 computations (30.4% saved)

localize52.0ms (2.4%)

Localize:

Found 2 expressions with local error:

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

Compiled 40 to 18 computations (55% saved)

series4.0ms (0.2%)

Counts
2 → 12
Calls

9 calls:

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

rewrite120.0ms (5.6%)

Algorithm
batch-egg-rewrite
Rules
1774×pow1
1626×add-exp-log
1626×log1p-expm1-u
1626×expm1-log1p-u
1590×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01026
120226
2229426
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 -2 (*.f64 y x))
(*.f64 2 (*.f64 x 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 4 (pow.f64 (*.f64 y x) 2)))
(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))))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(sqrt.f64 (*.f64 4 (pow.f64 x 4)))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x x)))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))

simplify72.0ms (3.3%)

Algorithm
egg-herbie
Rules
1420×exp-sum
1388×log-prod
970×fma-def
940×distribute-rgt-in
916×distribute-lft-in
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
063574
1160508
2612442
32043442
46922442
Stop Event
node limit
Counts
34 → 27
Calls
Call 1
Inputs
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(-.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 4 (pow.f64 (*.f64 y x) 2)))
(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))))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(sqrt.f64 (*.f64 4 (pow.f64 x 4)))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x x)))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
Outputs
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 -2 (*.f64 y x))) 1)
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(pow.f64 (*.f64 -2 (*.f64 y x)) 1)
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(pow.f64 (cbrt.f64 (*.f64 -2 (*.f64 y x))) 3)
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(pow.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3) 1/3)
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(pow.f64 (sqrt.f64 (*.f64 -2 (*.f64 y x))) 2)
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(sqrt.f64 (*.f64 4 (pow.f64 (*.f64 y x) 2)))
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) y) -2))
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(cbrt.f64 (pow.f64 (*.f64 -2 (*.f64 y x)) 3))
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(expm1.f64 (log1p.f64 (*.f64 -2 (*.f64 y x))))
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(exp.f64 (log.f64 (*.f64 -2 (*.f64 y x))))
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(log1p.f64 (expm1.f64 (*.f64 -2 (*.f64 y x))))
(+.f64 1 (-.f64 (*.f64 (*.f64 -2 y) x) 1))
(+.f64 (*.f64 x (*.f64 -2 y)) 0)
(*.f64 x (*.f64 -2 y))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(*.f64 2 (*.f64 x x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(*.f64 2 (*.f64 x x))
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(*.f64 2 (*.f64 x x))
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(*.f64 2 (*.f64 x x))
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(*.f64 2 (*.f64 x x))
(sqrt.f64 (*.f64 4 (pow.f64 x 4)))
(*.f64 2 (*.f64 x x))
(log.f64 (pow.f64 (exp.f64 2) (*.f64 x x)))
(*.f64 2 (*.f64 x x))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(*.f64 2 (*.f64 x x))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))

eval5.0ms (0.2%)

Compiler

Compiled 199 to 130 computations (34.7% saved)

prune35.0ms (1.6%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New26127
Fresh000
Picked123
Done000
Total27330
Accuracy
100.0%
Counts
30 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.3%
(*.f64 x (*.f64 -2 y))
55.0%
(*.f64 2 (*.f64 x x))
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.3%
(*.f64 x (*.f64 -2 y))
55.0%
(*.f64 2 (*.f64 x x))
Compiler

Compiled 46 to 32 computations (30.4% saved)

localize22.0ms (1%)

Compiler

Compiled 14 to 9 computations (35.7% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done022
Total033
Accuracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (*.f64 x 2) (-.f64 x y))
59.3%
(*.f64 x (*.f64 -2 y))
55.0%
(*.f64 2 (*.f64 x x))
Compiler

Compiled 63 to 38 computations (39.7% saved)

regimes73.0ms (3.4%)

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

39.0ms
x
23.0ms
(-.f64 (*.f64 x x) (*.f64 x y))
5.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 66 to 38 computations (42.4% saved)

regimes10.0ms (0.5%)

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

2 calls:

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

Compiled 30 to 19 computations (36.7% saved)

regimes48.0ms (2.2%)

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

2 calls:

28.0ms
x
20.0ms
y
Results
AccuracySegmentsBranch
83.2%5x
87.4%5y
Compiler

Compiled 23 to 15 computations (34.8% saved)

regimes7.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
59.3%1x
59.3%1y
Compiler

Compiled 13 to 9 computations (30.8% saved)

bsearch52.0ms (2.4%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
narrow-enough
narrow-enough
Steps
TimeLeftRight
17.0ms
6.395711369898251e+30
8.112945753077757e+42
16.0ms
-2.0360513060351292e-10
-3.506201415728152e-16
8.0ms
-8.752305957657846e+59
-3.653476555720806e+59
10.0ms
-2.6240207809883543e+103
-1.937632944829643e+102
Results
36.0ms366×body256valid
10.0ms114×body256infinite
Compiler

Compiled 496 to 371 computations (25.2% saved)

simplify28.0ms (1.3%)

Algorithm
egg-herbie
Rules
16×*-commutative
not-or
not-not
if-if-or-not
if-not
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
030146
145140
253134
361130
466130
570130
671130
772130
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 -1999999999999999954099026530490673256893685439848300012259991949463986904361579822606522588963023093760) (*.f64 -2 (*.f64 y x)) (if (<=.f64 y -780000000000000042588707862310427877083086351936430199013376) (*.f64 2 (*.f64 x x)) (if (<=.f64 y -290142196707511/38685626227668133590597632) (*.f64 -2 (*.f64 y x)) (if (<=.f64 y 7000000000000000195487369212723200) (*.f64 2 (*.f64 x x)) (*.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 -1999999999999999954099026530490673256893685439848300012259991949463986904361579822606522588963023093760) (*.f64 -2 (*.f64 y x)) (if (<=.f64 y -780000000000000042588707862310427877083086351936430199013376) (*.f64 2 (*.f64 x x)) (if (<=.f64 y -290142196707511/38685626227668133590597632) (*.f64 -2 (*.f64 y x)) (if (<=.f64 y 7000000000000000195487369212723200) (*.f64 2 (*.f64 x x)) (*.f64 -2 (*.f64 y x))))))
(if (<=.f64 y -1999999999999999954099026530490673256893685439848300012259991949463986904361579822606522588963023093760) (*.f64 -2 (*.f64 x y)) (if (<=.f64 y -780000000000000042588707862310427877083086351936430199013376) (*.f64 2 (*.f64 x x)) (if (or (<=.f64 y -290142196707511/38685626227668133590597632) (not (<=.f64 y 7000000000000000195487369212723200))) (*.f64 -2 (*.f64 x y)) (*.f64 2 (*.f64 x x)))))
(if (<=.f64 y -1999999999999999954099026530490673256893685439848300012259991949463986904361579822606522588963023093760) (*.f64 -2 (*.f64 x y)) (if (or (<=.f64 y -780000000000000042588707862310427877083086351936430199013376) (not (or (<=.f64 y -290142196707511/38685626227668133590597632) (not (<=.f64 y 7000000000000000195487369212723200))))) (*.f64 2 (*.f64 x x)) (*.f64 -2 (*.f64 x y))))
(if (or (<=.f64 y -1999999999999999954099026530490673256893685439848300012259991949463986904361579822606522588963023093760) (not (or (<=.f64 y -780000000000000042588707862310427877083086351936430199013376) (not (or (<=.f64 y -290142196707511/38685626227668133590597632) (not (<=.f64 y 7000000000000000195487369212723200))))))) (*.f64 -2 (*.f64 x y)) (*.f64 2 (*.f64 x x)))
(if (or (<=.f64 y -1999999999999999954099026530490673256893685439848300012259991949463986904361579822606522588963023093760) (not (or (<=.f64 y -780000000000000042588707862310427877083086351936430199013376) (and (not (<=.f64 y -290142196707511/38685626227668133590597632)) (<=.f64 y 7000000000000000195487369212723200))))) (*.f64 -2 (*.f64 x y)) (*.f64 2 (*.f64 x x)))
(if (or (<=.f64 y -1999999999999999954099026530490673256893685439848300012259991949463986904361579822606522588963023093760) (and (not (<=.f64 y -780000000000000042588707862310427877083086351936430199013376)) (or (<=.f64 y -290142196707511/38685626227668133590597632) (not (<=.f64 y 7000000000000000195487369212723200))))) (*.f64 -2 (*.f64 x y)) (*.f64 2 (*.f64 x x)))
(*.f64 -2 (*.f64 y x))
(*.f64 -2 (*.f64 x y))
Compiler

Compiled 55 to 39 computations (29.1% saved)

soundness308.0ms (14.3%)

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 124 to 76 computations (38.7% saved)

end0.0ms (0%)

preprocess103.0ms (4.8%)

Compiler

Compiled 138 to 88 computations (36.2% saved)

Profiling

Loading profile data...