Talk:Cumulative standard deviation

From Rosetta Code

n is always >0

But several examples check for n == 0. I don't think it is necessary in this task (but won't hurt). --Paddy3118 22:06, 16 June 2009 (UTC)

It won't hurt, and n is not always > 0. All the code I've done, and even the rest for what I can understand, provide a way of calculating standard deviation and mean, even if the first datum was not injected yet. A smart user won't call the method/function to get the mean if s/he's not put at least one value, but a dummy user could. In the OO cases, some methods shouldn't be public, and standard deviation could not be requested without adding a new value (very odd!), i.e. the only way to get stddev should be adding a new value... so that it would be a "know once and then forget" function/object. So to me it was "natural" to check for n>0, letting the user call mean, variance or whatever also if s/he's not added any value at all, without causing a division by zero problem. Of course for the task purpose it is not strictly necessary (real usability is not a requirement), nonetheless, it won't hurt and it assures that the behaviour is "good" for any input or misusage... --ShinTakezou 23:23, 16 June 2009 (UTC)
I'm assured by my statistically-versed friends that the Standard Deviation isn't defined for though it's convenient to define it to be when (i.e., it's trivial to get that from the mathematics if you're asking for the sample deviation, which is what this task is about). —Donal Fellows 12:35, 17 June 2009 (UTC)
Oh yes, it is so, but I was talking about values num/count can assume, not if the result is meaningful or not when they get that value. --ShinTakezou 12:54, 17 June 2009 (UTC)

Function takes vector/array or single value?

I took the task description to mean that the function should be called multiple times with a succession of values - hence the need of state between calls. Some think that the function should take an array of values. What to do? --Paddy3118 11:45, 17 June 2009 (UTC)

The function should hold state between calls and take a single value at a time. Some people can't seem to resist implementing it wrongly. —Donal Fellows 12:31, 17 June 2009 (UTC)
That should probably have been called a method rather than a function. Some people can't seem to resist naming it wrongly? --Rdm (talk) 23:31, 15 June 2015 (UTC)
I would perhaps call it a static function. Shrug. -- Erik Siers (talk) 03:57, 16 June 2015 (UTC)

Many examples (too many), have not paid attention to the task description. I've started to mark those but it is a long job... Please remember that if your language cannot match some aspect of the task description then state this clearly, up front and describe what aspects of the task you can follow. (Note, that is if your language cannot do something - not merely if your example does not follow the task). The J language example goes about it in this way, I guess if you had a "pure" functional language that did not allow functions to save state between calls then you might need to explain this at the beginning of your example as well as what compromises this lead to. --Paddy3118 (talk) 22:16, 16 June 2015 (UTC)

Rather than "cannotdo something" I would prefer the more accurate "should not do something". Presumably the focus on the detail of how the incremental process works has something to do with ideas about efficiency? But, depending on the language, this level of micromanagement might make things considerably more inefficient than they would be otherwise - I have seen this kind of issue lead to timing ratios where one implementation would be over 9000 times faster than the other for some test data sets (though smaller differences are also possible and I try not to care when the difference is less than a factor of 2 -- modern machines introduce variations which can easily reverse a "less than factor of 2" performance issue). --Rdm (talk) 10:33, 17 June 2015 (UTC)