/* Zeta API - Z/traits/math.hpp ______ ______________ ___ |__ / | ___|___ ___|/ \ / /__| __| | | / - \ /______|_____| |__| /__/ \__\ Copyright (C) 2006-2024 Manuel Sainz de Baranda y Goñi. Released under the terms of the GNU Lesser General Public License v3. */ #ifndef Z_traits_math_HPP #define Z_traits_math_HPP #include namespace Zeta { template struct Factorial { enum {value = n * Factorial::value}; }; template <> struct Factorial<0> {enum {value = 1};}; template struct TriangularNumber { enum {value = n + TriangularNumber::value}; }; template <> struct TriangularNumber<0> {enum {value = 0};}; template struct NaturalPower { enum {value = base * NaturalPower::value}; }; template struct NaturalPower {enum {value = 1};}; template struct IntegerPower { enum {value = base * IntegerPower::value}; }; template struct IntegerPower {enum {value = 1};}; template struct Logarithm2 { enum {value = Logarithm2::value + 1}; }; template <> struct Logarithm2<1> {enum {value = 0};}; template <> struct Logarithm2<0> {enum {value = 0};}; } #endif // Z_traits_math_HPP