Data.Array.Repa.Algorithms.Pixel:doubleRmsOfRGB8 from repa-algorithms-3.4.0.1

Time bar (total: 5.8s)

analyze3.0ms (0.1%)

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

Compiled 18 to 12 computations (33.3% saved)

sample5.4s (93.5%)

Results
1.4s8256×0valid-rival
929.0ms8253×0valid-sollya
15.0ms0exit-sollya
Bogosity

preprocess194.0ms (3.4%)

Algorithm
egg-herbie
Rules
696×fma-neg
285×fma-define
111×cancel-sign-sub
88×div-sub
75×sub-neg
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
050617
192573
2184573
3406573
4780573
51218573
61826573
72217573
Stop Event
saturated
Calls
Call 1
Inputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (neg.f64 z) (neg.f64 z))) #s(literal 3 binary64)))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 z z)) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (neg.f64 z) (neg.f64 z))) #s(literal 3 binary64))))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 y y) (*.f64 x x)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 z z) (*.f64 y y)) (*.f64 x x)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 z z)) (*.f64 y y)) #s(literal 3 binary64)))
Outputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (neg.f64 z) (neg.f64 z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 (neg.f64 y) (neg.f64 y))) (*.f64 z z)) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 (neg.f64 z) (neg.f64 z))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64))))
(neg.f64 (sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64))))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 y y) (*.f64 x x)) (*.f64 z z)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 z z) (*.f64 y y)) (*.f64 x x)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 z z)) (*.f64 y y)) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (+.f64 (*.f64 x x) (fma.f64 z z (*.f64 y y))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 x x (fma.f64 y y (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (/.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 3 binary64)))
(sqrt.f64 (*.f64 (fma.f64 y y (fma.f64 x x (*.f64 z z))) #s(literal 1/3 binary64)))
Symmetry

(abs x)

(abs y)

(abs z)

(sort x y z)

Compiler

Compiled 17 to 11 computations (35.3% saved)

eval1.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune5.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
39.7%
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Compiler

Compiled 34 to 22 computations (35.3% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01859
12059
Stop Event
saturated
Calls
Call 1
Inputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))
Outputs
(sqrt.f64 (/.f64 (+.f64 (+.f64 (*.f64 x x) (*.f64 y y)) (*.f64 z z)) #s(literal 3 binary64)))

soundness1.0ms (0%)

Stop Event
fuel
Compiler

Compiled 17 to 11 computations (35.3% saved)

preprocess164.0ms (2.8%)

Remove

(sort x y z)

(abs z)

(abs y)

(abs x)

Compiler

Compiled 410 to 266 computations (35.1% saved)

end0.0ms (0%)

Profiling

Loading profile data...