       [functional approach should give] an even faster way to normalize a

• To: mathgroup at smc.vnet.net
• Subject: [mg85648] [functional approach should give] an even faster way to normalize a
• From: congruentialuminaire at yahoo.com
• Date: Sun, 17 Feb 2008 07:20:54 -0500 (EST)

Hello UG:

I have a 512x512 array of 3-tuples. I want to make any tuple with a
value outside of 0 <--> 1, become {0.,0.,0.}.

The first version has this loop:

For[i = 1, i <= graphSize, i++,
For[j = 1, j <= graphSize, j++,
If[((sum[[i, j, 1]] < 0) || (sum[[i, j, 1]] > 1) ||
(sum[[i, j, 2]] < 0) || (sum[[i, j, 2]] > 1) ||
(sum[[i, j, 3]] < 0) || (sum[[i, j, 3]] > 1)),
sum[[i, j]] = {0., 0., 0.}
]
]
];

After scratching my head for a while I came up with this (equivalent)
Map statement.

sum = Map[
If[#[] < 0 || #[] > 1 || #[] < 0 || #[] > 1 || #[] <
0 || #[] > 1, {0., 0., 0.}, #] &, sum, {2}];

It is faster but only by about 15%.

It is unreasonable to believe some other construction can accomplish
this with a bigger payoff?