Aerobus v1.2
Loading...
Searching...
No Matches
Namespaces | Classes | Concepts | Typedefs | Functions | Variables
aerobus Namespace Reference

main namespace for all publicly exposed types or functions More...

Namespaces

namespace  internal
 internal implementations, subject to breaking changes without notice
 
namespace  known_polynomials
 families of well known polynomials such as Hermite or Bernstein
 
namespace  libm
 holds mathematical functions (such as cosine or sin), correct to epsilon
 

Classes

struct  arithmetic_helpers
 
struct  arithmetic_helpers< double >
 
struct  arithmetic_helpers< float >
 
struct  ContinuedFraction
 represents a continued fraction a0 + \(\frac{1}{a_1+\frac{1}{a_2 + \ldots}}\) More...
 
struct  ContinuedFraction< a0 >
 Specialization for only one coefficient, technically just 'a0'. More...
 
struct  ContinuedFraction< a0, rest... >
 specialization for multiple coefficients (strictly more than one) More...
 
struct  ConwayPolynomial
 
struct  double_double
 
struct  Embed
 embedding - struct forward declaration More...
 
struct  Embed< i32, i64 >
 embeds i32 into i64 More...
 
struct  Embed< polynomial< Small >, polynomial< Large > >
 embeds polynomial<Small> into polynomial<Large> More...
 
struct  Embed< q32, q64 >
 embeds q32 into q64 More...
 
struct  Embed< Quotient< Ring, X >, Ring >
 embeds Quotient<Ring, X> into Ring More...
 
struct  Embed< Ring, FractionField< Ring > >
 embeds values from Ring to its field of fractions More...
 
struct  Embed< zpz< x >, i32 >
 embeds zpz values into i32 More...
 
struct  i32
 32 bits signed integers, seen as a algebraic ring with related operations More...
 
struct  i64
 64 bits signed integers, seen as a algebraic ring with related operations More...
 
struct  is_prime
 checks if n is prime More...
 
struct  meta_libm
 
struct  polynomial
 
struct  Quotient
 Quotient ring by the principal ideal generated by 'X' With i32 as Ring and i32::val<2> as X, Quotient is Z/2Z. More...
 
struct  type_list
 Empty pure template struct to handle type list. More...
 
struct  type_list<>
 specialization for empty type list More...
 
struct  zpz
 congruence classes of integers modulo p (32 bits) More...
 

Concepts

concept  IsRing
 Concept to express R is a Ring.
 
concept  IsEuclideanDomain
 Concept to express R is an euclidean domain.
 
concept  IsField
 Concept to express R is a field.
 

Typedefs

template<typename T , typename A , typename B >
using gcd_t = typename internal::gcd< T >::template type< A, B >
 computes the greatest common divisor or A and B
 
template<typename... vals>
using vadd_t = typename internal::vadd< vals... >::type
 adds multiple values (v1 + v2 + ... + vn) vals must have same "enclosing_type" and "enclosing_type" must have an add_t binary operator
 
template<typename... vals>
using vmul_t = typename internal::vmul< vals... >::type
 multiplies multiple values (v1 + v2 + ... + vn) vals must have same "enclosing_type" and "enclosing_type" must have an mul_t binary operator
 
template<typename val >
using abs_t = std::conditional_t< val::enclosing_type::template pos_v< val >, val, typename val::enclosing_type::template sub_t< typename val::enclosing_type::zero, val > >
 computes absolute value of 'val' val must be a 'value' in a Ring satisfying 'IsEuclideanDomain' concept
 
template<typename Ring >
using FractionField = typename internal::FractionFieldImpl< Ring >::type
 Fraction field of an euclidean domain, such as Q for Z.
 
template<typename X , typename Y >
using add_t = typename X::enclosing_type::template add_t< X, Y >
 generic addition
 
template<typename X , typename Y >
using sub_t = typename X::enclosing_type::template sub_t< X, Y >
 generic subtraction
 
template<typename X , typename Y >
using mul_t = typename X::enclosing_type::template mul_t< X, Y >
 generic multiplication
 
template<typename X , typename Y >
using div_t = typename X::enclosing_type::template div_t< X, Y >
 generic division
 
using q32 = FractionField< i32 >
 32 bits rationals rationals with 32 bits numerator and denominator
 
using fpq32 = FractionField< polynomial< q32 > >
 rational fractions with 32 bits rational coefficients rational fractions with rationals coefficients (32 bits numerator and denominator)
 
using q64 = FractionField< i64 >
 64 bits rationals rationals with 64 bits numerator and denominator
 
using pi64 = polynomial< i64 >
 polynomial with 64 bits integers coefficients
 
using pq64 = polynomial< q64 >
 polynomial with 64 bits rationals coefficients
 
using fpq64 = FractionField< polynomial< q64 > >
 polynomial with 64 bits rational coefficients
 
template<typename Ring , typename v1 , typename v2 >
using makefraction_t = typename FractionField< Ring >::template val< v1, v2 >
 helper type : the rational V1/V2 in the field of fractions of Ring
 
template<typename v >
using embed_int_poly_in_fractions_t = typename Embed< polynomial< typename v::ring_type >, polynomial< FractionField< typename v::ring_type > > >::template type< v >
 embed a polynomial with integers coefficients into rational coefficients polynomials
 
template<int64_t p, int64_t q>
using make_q64_t = typename q64::template simplify_t< typename q64::val< i64::inject_constant_t< p >, i64::inject_constant_t< q > > >
 helper type : make a fraction from numerator and denominator
 
template<int32_t p, int32_t q>
using make_q32_t = typename q32::template simplify_t< typename q32::val< i32::inject_constant_t< p >, i32::inject_constant_t< q > > >
 helper type : make a fraction from numerator and denominator
 
template<typename Ring , typename v1 , typename v2 >
using addfractions_t = typename FractionField< Ring >::template add_t< v1, v2 >
 helper type : adds two fractions
 
template<typename Ring , typename v1 , typename v2 >
using mulfractions_t = typename FractionField< Ring >::template mul_t< v1, v2 >
 helper type : multiplies two fractions
 
template<typename Ring , auto... xs>
using make_int_polynomial_t = typename polynomial< Ring >::template val< typename Ring::template inject_constant_t< xs >... >
 make a polynomial with coefficients in Ring
 
template<typename Ring , auto... xs>
using make_frac_polynomial_t = typename polynomial< FractionField< Ring > >::template val< typename FractionField< Ring >::template inject_constant_t< xs >... >
 make a polynomial with coefficients in FractionField<Ring>
 
template<typename T , size_t i>
using factorial_t = typename internal::factorial< T, i >::type
 computes factorial(i), as type
 
template<typename T , size_t k, size_t n>
using combination_t = typename internal::combination< T, k, n >::type
 computes binomial coefficient (k among n) as type
 
template<typename T , size_t n>
using bernoulli_t = typename internal::bernoulli< T, n >::type
 nth bernoulli number as type in T
 
template<typename T , size_t n>
using bell_t = typename internal::bell_helper< T, n >::type
 Bell numbers.
 
template<typename T , int k>
using alternate_t = typename internal::alternate< T, k >::type
 (-1)^k as type in T
 
template<typename T , int n, int k>
using stirling_1_signed_t = typename internal::stirling_1_helper< T, n, k >::type
 Stirling number of first king (signed) – as types.
 
template<typename T , int n, int k>
using stirling_1_unsigned_t = abs_t< typename internal::stirling_1_helper< T, n, k >::type >
 Stirling number of first king (unsigned) – as types.
 
template<typename T , int n, int k>
using stirling_2_t = typename internal::stirling_2_helper< T, n, k >::type
 Stirling number of second king – as types.
 
template<typename T , typename p , size_t n>
using pow_t = typename internal::pow< T, p, n >::type
 p^n (as 'val' type in T)
 
template<typename T , template< typename, size_t index > typename coeff_at, size_t deg>
using taylor = typename internal::make_taylor_impl< T, coeff_at, internal::make_index_sequence_reverse< deg+1 > >::type
 
template<typename Integers , size_t deg>
using exp = taylor< Integers, internal::exp_coeff, deg >
 \(e^x\)
 
template<typename Integers , size_t deg>
using expm1 = typename polynomial< FractionField< Integers > >::template sub_t< exp< Integers, deg >, typename polynomial< FractionField< Integers > >::one >
 \(e^x - 1\)
 
template<typename Integers , size_t deg>
using lnp1 = taylor< Integers, internal::lnp1_coeff, deg >
 \(\ln(1+x)\)
 
template<typename Integers , size_t deg>
using atan = taylor< Integers, internal::atan_coeff, deg >
 \(\arctan(x)\)
 
template<typename Integers , size_t deg>
using sin = taylor< Integers, internal::sin_coeff, deg >
 \(\sin(x)\)
 
template<typename Integers , size_t deg>
using sinh = taylor< Integers, internal::sh_coeff, deg >
 \(\sinh(x)\)
 
template<typename Integers , size_t deg>
using cosh = taylor< Integers, internal::cosh_coeff, deg >
 \(\cosh(x)\) hyperbolic cosine
 
template<typename Integers , size_t deg>
using cos = taylor< Integers, internal::cos_coeff, deg >
 \(\cos(x)\) cosinus
 
template<typename Integers , size_t deg>
using geometric_sum = taylor< Integers, internal::geom_coeff, deg >
 \(\frac{1}{1-x}\) zero development of \(\frac{1}{1-x}\)
 
template<typename Integers , size_t deg>
using asin = taylor< Integers, internal::asin_coeff, deg >
 \(\arcsin(x)\) arc sinus
 
template<typename Integers , size_t deg>
using asinh = taylor< Integers, internal::asinh_coeff, deg >
 \(\mathrm{arcsinh}(x)\) arc hyperbolic sinus
 
template<typename Integers , size_t deg>
using atanh = taylor< Integers, internal::atanh_coeff, deg >
 \(\mathrm{arctanh}(x)\) arc hyperbolic tangent
 
template<typename Integers , size_t deg>
using tan = taylor< Integers, internal::tan_coeff, deg >
 \(\tan(x)\) tangent
 
template<typename Integers , size_t deg>
using tanh = taylor< Integers, internal::tanh_coeff, deg >
 \(\tanh(x)\) hyperbolic tangent
 
using PI_fraction = ContinuedFraction< 3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, 1 >
 
using E_fraction = ContinuedFraction< 2, 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, 1, 1, 10, 1, 1, 12, 1, 1, 14, 1, 1 >
 approximation of \(e\)
 
using SQRT2_fraction = ContinuedFraction< 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 >
 approximation of \(\sqrt{2}\)
 
using SQRT3_fraction = ContinuedFraction< 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 >
 approximation of
 

Functions

template<typename T >
T * aligned_malloc (size_t count, size_t alignment)
 
brief Conway polynomials tparam p characteristic of the field (prime number) @tparam n degree of extension template< int p
 

Variables

template<typename T , size_t i>
constexpr T::inner_type factorial_v = internal::factorial<T, i>::value
 computes factorial(i) as value in T
 
template<typename T , size_t k, size_t n>
constexpr T::inner_type combination_v = internal::combination<T, k, n>::value
 computes binomial coefficients (k among n) as value
 
template<typename FloatType , typename T , size_t n>
constexpr FloatType bernoulli_v = internal::bernoulli<T, n>::template value<FloatType>
 nth bernoulli number as value in FloatType
 
template<typename T , size_t k>
constexpr T::inner_type alternate_v = internal::alternate<T, k>::value
 (-1)^k as value from T
 

Detailed Description

main namespace for all publicly exposed types or functions

Typedef Documentation

◆ abs_t

template<typename val >
using aerobus::abs_t = typedef std::conditional_t< val::enclosing_type::template pos_v<val>, val, typename val::enclosing_type::template sub_t<typename val::enclosing_type::zero, val> >

computes absolute value of 'val' val must be a 'value' in a Ring satisfying 'IsEuclideanDomain' concept

Template Parameters
vala value in a RIng, such as i64::val<-2>

◆ add_t

template<typename X , typename Y >
using aerobus::add_t = typedef typename X::enclosing_type::template add_t<X, Y>

generic addition

Template Parameters
Xa value in a ring providing add_t operator
Ya value in same ring

◆ addfractions_t

template<typename Ring , typename v1 , typename v2 >
using aerobus::addfractions_t = typedef typename FractionField<Ring>::template add_t<v1, v2>

helper type : adds two fractions

Template Parameters
Ring
v1belongs to FractionField<Ring>
v2belongs to FranctionField<Ring>

◆ alternate_t

template<typename T , int k>
using aerobus::alternate_t = typedef typename internal::alternate<T, k>::type

(-1)^k as type in T

Template Parameters
TRing type, aerobus::i64 for example

◆ asin

template<typename Integers , size_t deg>
using aerobus::asin = typedef taylor<Integers, internal::asin_coeff, deg>

\(\arcsin(x)\) arc sinus

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ asinh

template<typename Integers , size_t deg>
using aerobus::asinh = typedef taylor<Integers, internal::asinh_coeff, deg>

\(\mathrm{arcsinh}(x)\) arc hyperbolic sinus

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ atan

template<typename Integers , size_t deg>
using aerobus::atan = typedef taylor<Integers, internal::atan_coeff, deg>

\(\arctan(x)\)

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ atanh

template<typename Integers , size_t deg>
using aerobus::atanh = typedef taylor<Integers, internal::atanh_coeff, deg>

\(\mathrm{arctanh}(x)\) arc hyperbolic tangent

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ bell_t

template<typename T , size_t n>
using aerobus::bell_t = typedef typename internal::bell_helper<T, n>::type

Bell numbers.

Template Parameters
Tring type, such as aerobus::i64
nindex

◆ bernoulli_t

template<typename T , size_t n>
using aerobus::bernoulli_t = typedef typename internal::bernoulli<T, n>::type

nth bernoulli number as type in T

Template Parameters
TRing type (i64)
n

◆ combination_t

template<typename T , size_t k, size_t n>
using aerobus::combination_t = typedef typename internal::combination<T, k, n>::type

computes binomial coefficient (k among n) as type

Template Parameters
TRing type (i32 for example)

◆ cos

template<typename Integers , size_t deg>
using aerobus::cos = typedef taylor<Integers, internal::cos_coeff, deg>

\(\cos(x)\) cosinus

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ cosh

template<typename Integers , size_t deg>
using aerobus::cosh = typedef taylor<Integers, internal::cosh_coeff, deg>

\(\cosh(x)\) hyperbolic cosine

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ div_t

template<typename X , typename Y >
using aerobus::div_t = typedef typename X::enclosing_type::template div_t<X, Y>

generic division

Template Parameters
Xa value in a a euclidean domain
Ya value in same Euclidean domain

◆ E_fraction

using aerobus::E_fraction = typedef ContinuedFraction<2, 1, 2, 1, 1, 4, 1, 1, 6, 1, 1, 8, 1, 1, 10, 1, 1, 12, 1, 1, 14, 1, 1>

approximation of \(e\)

◆ embed_int_poly_in_fractions_t

template<typename v >
using aerobus::embed_int_poly_in_fractions_t = typedef typename Embed< polynomial<typename v::ring_type>, polynomial<FractionField<typename v::ring_type> >>::template type<v>

embed a polynomial with integers coefficients into rational coefficients polynomials

Lives in polynomial<FractionField<Ring>>

Template Parameters
RingIntegers
avalue in polynomial<Ring>

◆ exp

template<typename Integers , size_t deg>
using aerobus::exp = typedef taylor<Integers, internal::exp_coeff, deg>

\(e^x\)

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ expm1

template<typename Integers , size_t deg>
using aerobus::expm1 = typedef typename polynomial<FractionField<Integers> >::template sub_t< exp<Integers, deg>, typename polynomial<FractionField<Integers> >::one>

\(e^x - 1\)

Template Parameters
TRing type (for example i64)
degtaylor approximation degree

◆ factorial_t

template<typename T , size_t i>
using aerobus::factorial_t = typedef typename internal::factorial<T, i>::type

computes factorial(i), as type

Template Parameters
TRing type (e.g. i32)
i

◆ fpq32

rational fractions with 32 bits rational coefficients rational fractions with rationals coefficients (32 bits numerator and denominator)

◆ fpq64

polynomial with 64 bits rational coefficients

◆ FractionField

template<typename Ring >
using aerobus::FractionField = typedef typename internal::FractionFieldImpl<Ring>::type

Fraction field of an euclidean domain, such as Q for Z.

Template Parameters
Ring

◆ gcd_t

template<typename T , typename A , typename B >
using aerobus::gcd_t = typedef typename internal::gcd<T>::template type<A, B>

computes the greatest common divisor or A and B

Template Parameters
TRing type (must be euclidean domain)

◆ geometric_sum

template<typename Integers , size_t deg>
using aerobus::geometric_sum = typedef taylor<Integers, internal::geom_coeff, deg>

\(\frac{1}{1-x}\) zero development of \(\frac{1}{1-x}\)

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ lnp1

template<typename Integers , size_t deg>
using aerobus::lnp1 = typedef taylor<Integers, internal::lnp1_coeff, deg>

\(\ln(1+x)\)

Template Parameters
TRing type (for example i64)
degtaylor approximation degree

◆ make_frac_polynomial_t

template<typename Ring , auto... xs>
using aerobus::make_frac_polynomial_t = typedef typename polynomial<FractionField<Ring> >::template val< typename FractionField<Ring>::template inject_constant_t<xs>...>

make a polynomial with coefficients in FractionField<Ring>

Template Parameters
Ringintegers
...xsvalues

◆ make_int_polynomial_t

template<typename Ring , auto... xs>
using aerobus::make_int_polynomial_t = typedef typename polynomial<Ring>::template val< typename Ring::template inject_constant_t<xs>...>

make a polynomial with coefficients in Ring

Template Parameters
Ringintegers
...xscoefficients

◆ make_q32_t

template<int32_t p, int32_t q>
using aerobus::make_q32_t = typedef typename q32::template simplify_t< typename q32::val<i32::inject_constant_t<p>, i32::inject_constant_t<q> >>

helper type : make a fraction from numerator and denominator

Template Parameters
pnumerator
qdenominator

◆ make_q64_t

template<int64_t p, int64_t q>
using aerobus::make_q64_t = typedef typename q64::template simplify_t< typename q64::val<i64::inject_constant_t<p>, i64::inject_constant_t<q> >>

helper type : make a fraction from numerator and denominator

Template Parameters
pnumerator
qdenominator

◆ makefraction_t

template<typename Ring , typename v1 , typename v2 >
using aerobus::makefraction_t = typedef typename FractionField<Ring>::template val<v1, v2>

helper type : the rational V1/V2 in the field of fractions of Ring

Template Parameters
Ringthe base ring
v1value 1 in Ring
v2value 2 in Ring

◆ mul_t

template<typename X , typename Y >
using aerobus::mul_t = typedef typename X::enclosing_type::template mul_t<X, Y>

generic multiplication

Template Parameters
Xa value in a ring providing mul_t operator
Ya value in same ring

◆ mulfractions_t

template<typename Ring , typename v1 , typename v2 >
using aerobus::mulfractions_t = typedef typename FractionField<Ring>::template mul_t<v1, v2>

helper type : multiplies two fractions

Template Parameters
Ring
v1belongs to FractionField<Ring>
v2belongs to FranctionField<Ring>

◆ pi64

using aerobus::pi64 = typedef polynomial<i64>

polynomial with 64 bits integers coefficients

◆ PI_fraction

using aerobus::PI_fraction = typedef ContinuedFraction<3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, 1>

representation of \(\pi\) as a continued fraction

◆ pow_t

template<typename T , typename p , size_t n>
using aerobus::pow_t = typedef typename internal::pow<T, p, n>::type

p^n (as 'val' type in T)

Template Parameters
T(some ring type, such as aerobus::i64)
pmust be an instantiation of T::val
npower

◆ pq64

using aerobus::pq64 = typedef polynomial<q64>

polynomial with 64 bits rationals coefficients

◆ q32

using aerobus::q32 = typedef FractionField<i32>

32 bits rationals rationals with 32 bits numerator and denominator

◆ q64

using aerobus::q64 = typedef FractionField<i64>

64 bits rationals rationals with 64 bits numerator and denominator

◆ sin

template<typename Integers , size_t deg>
using aerobus::sin = typedef taylor<Integers, internal::sin_coeff, deg>

\(\sin(x)\)

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ sinh

template<typename Integers , size_t deg>
using aerobus::sinh = typedef taylor<Integers, internal::sh_coeff, deg>

\(\sinh(x)\)

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ SQRT2_fraction

using aerobus::SQRT2_fraction = typedef ContinuedFraction<1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2>

approximation of \(\sqrt{2}\)

◆ SQRT3_fraction

using aerobus::SQRT3_fraction = typedef ContinuedFraction<1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2>

approximation of

◆ stirling_1_signed_t

template<typename T , int n, int k>
using aerobus::stirling_1_signed_t = typedef typename internal::stirling_1_helper<T, n, k>::type

Stirling number of first king (signed) – as types.

Template Parameters
T(ring type, such as aerobus::i64)
n(integer)
k(integer)

◆ stirling_1_unsigned_t

template<typename T , int n, int k>
using aerobus::stirling_1_unsigned_t = typedef abs_t<typename internal::stirling_1_helper<T, n, k>::type>

Stirling number of first king (unsigned) – as types.

Template Parameters
T(ring type, such as aerobus::i64)
n(integer)
k(integer)

◆ stirling_2_t

template<typename T , int n, int k>
using aerobus::stirling_2_t = typedef typename internal::stirling_2_helper<T, n, k>::type

Stirling number of second king – as types.

Template Parameters
T(ring type, such as aerobus::i64)
n(integer)
k(integer)

◆ sub_t

template<typename X , typename Y >
using aerobus::sub_t = typedef typename X::enclosing_type::template sub_t<X, Y>

generic subtraction

Template Parameters
Xa value in a ring providing sub_t operator
Ya value in same ring

◆ tan

template<typename Integers , size_t deg>
using aerobus::tan = typedef taylor<Integers, internal::tan_coeff, deg>

\(\tan(x)\) tangent

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ tanh

template<typename Integers , size_t deg>
using aerobus::tanh = typedef taylor<Integers, internal::tanh_coeff, deg>

\(\tanh(x)\) hyperbolic tangent

Template Parameters
IntegersRing type (for example i64)
degtaylor approximation degree

◆ taylor

template<typename T , template< typename, size_t index > typename coeff_at, size_t deg>
using aerobus::taylor = typedef typename internal::make_taylor_impl< T, coeff_at, internal::make_index_sequence_reverse<deg + 1> >::type
Template Parameters
TUsed Ring type (aerobus::i64 for example)
coeff_at- implementation giving the 'value' (seen as type in FractionField<T>
deg

◆ vadd_t

template<typename... vals>
using aerobus::vadd_t = typedef typename internal::vadd<vals...>::type

adds multiple values (v1 + v2 + ... + vn) vals must have same "enclosing_type" and "enclosing_type" must have an add_t binary operator

Template Parameters
...vals

◆ vmul_t

template<typename... vals>
using aerobus::vmul_t = typedef typename internal::vmul<vals...>::type

multiplies multiple values (v1 + v2 + ... + vn) vals must have same "enclosing_type" and "enclosing_type" must have an mul_t binary operator

Template Parameters
...vals

Function Documentation

◆ aligned_malloc()

template<typename T >
T * aerobus::aligned_malloc ( size_t  count,
size_t  alignment 
)

'portable' aligned allocation of count elements of type T

Template Parameters
Tthe type of elements to store
Parameters
countthe number of elements
alignmentboundary

◆ field()

brief Conway polynomials tparam p characteristic of the aerobus::field ( prime  number)

Variable Documentation

◆ alternate_v

template<typename T , size_t k>
constexpr T::inner_type aerobus::alternate_v = internal::alternate<T, k>::value
inlineconstexpr

(-1)^k as value from T

Template Parameters
TRing type, aerobus::i64 for example, then result will be an int64_t

◆ bernoulli_v

template<typename FloatType , typename T , size_t n>
constexpr FloatType aerobus::bernoulli_v = internal::bernoulli<T, n>::template value<FloatType>
inlineconstexpr

nth bernoulli number as value in FloatType

Template Parameters
FloatType(double or float for example)
T(aerobus::i64 for example)
n

◆ combination_v

template<typename T , size_t k, size_t n>
constexpr T::inner_type aerobus::combination_v = internal::combination<T, k, n>::value
inlineconstexpr

computes binomial coefficients (k among n) as value

Template Parameters
T(aerobus::i32 for example)
k
n

◆ factorial_v

template<typename T , size_t i>
constexpr T::inner_type aerobus::factorial_v = internal::factorial<T, i>::value
inlineconstexpr

computes factorial(i) as value in T

Template Parameters
T(aerobus::i64 for example)
i