2012/6/12 Thomas Neidhart <thomas.neidh...@gmail.com>:
> On Tue, Jun 12, 2012 at 8:13 AM, Mikkel Meyer Andersen <m...@mikl.dk> wrote:
>
>> 2012/6/12 Thomas Neidhart <thomas.neidh...@gmail.com>:
>> > On 06/08/2012 01:04 PM, m...@apache.org wrote:
>> >> Author: mikl
>> >> Date: Fri Jun  8 11:04:11 2012
>> >> New Revision: 1348024
>> >>
>> >> URL: http://svn.apache.org/viewvc?rev=1348024&view=rev
>> >> Log:
>> >> MATH-790: Patch applied to fix the overflow issue.
>> >>
>> >> Modified:
>> >>
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/inference/MannWhitneyUTest.java
>> >>
>> commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/inference/MannWhitneyUTestTest.java
>> >>
>> >> Modified:
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/inference/MannWhitneyUTest.java
>> >> URL:
>> http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/inference/MannWhitneyUTest.java?rev=1348024&r1=1348023&r2=1348024&view=diff
>> >>
>> ==============================================================================
>> >> ---
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/inference/MannWhitneyUTest.java
>> (original)
>> >> +++
>> commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/inference/MannWhitneyUTest.java
>> Fri Jun  8 11:04:11 2012
>> >> @@ -170,11 +170,11 @@ public class MannWhitneyUTest {
>> >>                                               final int n2)
>> >>          throws ConvergenceException, MaxCountExceededException {
>> >>
>> >> -        final int n1n2prod = n1 * n2;
>> >> +        final double n1n2prod = n1 * n2;
>> >>
>> >>          //
>> http://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U#Normal_approximation
>> >> -        final double EU = (double) n1n2prod / 2.0;
>> >> -        final double VarU = (double) (n1n2prod * (n1 + n2 + 1)) / 12.0;
>> >> +        final double EU = n1n2prod / 2.0;
>> >> +        final double VarU = n1n2prod * (n1 + n2 + 1) / 12.0;
>> >>
>> >>          final double z = (Umin - EU) / FastMath.sqrt(VarU);
>> >
>> > just a small thing, but wouldn't it be better to do a long
>> > multiplication and convert the result to double?
>> >
>> > Thomas
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > For additional commands, e-mail: dev-h...@commons.apache.org
>> >
>> Do you mean for n1n2prod? Sorry for my ignorance, but what would that
>> help? Wouldn't that require more implicit conversions?
>>
>
> I just quickly checked to make sure I had the right understanding, but the
> line:
>
>>> +        final double n1n2prod = n1 * n2;
>
> still does a int multiplication and may overflow (if n1 and n2 are too big).
>
> Maybe the overflow problem was not in this line but in this one:
>
>>> +        final double VarU = n1n2prod * (n1 + n2 + 1) / 12.0;
>
> so the problem is hidden right now.
>
> Thomas
Thomas, thanks for this. I have reopened the issue,
https://issues.apache.org/jira/browse/MATH-790 . Would you be so kind
to repeat your argument in there, and we can continue our discussion
there?

Cheers, Mikkel.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to