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

Time bar (total: 2.5s)

analyze13.0ms (0.5%)

Memory
-11.6MiB live, 4.2MiB allocated
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 36 to 19 computations (47.2% saved)

sample2.3s (89.7%)

Memory
7.1MiB live, 689.5MiB allocated
Samples
521.0ms8 256×0valid-sollya
419.0ms8 256×0valid-baseline
375.0ms8 256×0valid-rival
Bogosity

preprocess211.0ms (8.4%)

Memory
8.1MiB live, 23.8MiB allocated
Algorithm
egg-herbie
Rules
1 325×fmm-def
552×fma-define
244×unsub-neg
147×associate-+l-
139×sub-neg
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
047721
1124545
2291383
3815375
41766375
52643375
63414375
73930375
83996375
93996375
104611375
114611375
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (+.f64 (+.f64 (*.f64 x (neg.f64 y)) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z)))
(neg.f64 (+.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z)))
(neg.f64 (+.f64 (+.f64 (+.f64 (*.f64 x (neg.f64 y)) (*.f64 z z)) (*.f64 z z)) (*.f64 z z)))
(neg.f64 (+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z))))
(+.f64 (+.f64 (+.f64 (*.f64 y x) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (+.f64 (+.f64 (*.f64 z y) (*.f64 x x)) (*.f64 x x)) (*.f64 x x))
(+.f64 (+.f64 (+.f64 (*.f64 x z) (*.f64 y y)) (*.f64 y y)) (*.f64 y y))
Outputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x y (*.f64 z z))))
(fma.f64 z z (fma.f64 x y (*.f64 #s(literal 2 binary64) (*.f64 z z))))
(fma.f64 x y (*.f64 (*.f64 z z) #s(literal 3 binary64)))
(fma.f64 x y (*.f64 z (*.f64 z #s(literal 3 binary64))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x y (*.f64 z z))))
(fma.f64 z z (fma.f64 x y (*.f64 #s(literal 2 binary64) (*.f64 z z))))
(fma.f64 x y (*.f64 (*.f64 z z) #s(literal 3 binary64)))
(fma.f64 x y (*.f64 z (*.f64 z #s(literal 3 binary64))))
(+.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x (neg.f64 y) (*.f64 z z))))
(fma.f64 z z (fma.f64 x (neg.f64 y) (*.f64 #s(literal 2 binary64) (*.f64 z z))))
(-.f64 (*.f64 (*.f64 z z) #s(literal 3 binary64)) (*.f64 x y))
(fma.f64 x (neg.f64 y) (*.f64 z (*.f64 z #s(literal 3 binary64))))
(+.f64 (+.f64 (+.f64 (*.f64 x (neg.f64 y)) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x (neg.f64 y) (*.f64 z z))))
(fma.f64 z z (fma.f64 x (neg.f64 y) (*.f64 #s(literal 2 binary64) (*.f64 z z))))
(-.f64 (*.f64 (*.f64 z z) #s(literal 3 binary64)) (*.f64 x y))
(fma.f64 x (neg.f64 y) (*.f64 z (*.f64 z #s(literal 3 binary64))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z)))
(+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x y (*.f64 z z))))
(fma.f64 z z (fma.f64 x y (*.f64 #s(literal 2 binary64) (*.f64 z z))))
(fma.f64 x y (*.f64 (*.f64 z z) #s(literal 3 binary64)))
(fma.f64 x y (*.f64 z (*.f64 z #s(literal 3 binary64))))
(neg.f64 (+.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z)))
(neg.f64 (+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x (neg.f64 y) (*.f64 z z)))))
(neg.f64 (fma.f64 z z (fma.f64 x (neg.f64 y) (*.f64 #s(literal 2 binary64) (*.f64 z z)))))
(-.f64 (*.f64 x y) (*.f64 (*.f64 z z) #s(literal 3 binary64)))
(fma.f64 x y (*.f64 z (*.f64 z #s(literal -3 binary64))))
(neg.f64 (+.f64 (+.f64 (+.f64 (*.f64 x (neg.f64 y)) (*.f64 z z)) (*.f64 z z)) (*.f64 z z)))
(neg.f64 (+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x (neg.f64 y) (*.f64 z z)))))
(neg.f64 (fma.f64 z z (fma.f64 x (neg.f64 y) (*.f64 #s(literal 2 binary64) (*.f64 z z)))))
(-.f64 (*.f64 x y) (*.f64 (*.f64 z z) #s(literal 3 binary64)))
(fma.f64 x y (*.f64 z (*.f64 z #s(literal -3 binary64))))
(neg.f64 (+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z))) (*.f64 (neg.f64 z) (neg.f64 z))))
(neg.f64 (+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x y (*.f64 z z)))))
(neg.f64 (fma.f64 z z (fma.f64 x y (*.f64 #s(literal 2 binary64) (*.f64 z z)))))
(neg.f64 (fma.f64 x y (*.f64 (*.f64 z z) #s(literal 3 binary64))))
(-.f64 (*.f64 z (*.f64 z #s(literal -3 binary64))) (*.f64 x y))
(+.f64 (+.f64 (+.f64 (*.f64 y x) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (fma.f64 x y (*.f64 z z))))
(fma.f64 z z (fma.f64 x y (*.f64 #s(literal 2 binary64) (*.f64 z z))))
(fma.f64 x y (*.f64 (*.f64 z z) #s(literal 3 binary64)))
(fma.f64 x y (*.f64 z (*.f64 z #s(literal 3 binary64))))
(+.f64 (+.f64 (+.f64 (*.f64 z y) (*.f64 x x)) (*.f64 x x)) (*.f64 x x))
(+.f64 (*.f64 x x) (+.f64 (*.f64 x x) (fma.f64 z y (*.f64 x x))))
(fma.f64 x x (fma.f64 y z (*.f64 #s(literal 2 binary64) (*.f64 x x))))
(fma.f64 y z (*.f64 #s(literal 3 binary64) (*.f64 x x)))
(fma.f64 x (*.f64 #s(literal 3 binary64) x) (*.f64 y z))
(fma.f64 x (*.f64 x #s(literal 3 binary64)) (*.f64 y z))
(+.f64 (+.f64 (+.f64 (*.f64 x z) (*.f64 y y)) (*.f64 y y)) (*.f64 y y))
(+.f64 (*.f64 y y) (+.f64 (*.f64 y y) (fma.f64 x z (*.f64 y y))))
(fma.f64 y y (fma.f64 x z (*.f64 #s(literal 2 binary64) (*.f64 y y))))
(fma.f64 x z (*.f64 #s(literal 3 binary64) (*.f64 y y)))
(fma.f64 x z (*.f64 y (*.f64 #s(literal 3 binary64) y)))
(fma.f64 x z (*.f64 y (*.f64 y #s(literal 3 binary64))))
Symmetry

(abs z)

(sort x y)

Compiler

Compiled 18 to 8 computations (55.6% saved)

eval0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated
Compiler

Compiled 3 to 3 computations (0% saved)

prune1.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.5%
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
Compiler

Compiled 36 to 16 computations (55.6% saved)

simplify2.0ms (0.1%)

Memory
0.4MiB live, 0.4MiB allocated
Algorithm
egg-herbie
Rules
+-commutative
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01467
11867
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
Outputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z z)) (*.f64 z z)) (*.f64 z z))
(+.f64 (*.f64 z z) (+.f64 (*.f64 z z) (+.f64 (*.f64 x y) (*.f64 z z))))

soundness0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated
Stop Event
fuel
Compiler

Compiled 18 to 8 computations (55.6% saved)

preprocess32.0ms (1.3%)

Memory
-18.9MiB live, 35.7MiB allocated
Remove

(sort x y)

(abs z)

Compiler

Compiled 240 to 112 computations (53.3% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...