From: Ralf Hartmann Date: Fri, 5 Jun 2009 03:56:02 +0000 (+0000) Subject: Let the gamma function return a long double instead of an unsigned int, otherwise... X-Git-Tag: v8.0.0~7640 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85c0fe728db569e88d822e939d951ee6c8da2936;p=dealii.git Let the gamma function return a long double instead of an unsigned int, otherwise we will get an overflow and thus meaningless weights for higher QGaussLobatto quadrature rules (5423). git-svn-id: https://svn.dealii.org/trunk@18907 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/base/include/base/quadrature_lib.h b/deal.II/base/include/base/quadrature_lib.h index 300c7c03f7..ffc6ee4ee1 100644 --- a/deal.II/base/include/base/quadrature_lib.h +++ b/deal.II/base/include/base/quadrature_lib.h @@ -134,7 +134,7 @@ class QGaussLobatto : public Quadrature * $ \Gamma(n) = (n-1)! $. * @param n point of evaluation (integer). */ - unsigned int gamma(const unsigned int n) const; + long double gamma(const unsigned int n) const; }; @@ -513,7 +513,7 @@ template <> long double QGaussLobatto<1>:: JacobiP(const long double, const int, const int, const unsigned int) const; template <> -unsigned int +long double QGaussLobatto<1>::gamma(const unsigned int n) const; template <> std::vector QGaussLog<1>::set_quadrature_points(const unsigned int) const; diff --git a/deal.II/base/source/quadrature_lib.cc b/deal.II/base/source/quadrature_lib.cc index b6a9ba31a0..954b9f010a 100644 --- a/deal.II/base/source/quadrature_lib.cc +++ b/deal.II/base/source/quadrature_lib.cc @@ -328,9 +328,9 @@ long double QGaussLobatto<1>::JacobiP(const long double x, template <> -unsigned int QGaussLobatto<1>::gamma(const unsigned int n) const +long double QGaussLobatto<1>::gamma(const unsigned int n) const { - unsigned int result = n - 1; + long double result = n - 1; for (int i=n-2; i>1; --i) result *= i; return result;