diff --git a/liboctave/lo-specfun.cc b/liboctave/lo-specfun.cc --- a/liboctave/lo-specfun.cc +++ b/liboctave/lo-specfun.cc @@ -2154,8 +2154,12 @@ double betainc (double x, double a, double b) { - double retval; - F77_XFCN (xdbetai, XDBETAI, (x, a, b, retval)); + double retval = octave_NaN; + + if (x >= 0 && x <= 1 && a > 0 && b > 0 && ! xisinf (a) && ! xisinf (b) + && ! xisnan (x) && ! xisnan (a) && ! xisnan (b)) + F77_XFCN (xdbetai, XDBETAI, (x, a, b, retval)); + return retval; } @@ -2437,8 +2441,12 @@ float betainc (float x, float a, float b) { - float retval; - F77_XFCN (xbetai, XBETAI, (x, a, b, retval)); + float retval = octave_Float_NaN; + + if (x >= 0 && x <= 1 && a > 0 && b > 0 && ! xisinf (a) && ! xisinf (b) + && ! xisnan (x) && ! xisnan (a) && ! xisnan (b)) + F77_XFCN (xbetai, XBETAI, (x, a, b, retval)); + return retval; }