You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Phil Steitz (JIRA)" <ji...@apache.org> on 2010/11/25 07:24:13 UTC

[jira] Commented: (MATH-414) ConvergenceException in NormalDistributionImpl.cumulativeProbability()

    [ https://issues.apache.org/jira/browse/MATH-414?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12935656#action_12935656 ] 

Phil Steitz commented on MATH-414:
----------------------------------

The difference between 2.0 and 2.1 is due to the changes in ContinuedFraction included in the fix for MATH-282.  For very large values, continued fractions are diverging to NaN. The suggested fix will work, but at this point, I wonder if we should just move the top-coding out of the catch - i.e., test the arguments and return 0 or 1 for extreme values without attempting the approximation.

> ConvergenceException in NormalDistributionImpl.cumulativeProbability()
> ----------------------------------------------------------------------
>
>                 Key: MATH-414
>                 URL: https://issues.apache.org/jira/browse/MATH-414
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.1
>         Environment: Jdk 1.6.
>            Reporter: Gustav Ryd
>            Priority: Minor
>             Fix For: 2.2
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> I get a ConvergenceException in  NormalDistributionImpl.cumulativeProbability() for very large/small parameters including Infinity, -Infinity.
> For instance in the following code:
> 	@Test
> 	public void testCumulative() {
> 		final NormalDistribution nd = new NormalDistributionImpl();
> 		for (int i = 0; i < 500; i++) {
> 			final double val = Math.exp(i);
> 			try {
> 				System.out.println("val = " + val + " cumulative = " + nd.cumulativeProbability(val));
> 			} catch (MathException e) {
> 				e.printStackTrace();
> 				fail();
> 			}
> 		}
> 	}
> In version 2.0, I get no exception. 
> My suggestion is to change in the implementation of cumulativeProbability(double) to catch all ConvergenceException (and return for very large and very small values), not just MaxIterationsExceededException.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.