[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #34405] Validation for betainc() inputs
From: |
Rik |
Subject: |
[Octave-bug-tracker] [bug #34405] Validation for betainc() inputs |
Date: |
Tue, 27 Sep 2011 03:30:08 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 |
URL:
<http://savannah.gnu.org/bugs/?34405>
Summary: Validation for betainc() inputs
Project: GNU Octave
Submitted by: rik5
Submitted on: Mon 26 Sep 2011 08:30:07 PM PDT
Category: Libraries
Severity: 3 - Normal
Priority: 5 - Normal
Item Group: Incorrect Result
Status: None
Assigned to: None
Originator Name:
Originator Email:
Open/Closed: Open
Discussion Lock: Any
Release: dev
Operating System: GNU/Linux
_______________________________________________________
Details:
betainc which calculates the incomplete Beta function needs better input
validation.
Example 1 : NaN inputs
betainc (NaN, 1, 2)
ans =
The correct answer should be NaN.
Example 2 : negative or Inf parameters
betainc (0.5, 1, Inf)
***MESSAGE FROM ROUTINE D9LGMC IN LIBRARY SLATEC.
***POTENTIALLY RECOVERABLE ERROR, PROG ABORTED, TRACEBACK REQUESTED
* X SO BIG D9LGMC UNDERFLOWS
* ERROR NUMBER = 2
*
***END OF MESSAGE
***JOB ABORT DUE TO UNRECOVERED ERROR.
0 ERROR MESSAGE SUMMARY
LIBRARY SUBROUTINE MESSAGE START NERR LEVEL COUNT
SLATEC DBETAI X IS NOT IN THE RANG 1 2 2
SLATEC D9LGMC X SO BIG D9LGMC UNDE 2 1 4
SLATEC DBETAI P AND/OR Q IS LE ZER 2 2 2
error: betainc: exception encountered in Fortran subroutine xdbetai_
It would be much nicer on the user to simply return NaN for values which are
invalid.
Example 3 : x outside range [0, 1]
betainc (2, 1, 2)
***MESSAGE FROM ROUTINE DBETAI IN LIBRARY SLATEC.
***FATAL ERROR, PROG ABORTED, TRACEBACK REQUESTED
* X IS NOT IN THE RANGE (0,1)
* ERROR NUMBER = 1
*
***END OF MESSAGE
***JOB ABORT DUE TO FATAL ERROR.
0 ERROR MESSAGE SUMMARY
LIBRARY SUBROUTINE MESSAGE START NERR LEVEL COUNT
SLATEC DBETAI X IS NOT IN THE RANG 1 2 3
SLATEC D9LGMC X SO BIG D9LGMC UNDE 2 1 4
SLATEC DBETAI P AND/OR Q IS LE ZER 2 2 2
error: betainc: exception encountered in Fortran subroutine xdbetai_
One possible strategy would be to validate the inputs and only pass computable
values to Fortran. An m-file implementation might be the following
retval = NaN (size (x));
ok = (!isnan (x) & !isnan (a) & !isnan (b) &
(a > 0) & (a < Inf) & (b > 0) & (b < Inf) & (x >= 0) & (x <= 1));
retval(ok) = betainc (x(ok), a(ok), b(ok));
This isn't quite right because betainc is implemented in C++ in the file
betainc.cc but the concept could be translated.
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?34405>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [Octave-bug-tracker] [bug #34405] Validation for betainc() inputs,
Rik <=