diff --git a/dune/geometry/referenceelementimplementation.hh b/dune/geometry/referenceelementimplementation.hh index c28ec6eb4d51dbf01a2ae167c805f8fff6c18d5b..cb16d551e3f3ed922475d4a0b51def1412609fd6 100644 --- a/dune/geometry/referenceelementimplementation.hh +++ b/dune/geometry/referenceelementimplementation.hh @@ -18,7 +18,6 @@ #include <dune/common/hybridutilities.hh> #include <dune/common/typetraits.hh> #include <dune/common/iteratorrange.hh> -#include <dune/common/power.hh> #include <dune/common/math.hh> #include <dune/geometry/referenceelement.hh> diff --git a/dune/geometry/refinement/hcube.cc b/dune/geometry/refinement/hcube.cc index 9c92fc9a91333d8d5cc0f33fb6d53b4d3c6f3af7..67b3d4c66555e96f8d1093e5ff088df392077d83 100644 --- a/dune/geometry/refinement/hcube.cc +++ b/dune/geometry/refinement/hcube.cc @@ -41,7 +41,6 @@ #include <dune/common/fvector.hh> #include <dune/common/iteratorfacades.hh> -#include <dune/common/power.hh> #include <dune/geometry/referenceelements.hh> #include <dune/geometry/axisalignedcubegeometry.hh> @@ -107,7 +106,7 @@ namespace Dune nVertices(unsigned nIntervals) { // return (nIntervals + 1)^dim - return Power<dimension>::eval(nIntervals+1u); + return Dune::power(nIntervals+1u, unsigned(dimension)); } template<int dimension, class CoordType> @@ -134,7 +133,7 @@ namespace Dune static_assert(dimension >= 0, "Negative dimension given, what the heck is that supposed to mean?"); // return nIntervals^dim - return Power<dimension>::eval(nIntervals); + return Dune::power(nIntervals, unsigned(dimension)); } template<int dimension, class CoordType> diff --git a/dune/geometry/refinement/hcubetriangulation.cc b/dune/geometry/refinement/hcubetriangulation.cc index 988a4ba33dad20356425afe47d803048505e2980..f82b1110c6b07131e5d161e223b9c507be17b665 100644 --- a/dune/geometry/refinement/hcubetriangulation.cc +++ b/dune/geometry/refinement/hcubetriangulation.cc @@ -102,7 +102,7 @@ namespace Dune RefinementImp<dimension, CoordType>:: nVertices(int nIntervals) { - return BackendRefinement::nVertices(nIntervals) * Factorial<dimension>::factorial; + return BackendRefinement::nVertices(nIntervals) * factorial(int(dimension)); } template<int dimension, class CoordType> @@ -126,7 +126,7 @@ namespace Dune RefinementImp<dimension, CoordType>:: nElements(int nIntervals) { - return BackendRefinement::nElements(nIntervals) * Factorial<dimension>::factorial; + return BackendRefinement::nElements(nIntervals) * factorial(int(dimension)); } template<int dimension, class CoordType> @@ -171,7 +171,7 @@ namespace Dune protected: typedef typename Refinement::BackendRefinement BackendRefinement; typedef typename BackendRefinement::template Codim<dimension>::SubEntityIterator BackendIterator; - enum { nKuhnSimplices = Factorial<dimension>::factorial }; + enum { nKuhnSimplices = factorial(int(dimension)) }; int nIntervals_; @@ -256,7 +256,7 @@ namespace Dune protected: typedef typename Refinement::BackendRefinement BackendRefinement; typedef typename BackendRefinement::template Codim<0>::SubEntityIterator BackendIterator; - enum { nKuhnSimplices = Factorial<dimension>::factorial }; + enum { nKuhnSimplices = factorial(dimension) }; int nIntervals_; diff --git a/dune/geometry/refinement/simplex.cc b/dune/geometry/refinement/simplex.cc index eb28981b90db4092fd1dc8fa930baa4a5a62fc2f..a0472cb635e4459622bfd8c905f329bf72e8b1ae 100644 --- a/dune/geometry/refinement/simplex.cc +++ b/dune/geometry/refinement/simplex.cc @@ -249,7 +249,7 @@ #include <algorithm> #include <dune/common/fvector.hh> -#include <dune/common/power.hh> +#include <dune/common/math.hh> #include <dune/geometry/multilineargeometry.hh> #include <dune/geometry/referenceelements.hh> @@ -279,7 +279,11 @@ namespace Dune { /*! @brief Calculate n! Runtime is of order O(n). + + \deprecate Use factorial from dune/common/math instead. Will be + removed after Dune 2.9. */ + [[deprecated("Use factorial from dune-common's math.hh")]] inline int factorial(int n) { int prod = 1; @@ -291,7 +295,11 @@ namespace Dune { /*! @brief calculate \f$\left({upper}\atop{lower}\right)\f$ Runtime is of order O(min {lower, upper-lower}) + + \deprecate Use binomial from dune/common/math instead. Will be + removed after Dune 2.9. */ + [[deprecated("Use binomial from dune-common's math.hh")]] inline int binomial(int upper, int lower) { lower = std::min( lower, upper - lower ); @@ -300,7 +308,7 @@ namespace Dune { int prod = 1; for(int i = upper - lower; i < upper; ++i) prod *= (i+1); - return prod / factorial(lower); + return prod / Dune::factorial(lower); } /*! @brief calculate the index of a given gridpoint within a @@ -314,7 +322,7 @@ namespace Dune { { int index = 0; for(int i = 0; i < dimension; ++i) - index += binomial(dimension-i + point[i]-1, dimension-i); + index += Dune::binomial(dimension-i + point[i]-1, dimension-i); return index; } @@ -455,7 +463,7 @@ namespace Dune { RefinementImp<dimension, CoordType>:: nVertices(int nIntervals) { - return binomial(dimension + nIntervals, dimension); + return Dune::binomial(dimension + nIntervals, (int)dimension); } template<int dimension, class CoordType> @@ -479,7 +487,7 @@ namespace Dune { RefinementImp<dimension, CoordType>:: nElements(int nIntervals) { - return Dune::Power<dimension>::eval(nIntervals); + return Dune::power(nIntervals, int(dimension)); } template<int dimension, class CoordType> @@ -624,7 +632,7 @@ namespace Dune { protected: typedef FieldVector<int, dimension> Vertex; - enum { nKuhnIntervals = Factorial<dimension>::factorial }; + enum { nKuhnIntervals = Dune::factorial(dimension) }; Vertex origin; int kuhnIndex; diff --git a/dune/geometry/test/test-quadrature.cc b/dune/geometry/test/test-quadrature.cc index 6755e94f265e49fd78d9221c3a49b24364ef547a..2ef11e857d1c3da16a851b893c286e5f7779b848 100644 --- a/dune/geometry/test/test-quadrature.cc +++ b/dune/geometry/test/test-quadrature.cc @@ -8,6 +8,7 @@ #include <config.h> +#include <dune/common/math.hh> #include <dune/common/quadmath.hh> #include <dune/geometry/referenceelements.hh> #include <dune/geometry/quadraturerules.hh> @@ -72,7 +73,7 @@ ctype analyticalSolution (Dune::GeometryType t, int p, int direction ) exact = ctype( 1 ); } else - exact = ctype( 1 ) / ctype( Dune::Factorial< pdim >::factorial * (p+1)); + exact = ctype( 1 ) / ctype( Dune::factorial(pdim) * (p+1)); return exact; }