octave-bug-tracker
[Top][All Lists]
Advanced

[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/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]