cheshirekow
v0.1.0
|
Namespaces | |
coefficient_key | |
derivative_detail | |
device_coefficient_key | |
device_param_key | |
intlist | |
param_key | |
polyval_detail | |
product_detail | |
scalarsum_detail | |
sturm2_detail | |
sturm3_detail | |
sturm_detail | |
Classes | |
struct | Assign |
struct | Assign< true, Scalar, Spec, Exp, idx > |
struct | AssignmentHelper |
struct | AssignmentHelper< Scalar, Exp1, Exp2, IntList< Head, Tail > > |
struct | AssignmentHelper< Scalar, Exp1, Exp2, IntList< Tail, intlist::Terminal > > |
struct | Coefficient |
class actually providing storage for a coefficient More... | |
struct | CoefficientKey |
struct | CountZeros |
struct | CountZeros< 1 > |
struct | CountZeros< 2 > |
struct | CountZeros< 3 > |
struct | CountZeros< 4 > |
struct | CountZeros< 5 > |
struct | Derivative |
expression template for sum of two matrix expressions More... | |
struct | DerivativeSpec |
struct | DerivativeSpec< IntList< Head, intlist::Terminal >, n > |
struct | DerivativeSpec< IntList< Head, Tail >, n > |
struct | DerivativeSurrogate |
intermediate object which allows LValue assignment operator to call differntiate expression template for sum of two matrix expressions More... | |
struct | Difference |
expression template for sum of two matrix expressions More... | |
struct | Divide |
specialization for the first step uses actual numerator, not remainder More... | |
struct | Divide< true, 0, Scalar, NumExp, NumSpec, DenExp, DenSpec > |
specialization for the first step uses actual numerator, not remainder More... | |
struct | Divide< true, i, Scalar, NumExp, NumSpec, DenExp, DenSpec > |
struct | get_spec |
struct | get_spec< Derivative< Scalar, Exp, Spec > > |
struct | get_spec< Difference< Scalar, Exp1, Spec1, Exp2, Spec2 > > |
struct | get_spec< Negative< Scalar, Exp, Spec > > |
struct | get_spec< Normalized< Scalar, Exp, Spec > > |
struct | get_spec< Polynomial< Scalar, Spec > > |
struct | get_spec< Product< Scalar, Exp1, Spec1, Exp2, Spec2 > > |
struct | get_spec< ScalarProduct< Scalar, Exp, Spec > > |
struct | get_spec< ScalarSum< Scalar, Exp, Spec > > |
struct | get_spec< Sum< Scalar, Exp1, Spec1, Exp2, Spec2 > > |
struct | GetHelper |
struct | GetHelper< true, idx, Scalar, Spec > |
struct | IntList |
compile time integer list (because cuda doesn't understand variadic templates ) More... | |
class | LValue |
expression template for lvalues More... | |
struct | Negative |
expression template for sum of two matrix expressions More... | |
struct | Normalized |
expression template for sum of two matrix expressions More... | |
struct | ParamKey |
struct | Polynomial |
A sparse, statically sized polynomial. More... | |
struct | PolyPrinter |
struct | PolyPrinter< Scalar, Exp, intlist::Terminal > |
struct | PolyPrinter< Scalar, Exp, IntList< 0, Tail > > |
struct | PolyPrinter< Scalar, Exp, IntList< 1, Tail > > |
struct | PolyPrinter< Scalar, Exp, IntList< Head, Tail > > |
struct | Printer |
struct | Printer< IntList< Head, Tail > > |
struct | Printer< IntList< Tail, intlist::Terminal > > |
struct | Product |
expression template for sum of two matrix expressions More... | |
struct | Quotient |
expression template for polynomial long division More... | |
struct | QuotientSpec |
struct | QuotientSurrogate |
surrogate for initialzing with / operator More... | |
struct | RemainderSpec |
struct | RValue |
expression template for rvalues More... | |
struct | ScalarProduct |
expression template for sum of two matrix expressions More... | |
struct | ScalarSum |
expression template for sum of two matrix expressions More... | |
struct | ScratchSpec |
struct | Storage |
recursive inheritance tree which provides storage for each of the required coefficients More... | |
struct | Storage< Scalar, IntList< SpecHead, SpecTail > > |
struct | Storage< Scalar, IntList< SpecTail, intlist::Terminal > > |
class | StreamAssignment |
assignment More... | |
struct | SturmSequence |
stores a squence of polynomials which satisfy the properties of sturms theorem and provides methods for computing the number of sign changes More... | |
struct | SturmSequence2 |
stores a squence of polynomials which satisfy the properties of sturms theorem and provides methods for computing the number of sign changes More... | |
struct | SturmTypes |
struct | Sum |
expression template for sum of two matrix expressions More... | |
Functions | |
template<typename Scalar , class Spec , class Exp > | |
__host__ __device__ __forceinline__ void | assign (Polynomial< Scalar, Spec > &p, const Exp &exp) |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ __forceinline__ void | construct (SturmSequence2< Scalar, Spec > &sturm, const Exp &exp) |
construct a sturm sequence More... | |
template<int n, typename Scalar , class Exp , class Spec > | |
__host__ __device__ DerivativeSurrogate< n, Scalar, Exp, Spec > | d_ds (const RValue< Scalar, Exp, Spec > &exp) |
return a surrogate which notifies LValue to call differentiate More... | |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ Derivative < Scalar, Exp, Spec > | d_dx (RValue< Scalar, Exp, Spec > const &P) |
template<int n, typename Scalar , class Exp1 , class InSpec , class Exp2 > | |
__host__ __device__ void | differentiate (const RValue< Scalar, Exp1, InSpec > &in, LValue< Scalar, Exp2 > &out) |
evaluate a polynomial More... | |
template<typename Scalar , class NumExp , class NumSpec , class DenExp , class DenSpec > | |
__host__ __device__ __forceinline__ void | divide (const NumExp &n, const DenExp &d, Polynomial< Scalar, typename QuotientSpec< NumSpec, DenSpec >::result > &q, Polynomial< Scalar, typename RemainderSpec< NumSpec, DenSpec >::result > &r) |
template<int idx, typename Scalar , class Exp1 > | |
__host__ __device__ Scalar | get (const Exp1 &) |
template<int idx, typename Scalar , class Exp , class Spec > | |
__host__ __device__ Scalar | get (const Negative< Scalar, Exp, Spec > &exp) |
template<int idx, typename Scalar , class Exp , class Spec > | |
__host__ __device__ Scalar | get (const Normalized< Scalar, Exp, Spec > &exp) |
template<int idx, typename Scalar , class Exp , class Spec > | |
__host__ __device__ Scalar | get (const ScalarProduct< Scalar, Exp, Spec > &sum) |
template<int idx, typename Scalar , class Exp1 , class Spec1 , class Exp2 , class Spec2 > | |
__host__ __device__ Scalar | get (const Difference< Scalar, Exp1, Spec1, Exp2, Spec2 > &sum) |
template<int idx, typename Scalar , class Exp1 , class Spec1 , class Exp2 , class Spec2 > | |
__host__ __device__ Scalar | get (const Sum< Scalar, Exp1, Spec1, Exp2, Spec2 > &sum) |
template<int i, typename Scalar , int max> | |
__host__ __device__ __forceinline__ Polynomial < Scalar, typename intlist::range< 0, max-i > ::result > & | get (SturmSequence< Scalar, max > &sturm) |
convienience accessor, returns the i'th polynomial in the sequence, where the 0'th polynomial is the original More... | |
template<int idx, typename Scalar , class Exp , class Spec > | |
__host__ __device__ Scalar | get (const ScalarSum< Scalar, Exp, Spec > &sum) |
template<int idx, typename Scalar , class Exp , class Spec > | |
__host__ __device__ Scalar | get (const Derivative< Scalar, Exp, Spec > &exp) |
template<int i, typename Scalar , class Spec > | |
__host__ __device__ __forceinline__ Polynomial < Scalar, typename sturm2_detail::SturmSpec< Spec, i >::result > & | get (SturmSequence2< Scalar, Spec > &sturm) |
return the i'th polynomial in the sturm sequence More... | |
template<int i, typename Scalar , class Spec > | |
__host__ __device__ __forceinline__ const Polynomial< Scalar, typename sturm2_detail::SturmSpec< Spec, i >::result > & | get (const SturmSequence2< Scalar, Spec > &sturm) |
template<int i, typename Scalar , class Exp1 , class Spec1 , class Exp2 , class Spec2 > | |
__host__ __device__ Scalar | get (const Product< Scalar, Exp1, Spec1, Exp2, Spec2 > &exp) |
template<int idx, typename Scalar , class Spec > | |
__host__ __device__ __forceinline__ Scalar | get (const Polynomial< Scalar, Spec > &poly) |
template<typename Scalar , class Exp > | |
__host__ __device__ LValue < Scalar, Exp > & | lvalue (LValue< Scalar, Exp > &exp) |
template<typename Scalar , class NumSpec , class DenSpec > | |
__host__ __device__ __forceinline__ void | mod (const Polynomial< Scalar, NumSpec > &n, const Polynomial< Scalar, DenSpec > &d, Polynomial< Scalar, typename RemainderSpec< NumSpec, DenSpec >::result > &r) |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ Normalized < Scalar, Exp, Spec > | normalized (const RValue< Scalar, Exp, Spec > &exp) |
template<typename Scalar , int pow> | |
__host__ __device__ Polynomial < Scalar, IntList< pow, intlist::Terminal > > | operator* (Scalar v, CoefficientKey< pow > c) |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ __forceinline__ ScalarProduct < Scalar, Exp, Spec > | operator* (const Scalar &a, RValue< Scalar, Exp, Spec > const &B) |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ __forceinline__ ScalarProduct < Scalar, Exp, Spec > | operator* (RValue< Scalar, Exp, Spec > const &B, const Scalar &a) |
template<typename Scalar , class Exp1 , class Spec1 , class Exp2 , class Spec2 > | |
__host__ __device__ Product < Scalar, Exp1, Spec1, Exp2, Spec2 > | operator* (RValue< Scalar, Exp1, Spec1 > const &A, RValue< Scalar, Exp2, Spec2 > const &B) |
template<typename Scalar , class Exp1 , class Spec1 , class Exp2 , class Spec2 > | |
__host__ __device__ Sum < Scalar, Exp1, Spec1, Exp2, Spec2 > | operator+ (RValue< Scalar, Exp1, Spec1 > const &A, RValue< Scalar, Exp2, Spec2 > const &B) |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ __forceinline__ ScalarSum < Scalar, Exp, Spec > | operator+ (const Scalar &a, RValue< Scalar, Exp, Spec > const &B) |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ __forceinline__ ScalarSum < Scalar, Exp, Spec > | operator+ (RValue< Scalar, Exp, Spec > const &B, const Scalar &a) |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ Negative < Scalar, Exp, Spec > | operator- (RValue< Scalar, Exp, Spec > const &exp) |
template<typename Scalar , class Exp1 , class Spec1 , class Exp2 , class Spec2 > | |
__host__ __device__ Difference < Scalar, Exp1, Spec1, Exp2, Spec2 > | operator- (RValue< Scalar, Exp1, Spec1 > const &A, RValue< Scalar, Exp2, Spec2 > const &B) |
template<typename Scalar , class Exp1 , class Spec1 , class Exp2 , class Spec2 > | |
__host__ __device__ QuotientSurrogate< Scalar, Exp1, Spec1, Exp2, Spec2 > | operator/ (RValue< Scalar, Exp1, Spec1 > const &A, RValue< Scalar, Exp2, Spec2 > const &B) |
template<class T > | |
std::ostream & | operator<< (std::ostream &out, const Printer< T > &) |
template<typename Scalar , class Exp , typename Scalar2 > | |
__host__ __device__ StreamAssignment< Scalar, Exp, 1 > | operator<< (LValue< Scalar, Exp > &exp, const Scalar2 &val) |
template<class Scalar , class Exp , class Spec > | |
std::ostream & | operator<< (std::ostream &out, const RValue< Scalar, Exp, Spec > &exp) |
template<int pow> | |
__host__ __device__ CoefficientKey< pow > | operator^ (ParamKey, CoefficientKey< pow > c) |
template<typename Scalar , class Exp , class Spec , typename Scalar2 > | |
__host__ __device__ Scalar | polyval (const RValue< Scalar, Exp, Spec > &exp, Scalar2 x) |
evaluate a polynomial More... | |
template<typename Scalar , class Exp , class Spec > | |
__host__ __device__ RValue < Scalar, Exp, Spec > & | rvalue (RValue< Scalar, Exp, Spec > &exp) |
template<int idx, typename Scalar , class Exp1 > | |
__host__ __device__ Scalar & | set (Exp1 &) |
template<int idx, typename Scalar , class Spec > | |
__host__ __device__ __forceinline__ Scalar & | set (Polynomial< Scalar, Spec > &poly) |
template<int idx, typename Scalar , class Exp1 > | |
__host__ __device__ Scalar & | set_storage (Exp1 &) |
template<int idx, typename Scalar , class Spec > | |
__host__ __device__ __forceinline__ Scalar & | set_storage (Polynomial< Scalar, Spec > &poly) |
template<typename Scalar , class Spec > | |
__host__ __device__ int | signChanges (SturmSequence2< Scalar, Spec > &sturm, Scalar arg) |
construct a sturm sequence More... | |
__host__ __device__ __forceinline__ void mpblocks::cuda::polynomial::assign | ( | Polynomial< Scalar, Spec > & | p, |
const Exp & | exp | ||
) |
__host__ __device__ __forceinline__ void mpblocks::cuda::polynomial::construct | ( | SturmSequence2< Scalar, Spec > & | sturm, |
const Exp & | exp | ||
) |
construct a sturm sequence
Definition at line 186 of file SturmSequence2.h.
__host__ __device__ DerivativeSurrogate<n,Scalar,Exp,Spec> mpblocks::cuda::polynomial::d_ds | ( | const RValue< Scalar, Exp, Spec > & | exp | ) |
return a surrogate which notifies LValue to call differentiate
Definition at line 196 of file differentiate.h.
__host__ __device__ Derivative<Scalar,Exp,Spec> mpblocks::cuda::polynomial::d_dx | ( | RValue< Scalar, Exp, Spec > const & | P | ) |
Definition at line 104 of file Derivative.h.
__host__ __device__ void mpblocks::cuda::polynomial::differentiate | ( | const RValue< Scalar, Exp1, InSpec > & | in, |
LValue< Scalar, Exp2 > & | out | ||
) |
evaluate a polynomial
Definition at line 165 of file differentiate.h.
__host__ __device__ __forceinline__ void mpblocks::cuda::polynomial::divide | ( | const NumExp & | n, |
const DenExp & | d, | ||
Polynomial< Scalar, typename QuotientSpec< NumSpec, DenSpec >::result > & | q, | ||
Polynomial< Scalar, typename RemainderSpec< NumSpec, DenSpec >::result > & | r | ||
) |
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const Exp1 & | ) |
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const Negative< Scalar, Exp, Spec > & | exp | ) |
Definition at line 61 of file Negative.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const Normalized< Scalar, Exp, Spec > & | exp | ) |
Definition at line 63 of file Normalized.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const ScalarProduct< Scalar, Exp, Spec > & | sum | ) |
Definition at line 69 of file ScalarProduct.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const Difference< Scalar, Exp1, Spec1, Exp2, Spec2 > & | sum | ) |
Definition at line 74 of file Difference.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const Sum< Scalar, Exp1, Spec1, Exp2, Spec2 > & | sum | ) |
__host__ __device__ __forceinline__ Polynomial< Scalar, typename intlist::range< 0, max-i >::result > & mpblocks::cuda::polynomial::get | ( | SturmSequence< Scalar, max > & | sturm | ) |
convienience accessor, returns the i'th polynomial in the sequence, where the 0'th polynomial is the original
Definition at line 149 of file SturmSequence.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const ScalarSum< Scalar, Exp, Spec > & | sum | ) |
Definition at line 94 of file ScalarSum.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const Derivative< Scalar, Exp, Spec > & | exp | ) |
Definition at line 94 of file Derivative.h.
__host__ __device__ __forceinline__ Polynomial<Scalar, typename sturm2_detail::SturmSpec<Spec,i>::result>& mpblocks::cuda::polynomial::get | ( | SturmSequence2< Scalar, Spec > & | sturm | ) |
return the i'th polynomial in the sturm sequence
Definition at line 110 of file SturmSequence2.h.
__host__ __device__ __forceinline__ const Polynomial<Scalar, typename sturm2_detail::SturmSpec<Spec,i>::result>& mpblocks::cuda::polynomial::get | ( | const SturmSequence2< Scalar, Spec > & | sturm | ) |
Definition at line 118 of file SturmSequence2.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::get | ( | const Product< Scalar, Exp1, Spec1, Exp2, Spec2 > & | exp | ) |
__host__ __device__ __forceinline__ Scalar mpblocks::cuda::polynomial::get | ( | const Polynomial< Scalar, Spec > & | poly | ) |
Definition at line 370 of file Polynomial.h.
__host__ __device__ LValue<Scalar,Exp>& mpblocks::cuda::polynomial::lvalue | ( | LValue< Scalar, Exp > & | exp | ) |
__host__ __device__ __forceinline__ void mpblocks::cuda::polynomial::mod | ( | const Polynomial< Scalar, NumSpec > & | n, |
const Polynomial< Scalar, DenSpec > & | d, | ||
Polynomial< Scalar, typename RemainderSpec< NumSpec, DenSpec >::result > & | r | ||
) |
__host__ __device__ Normalized<Scalar,Exp,Spec> mpblocks::cuda::polynomial::normalized | ( | const RValue< Scalar, Exp, Spec > & | exp | ) |
Definition at line 72 of file Normalized.h.
__host__ __device__ Polynomial<Scalar, IntList<pow,intlist::Terminal> > mpblocks::cuda::polynomial::operator* | ( | Scalar | v, |
CoefficientKey< pow > | c | ||
) |
Definition at line 58 of file Construct.h.
__host__ __device__ __forceinline__ ScalarProduct<Scalar,Exp,Spec> mpblocks::cuda::polynomial::operator* | ( | const Scalar & | a, |
RValue< Scalar, Exp, Spec > const & | B | ||
) |
Definition at line 77 of file ScalarProduct.h.
__host__ __device__ __forceinline__ ScalarProduct<Scalar,Exp,Spec> mpblocks::cuda::polynomial::operator* | ( | RValue< Scalar, Exp, Spec > const & | B, |
const Scalar & | a | ||
) |
Definition at line 86 of file ScalarProduct.h.
__host__ __device__ Product<Scalar,Exp1,Spec1,Exp2,Spec2> mpblocks::cuda::polynomial::operator* | ( | RValue< Scalar, Exp1, Spec1 > const & | A, |
RValue< Scalar, Exp2, Spec2 > const & | B | ||
) |
__host__ __device__ Sum<Scalar,Exp1,Spec1,Exp2,Spec2> mpblocks::cuda::polynomial::operator+ | ( | RValue< Scalar, Exp1, Spec1 > const & | A, |
RValue< Scalar, Exp2, Spec2 > const & | B | ||
) |
__host__ __device__ __forceinline__ ScalarSum<Scalar,Exp,Spec> mpblocks::cuda::polynomial::operator+ | ( | const Scalar & | a, |
RValue< Scalar, Exp, Spec > const & | B | ||
) |
Definition at line 102 of file ScalarSum.h.
__host__ __device__ __forceinline__ ScalarSum<Scalar,Exp,Spec> mpblocks::cuda::polynomial::operator+ | ( | RValue< Scalar, Exp, Spec > const & | B, |
const Scalar & | a | ||
) |
Definition at line 111 of file ScalarSum.h.
__host__ __device__ Negative<Scalar,Exp,Spec> mpblocks::cuda::polynomial::operator- | ( | RValue< Scalar, Exp, Spec > const & | exp | ) |
Definition at line 69 of file Negative.h.
__host__ __device__ Difference<Scalar,Exp1,Spec1,Exp2,Spec2> mpblocks::cuda::polynomial::operator- | ( | RValue< Scalar, Exp1, Spec1 > const & | A, |
RValue< Scalar, Exp2, Spec2 > const & | B | ||
) |
Definition at line 84 of file Difference.h.
__host__ __device__ QuotientSurrogate<Scalar,Exp1,Spec1,Exp2,Spec2> mpblocks::cuda::polynomial::operator/ | ( | RValue< Scalar, Exp1, Spec1 > const & | A, |
RValue< Scalar, Exp2, Spec2 > const & | B | ||
) |
Definition at line 165 of file Quotient.h.
std::ostream& mpblocks::cuda::polynomial::operator<< | ( | std::ostream & | out, |
const Printer< T > & | |||
) |
__host__ __device__ StreamAssignment<Scalar,Exp,1> mpblocks::cuda::polynomial::operator<< | ( | LValue< Scalar, Exp > & | exp, |
const Scalar2 & | val | ||
) |
Definition at line 76 of file StreamAssignment.h.
std::ostream& mpblocks::cuda::polynomial::operator<< | ( | std::ostream & | out, |
const RValue< Scalar, Exp, Spec > & | exp | ||
) |
__host__ __device__ CoefficientKey<pow> mpblocks::cuda::polynomial::operator^ | ( | ParamKey | , |
CoefficientKey< pow > | c | ||
) |
Definition at line 50 of file Construct.h.
__host__ __device__ Scalar mpblocks::cuda::polynomial::polyval | ( | const RValue< Scalar, Exp, Spec > & | exp, |
Scalar2 | x | ||
) |
__host__ __device__ RValue<Scalar,Exp,Spec>& mpblocks::cuda::polynomial::rvalue | ( | RValue< Scalar, Exp, Spec > & | exp | ) |
__host__ __device__ Scalar& mpblocks::cuda::polynomial::set | ( | Exp1 & | ) |
__host__ __device__ __forceinline__ Scalar& mpblocks::cuda::polynomial::set | ( | Polynomial< Scalar, Spec > & | poly | ) |
Definition at line 378 of file Polynomial.h.
__host__ __device__ Scalar& mpblocks::cuda::polynomial::set_storage | ( | Exp1 & | ) |
__host__ __device__ __forceinline__ Scalar& mpblocks::cuda::polynomial::set_storage | ( | Polynomial< Scalar, Spec > & | poly | ) |
Definition at line 385 of file Polynomial.h.
__host__ __device__ int mpblocks::cuda::polynomial::signChanges | ( | SturmSequence2< Scalar, Spec > & | sturm, |
Scalar | arg | ||
) |
construct a sturm sequence
Definition at line 210 of file SturmSequence2.h.