## #8837 closed Bugs (fixed)

# boost::math::students_t quantile() fails for huge degrees of freedom

Reported by: | Owned by: | John Maddock | |
---|---|---|---|

Milestone: | To Be Determined | Component: | math |

Version: | Boost 1.54.0 | Severity: | Problem |

Keywords: | math | Cc: |

### Description

Student's t quantile function calls policies::raise_rounding_error() in iround() when degrees of freedom = 4503599627370496.

boost::math::students_t students(4503599627370496); double dRes = quantile(students, 0.4);

If this is disabled using #define BOOST_MATH_ROUNDING_ERROR_POLICY ignore_error in user.hpp the computation will continue.

The function inverse_students_t_hill() uses the test ndf > 1e20 to use the Standard Normal approximation, but Boost subsequently attempts to refine the estimate using the Halley step in fast_students_t_quantile_imp() and this becomes unreliable and eventually fails for huge dof such as dof = DBL_MAX (results in completely wrong result) or +Infinity (returns a NaN).

For consistency, I suggest the quantile function us the same threshold as pdf() and cdf() to approximate the Student's t with the standard normal distribution when dof > 1/eps.

I will attempt to attach my user.hpp file.

### Attachments (1)

### Change History (3)

### Changed 4 years ago by

### comment:1 Changed 4 years ago by

Resolution: | → fixed |
---|---|

Status: | new → closed |

**Note:**See TracTickets for help on using tickets.

user.hpp file for policies