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

Time bar (total: 2.8s)

analyze13.0ms (0.5%)

Memory
4.1MiB live, 4.1MiB allocated
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 34 to 25 computations (26.5% saved)

sample2.6s (94.6%)

Memory
-9.0MiB live, 772.2MiB allocated
Samples
555.0ms8 256×0valid-baseline
525.0ms8 256×0valid-sollya
519.0ms8 256×0valid-rival
Bogosity

preprocess95.0ms (3.5%)

Memory
8.0MiB live, 23.6MiB allocated
Algorithm
egg-herbie
Rules
696×fmm-def
285×fma-define
111×cancel-sign-sub
88×div-sub
75×sub-neg
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
050617
192573
2184573
3414573
4788573
51226573
61834573
72225573
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)

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
47.2%
(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)

simplify2.0ms (0.1%)

Memory
0.4MiB live, 0.4MiB allocated
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)))

soundness0.0ms (0%)

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

Compiled 17 to 11 computations (35.3% saved)

preprocess37.0ms (1.4%)

Memory
-5.3MiB live, 43.8MiB allocated
Remove

(sort x y z)

(abs z)

(abs y)

(abs x)

Compiler

Compiled 410 to 266 computations (35.1% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...