glucat  0.8.2
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
glucat Namespace Reference

Namespaces

 gen
 
 matrix
 
 timing
 

Classes

class  basis_table
 Table of basis elements used as a cache by basis_element() More...
 
class  bool_to_type
 Bool to type. More...
 
class  clifford_algebra
 clifford_algebra<> declares the operations of a Clifford algebra More...
 
class  compare_types
 Type comparison. More...
 
class  compare_types< T, T >
 
class  control_t
 Parameters to control tests. More...
 
struct  CTAssertion
 Compile time assertion. More...
 
struct  CTAssertion< true >
 
class  error
 Specific exception class. More...
 
class  framed_multi
 A framed_multi<Scalar_T,LO,HI> is a framed approximation to a multivector. More...
 
class  glucat_error
 Abstract exception class. More...
 
class  index_set
 Index set class based on std::bitset<> in Gnu standard C++ library. More...
 
class  index_set_hash
 
class  matrix_multi
 A matrix_multi<Scalar_T,LO,HI> is a matrix approximation to a multivector. More...
 
class  numeric_traits
 Extra traits which extend numeric limits. More...
 
class  random_generator
 Random number generator with single instance per Scalar_T. More...
 
class  sorted_range
 Sorted range for use with output. More...
 
class  sorted_range< Sorted_Map_T, Sorted_Map_T >
 
struct  tuning
 Tuning policy. More...
 

Typedefs

typedef int index_t
 Size of index_t should be enough to represent LO, HI. More...
 
typedef unsigned long set_value_t
 Size of set_value_t should be enough to contain index_set<LO,HI> More...
 
typedef int(* intfn) ()
 For exception catching: pointer to function returning int. More...
 
typedef int(* intintfn) (int)
 For exception catching: pointer to function of int returning int. More...
 

Enumerations

enum  precision_t { precision_demoted, precision_same, precision_promoted }
 Precision policy. More...
 

Functions

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
bool operator!= (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Test for inequality of multivectors. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
bool operator!= (const Multivector< Scalar_T, LO, HI > &lhs, const Scalar_T &scr)
 Test for inequality of multivector and scalar. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
bool operator!= (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI > &rhs)
 Test for inequality of scalar and multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator+ (const Multivector< Scalar_T, LO, HI > &lhs, const Scalar_T &scr)
 Geometric sum of multivector and scalar. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator+ (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI > &rhs)
 Geometric sum of scalar and multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator+ (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Geometric sum. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator- (const Multivector< Scalar_T, LO, HI > &lhs, const Scalar_T &scr)
 Geometric difference of multivector and scalar. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator- (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI > &rhs)
 Geometric difference of scalar and multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator- (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Geometric difference. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator* (const Multivector< Scalar_T, LO, HI > &lhs, const Scalar_T &scr)
 Product of multivector and scalar. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator* (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI > &rhs)
 Product of scalar and multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator* (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Geometric product. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator^ (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Outer product. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator& (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Inner product. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator% (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Left contraction. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T star (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Hestenes scalar product. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator/ (const Multivector< Scalar_T, LO, HI > &lhs, const Scalar_T &scr)
 Quotient of multivector and scalar. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator/ (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI > &rhs)
 Quotient of scalar and multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator/ (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Geometric quotient. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > operator| (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Transformation via twisted adjoint action. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > inv (const Multivector< Scalar_T, LO, HI > &val)
 Geometric multiplicative inverse. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > pow (const Multivector< Scalar_T, LO, HI > &lhs, int rhs)
 Integer power of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > pow (const Multivector< Scalar_T, LO, HI > &lhs, const RHS< Scalar_T, LO, HI > &rhs)
 Multivector power of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > outer_pow (const Multivector< Scalar_T, LO, HI > &lhs, int rhs)
 Outer product power of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T scalar (const Multivector< Scalar_T, LO, HI > &val)
 Scalar part. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T real (const Multivector< Scalar_T, LO, HI > &val)
 Real part: synonym for scalar part. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T imag (const Multivector< Scalar_T, LO, HI > &val)
 Imaginary part: deprecated (always 0) More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > pure (const Multivector< Scalar_T, LO, HI > &val)
 Pure part. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > even (const Multivector< Scalar_T, LO, HI > &val)
 Even part. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > odd (const Multivector< Scalar_T, LO, HI > &val)
 Odd part. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const std::vector< Scalar_T > vector_part (const Multivector< Scalar_T, LO, HI > &val)
 Vector part of multivector, as a vector_t with respect to frame() More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > involute (const Multivector< Scalar_T, LO, HI > &val)
 Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1}) More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > reverse (const Multivector< Scalar_T, LO, HI > &val)
 Reversion, eg. {1}*{2} -> {2}*{1}. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > conj (const Multivector< Scalar_T, LO, HI > &val)
 Conjugation, rev o invo == invo o rev. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T quad (const Multivector< Scalar_T, LO, HI > &val)
 Scalar_T quadratic form == (rev(x)*x)(0) More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T norm (const Multivector< Scalar_T, LO, HI > &val)
 Scalar_T norm == sum of norm of coordinates. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T abs (const Multivector< Scalar_T, LO, HI > &val)
 Absolute value == sqrt(norm) More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T max_abs (const Multivector< Scalar_T, LO, HI > &val)
 Maximum of absolute values of components of multivector: multivector infinity norm. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > complexifier (const Multivector< Scalar_T, LO, HI > &val)
 Square root of -1 which commutes with all members of the frame of the given multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > elliptic (const Multivector< Scalar_T, LO, HI > &val)
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > sqrt (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Square root of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > sqrt (const Multivector< Scalar_T, LO, HI > &val)
 Square root of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > clifford_exp (const Multivector< Scalar_T, LO, HI > &val)
 Exponential of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > log (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Natural logarithm of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > log (const Multivector< Scalar_T, LO, HI > &val)
 Natural logarithm of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > cos (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Cosine of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > cos (const Multivector< Scalar_T, LO, HI > &val)
 Cosine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > acos (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Inverse cosine of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > acos (const Multivector< Scalar_T, LO, HI > &val)
 Inverse cosine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > cosh (const Multivector< Scalar_T, LO, HI > &val)
 Hyperbolic cosine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > acosh (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Inverse hyperbolic cosine of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > acosh (const Multivector< Scalar_T, LO, HI > &val)
 Inverse hyperbolic cosine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > sin (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Sine of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > sin (const Multivector< Scalar_T, LO, HI > &val)
 Sine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > asin (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Inverse sine of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > asin (const Multivector< Scalar_T, LO, HI > &val)
 Inverse sine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > sinh (const Multivector< Scalar_T, LO, HI > &val)
 Hyperbolic sine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > asinh (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Inverse hyperbolic sine of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > asinh (const Multivector< Scalar_T, LO, HI > &val)
 Inverse hyperbolic sine of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > tan (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Tangent of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > tan (const Multivector< Scalar_T, LO, HI > &val)
 Tangent of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > atan (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Inverse tangent of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > atan (const Multivector< Scalar_T, LO, HI > &val)
 Inverse tangent of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > tanh (const Multivector< Scalar_T, LO, HI > &val)
 Hyperbolic tangent of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > atanh (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Inverse hyperbolic tangent of multivector with specified complexifier. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > atanh (const Multivector< Scalar_T, LO, HI > &val)
 Inverse hyperbolic tangent of multivector. More...
 
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
static void check_complex (const Multivector< Scalar_T, LO, HI > &val, const Multivector< Scalar_T, LO, HI > &i, const bool prechecked=false)
 Check that i is a valid complexifier for val. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > operator* (const framed_multi< Scalar_T, LO, HI > &lhs, const framed_multi< Scalar_T, LO, HI > &rhs)
 Geometric product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > operator^ (const framed_multi< Scalar_T, LO, HI > &lhs, const framed_multi< Scalar_T, LO, HI > &rhs)
 Outer product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > operator& (const framed_multi< Scalar_T, LO, HI > &lhs, const framed_multi< Scalar_T, LO, HI > &rhs)
 Inner product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > operator% (const framed_multi< Scalar_T, LO, HI > &lhs, const framed_multi< Scalar_T, LO, HI > &rhs)
 Left contraction. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T star (const framed_multi< Scalar_T, LO, HI > &lhs, const framed_multi< Scalar_T, LO, HI > &rhs)
 Hestenes scalar product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > operator/ (const framed_multi< Scalar_T, LO, HI > &lhs, const framed_multi< Scalar_T, LO, HI > &rhs)
 Geometric quotient. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > operator| (const framed_multi< Scalar_T, LO, HI > &lhs, const framed_multi< Scalar_T, LO, HI > &rhs)
 Transformation via twisted adjoint action. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
std::istream & operator>> (std::istream &s, framed_multi< Scalar_T, LO, HI > &val)
 Read multivector from input. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
std::ostream & operator<< (std::ostream &os, const framed_multi< Scalar_T, LO, HI > &val)
 Write multivector to output. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
std::ostream & operator<< (std::ostream &os, const std::pair< const index_set< LO, HI >, Scalar_T > &term)
 Write term to output. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > exp (const framed_multi< Scalar_T, LO, HI > &val)
 Exponential of multivector. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
static Scalar_T crd_of_mult (const std::pair< const index_set< LO, HI >, Scalar_T > &lhs, const std::pair< const index_set< LO, HI >, Scalar_T > &rhs)
 Coordinate of product of terms. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const std::pair< const index_set< LO, HI >, Scalar_T > operator* (const std::pair< const index_set< LO, HI >, Scalar_T > &lhs, const std::pair< const index_set< LO, HI >, Scalar_T > &rhs)
 Product of terms. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > sqrt (const framed_multi< Scalar_T, LO, HI > &val, const framed_multi< Scalar_T, LO, HI > &i, bool prechecked)
 Square root of multivector with specified complexifier. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > log (const framed_multi< Scalar_T, LO, HI > &val, const framed_multi< Scalar_T, LO, HI > &i, bool prechecked)
 Natural logarithm of multivector with specified complexifier. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
static Scalar_T crd_of_mult (const std::pair< const index_set< LO, HI >, Scalar_T > &lhs, const std::pair< const index_set< LO, HI >, Scalar_T > &rhs)
 Coordinate of product of terms. More...
 
 _GLUCAT_CTAssert (std::numeric_limits< unsigned char >::radix==2, CannotDetermineBitsPerChar) const index_t BITS_PER_CHAR
 If radix of unsigned char is not 2, we can't easily determine number of bits from sizeof. More...
 
 _GLUCAT_CTAssert (_GLUCAT_BITS_PER_ULONG==BITS_PER_SET_VALUE, BitsPerULongDoesNotMatchSetValueT) const index_t DEFAULT_LO
 Default lowest index in an index set. More...
 
template<typename LHS_T , typename RHS_T >
LHS_T pos_mod (LHS_T lhs, RHS_T rhs)
 Modulo function which works reliably for lhs < 0. More...
 
template<const index_t LO, const index_t HI>
const index_set< LO, HI > operator^ (const index_set< LO, HI > &lhs, const index_set< LO, HI > &rhs)
 Symmetric set difference: exclusive or. More...
 
template<const index_t LO, const index_t HI>
const index_set< LO, HI > operator& (const index_set< LO, HI > &lhs, const index_set< LO, HI > &rhs)
 Set intersection: and. More...
 
template<const index_t LO, const index_t HI>
const index_set< LO, HI > operator| (const index_set< LO, HI > &lhs, const index_set< LO, HI > &rhs)
 Set union: or. More...
 
template<const index_t LO, const index_t HI>
int compare (const index_set< LO, HI > &a, const index_set< LO, HI > &b)
 "lexicographic compare" eg. {3,4,5} is less than {3,7,8} More...
 
 _GLUCAT_CTAssert (sizeof(set_value_t) >=sizeof(std::bitset< DEFAULT_HI-DEFAULT_LO >), Default_index_set_too_big_for_value) template< const index_t LO
 Size of set_value_t should be enough to contain bitset<DEFAULT_HI-DEFAULT_LO> More...
 
const index_t HI std::ostream & operator<< (std::ostream &os, const index_set< LO, HI > &ist)
 Write out index set. More...
 
template<const index_t LO, const index_t HI>
std::istream & operator>> (std::istream &s, index_set< LO, HI > &ist)
 Read in index set. More...
 
int sign_of_square (index_t j)
 Square of generator {j}. More...
 
template<const index_t LO, const index_t HI>
index_t min_neg (const index_set< LO, HI > &ist)
 Minimum negative index, or 0 if none. More...
 
template<const index_t LO, const index_t HI>
index_t max_pos (const index_set< LO, HI > &ist)
 Maximum positive index, or 0 if none. More...
 
static unsigned long inverse_reversed_gray (unsigned long x)
 Inverse reversed Gray code. More...
 
static unsigned long inverse_gray (unsigned long x)
 Inverse Gray code. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > operator* (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs)
 Geometric product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > operator^ (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs)
 Outer product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > operator& (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs)
 Inner product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > operator% (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs)
 Left contraction. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T star (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs)
 Hestenes scalar product. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > operator/ (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs)
 Geometric quotient. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > operator| (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs)
 Transformation via twisted adjoint action. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
std::istream & operator>> (std::istream &s, matrix_multi< Scalar_T, LO, HI > &val)
 Read multivector from input. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
std::ostream & operator<< (std::ostream &os, const matrix_multi< Scalar_T, LO, HI > &val)
 Write multivector to output. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const index_set< LO, HI > reframe (const matrix_multi< Scalar_T, LO, HI > &lhs, const matrix_multi< Scalar_T, LO, HI > &rhs, matrix_multi< Scalar_T, LO, HI > &lhs_reframed, matrix_multi< Scalar_T, LO, HI > &rhs_reframed)
 Find a common frame for operands of a binary operator. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > sqrt (const matrix_multi< Scalar_T, LO, HI > &val, const matrix_multi< Scalar_T, LO, HI > &i, bool prechecked)
 Square root of multivector with specified complexifier. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > matrix_sqrt (const matrix_multi< Scalar_T, LO, HI > &val, const matrix_multi< Scalar_T, LO, HI > &i)
 Square root of multivector with specified complexifier. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > log (const matrix_multi< Scalar_T, LO, HI > &val, const matrix_multi< Scalar_T, LO, HI > &i, bool prechecked)
 Natural logarithm of multivector with specified complexifier. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > matrix_log (const matrix_multi< Scalar_T, LO, HI > &val, const matrix_multi< Scalar_T, LO, HI > &i)
 Natural logarithm of multivector with specified complexifier. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > exp (const matrix_multi< Scalar_T, LO, HI > &val)
 Exponential of multivector. More...
 
index_t offset_level (const index_t p, const index_t q)
 Determine the log2 dim corresponding to signature p, q. More...
 
template<typename Matrix_Index_T , const index_t LO, const index_t HI>
static Matrix_Index_T folded_dim (const index_set< LO, HI > &sub)
 Determine the matrix dimension of the fold of a subalegbra. More...
 
template<typename Multivector_T , typename Matrix_T , typename Basis_Matrix_T >
static Multivector_T fast (const Matrix_T &X, index_t level)
 Inverse generalized Fast Fourier Transform. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi< Scalar_T, LO, HI > pade_approx (const int array_size, const Scalar_T a[], const Scalar_T b[], const matrix_multi< Scalar_T, LO, HI > &X)
 Pade' approximation. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
static void db_step (matrix_multi< Scalar_T, LO, HI > &M, matrix_multi< Scalar_T, LO, HI > &Y)
 Single step of product form of Denman-Beavers square root iteration. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi< Scalar_T, LO, HI > db_sqrt (const matrix_multi< Scalar_T, LO, HI > &val)
 Product form of Denman-Beavers square root iteration. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi< Scalar_T, LO, HI > pade_log (const matrix_multi< Scalar_T, LO, HI > &val)
 Pade' approximation of log. More...
 
template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi< Scalar_T, LO, HI > cascade_log (const matrix_multi< Scalar_T, LO, HI > &val)
 Incomplete square root cascade and Pade' approximation of log. More...
 
template<typename Scalar_T >
Scalar_T log2 (const Scalar_T &x)
 Log base 2 of scalar. More...
 
template<typename Scalar_T >
numeric_traits< Scalar_T >::promoted::type to_promote (const Scalar_T &val)
 Cast to promote. More...
 
template<typename Scalar_T >
numeric_traits< Scalar_T >::demoted::type to_demote (const Scalar_T &val)
 Cast to demote. More...
 
int try_catch (intfn f)
 Exception catching for functions returning int. More...
 
int try_catch (intintfn f, int arg)
 Exception catching for functions of int returning int. More...
 

Variables

const double MS_PER_S = 1000.0
 Timing constant: deprecated here - moved to test/timing.h. More...
 
const index_t BITS_PER_SET_VALUE = std::numeric_limits<set_value_t>::digits
 Number of bits in set_value_t. More...
 
const index_t DEFAULT_HI = index_t(BITS_PER_SET_VALUE / 2)
 Default highest index in an index set. More...
 
const double DEFAULT_TRUNCATION = std::numeric_limits<float>::epsilon()
 Default for truncation. More...
 
const unsigned int DEFAULT_Mult_Matrix_Threshold = 8
 
const unsigned int DEFAULT_Div_Max_Steps = 4
 
const unsigned int DEFAULT_Sqrt_Max_Steps = 256
 
const unsigned int DEFAULT_Log_Max_Outer_Steps = 256
 
const unsigned int DEFAULT_Log_Max_Inner_Steps = 32
 
const unsigned int DEFAULT_Basis_Max_Count = 12
 
const unsigned int DEFAULT_Fast_Size_Threshold = 1 << 6
 
const unsigned int DEFAULT_Inv_Fast_Dim_Threshold = 1 << 3
 
const unsigned int DEFAULT_Products_Size_Threshold = 1 << 22
 
const precision_t DEFAULT_Function_Precision = precision_same
 
static const long double l_pi = 3.1415926535897932384626433832795029L
 
static const long double l_ln2 = 0.6931471805599453094172321214581766L
 

Typedef Documentation

typedef int glucat::index_t

Size of index_t should be enough to represent LO, HI.

Definition at line 77 of file global.h.

typedef int(* glucat::intfn) ()

For exception catching: pointer to function returning int.

Definition at line 37 of file try_catch.h.

typedef int(* glucat::intintfn) (int)

For exception catching: pointer to function of int returning int.

Definition at line 40 of file try_catch.h.

typedef unsigned long glucat::set_value_t

Size of set_value_t should be enough to contain index_set<LO,HI>

Definition at line 79 of file global.h.

Enumeration Type Documentation

Precision policy.

Enumerator
precision_demoted 
precision_same 
precision_promoted 

Definition at line 117 of file global.h.

Function Documentation

glucat::_GLUCAT_CTAssert ( std::numeric_limits< unsigned char >::radix  = =2,
CannotDetermineBitsPerChar   
) const

If radix of unsigned char is not 2, we can't easily determine number of bits from sizeof.

Number of bits per char is used to determine number of bits in set_value_t

glucat::_GLUCAT_CTAssert ( _GLUCAT_BITS_PER_ULONG  = =BITS_PER_SET_VALUE,
BitsPerULongDoesNotMatchSetValueT   
) const

Default lowest index in an index set.

glucat::_GLUCAT_CTAssert ( sizeof(set_value_t) >=sizeof(std::bitset< DEFAULT_HI-DEFAULT_LO >)  ,
Default_index_set_too_big_for_value   
) const

Size of set_value_t should be enough to contain bitset<DEFAULT_HI-DEFAULT_LO>

Write out index set

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::abs ( const Multivector< Scalar_T, LO, HI > &  val)
inline
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::acos ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Inverse cosine of multivector with specified complexifier.

Definition at line 798 of file clifford_algebra_imp.h.

References abs(), acosh(), and check_complex().

Referenced by glucat::numeric_traits< Scalar_T >::acos(), and acos().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::acos ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Inverse cosine of multivector.

Definition at line 818 of file clifford_algebra_imp.h.

References acos(), and complexifier().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::acosh ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Inverse hyperbolic cosine of multivector with specified complexifier.

Definition at line 738 of file clifford_algebra_imp.h.

References check_complex(), log(), norm(), and sqrt().

Referenced by acos(), and acosh().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::acosh ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Inverse hyperbolic cosine of multivector.

Definition at line 758 of file clifford_algebra_imp.h.

References acosh(), and complexifier().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::asin ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Inverse sine of multivector with specified complexifier.

Definition at line 905 of file clifford_algebra_imp.h.

References abs(), asinh(), and check_complex().

Referenced by glucat::numeric_traits< Scalar_T >::asin(), and asin().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::asin ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Inverse sine of multivector.

Definition at line 925 of file clifford_algebra_imp.h.

References asin(), and complexifier().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::asinh ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Inverse hyperbolic sine of multivector with specified complexifier.

Definition at line 845 of file clifford_algebra_imp.h.

References check_complex(), log(), norm(), and sqrt().

Referenced by asin(), and asinh().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::asinh ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Inverse hyperbolic sine of multivector.

Definition at line 865 of file clifford_algebra_imp.h.

References asinh(), and complexifier().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::atan ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Inverse tangent of multivector with specified complexifier.

Definition at line 1005 of file clifford_algebra_imp.h.

References atanh(), check_complex(), and scalar().

Referenced by glucat::numeric_traits< Scalar_T >::atan(), and atan().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::atan ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Inverse tangent of multivector.

Definition at line 1025 of file clifford_algebra_imp.h.

References atan(), and complexifier().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::atanh ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Inverse hyperbolic tangent of multivector with specified complexifier.

Definition at line 952 of file clifford_algebra_imp.h.

References check_complex(), log(), and norm().

Referenced by atan(), and atanh().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::atanh ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Inverse hyperbolic tangent of multivector.

Definition at line 969 of file clifford_algebra_imp.h.

References atanh(), and complexifier().

template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi<Scalar_T,LO,HI> glucat::cascade_log ( const matrix_multi< Scalar_T, LO, HI > &  val)
static
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
static void glucat::check_complex ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inlinestatic

Check that i is a valid complexifier for val.

Definition at line 566 of file clifford_algebra_imp.h.

References complexifier().

Referenced by acos(), acosh(), asin(), asinh(), atan(), atanh(), cos(), log(), sin(), sqrt(), and tan().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::clifford_exp ( const Multivector< Scalar_T, LO, HI > &  val)

Exponential of multivector.

Definition at line 604 of file clifford_algebra_imp.h.

References exp(), log2(), pow(), and scalar().

Referenced by exp().

template<const index_t LO, const index_t HI>
int glucat::compare ( const index_set< LO, HI > &  a,
const index_set< LO, HI > &  b 
)
inline

"lexicographic compare" eg. {3,4,5} is less than {3,7,8}

Lexicographic ordering of two sets: -1 if a<b, +1 if a>b, 0 if a==b.

Definition at line 573 of file index_set_imp.h.

References glucat::index_set< LO, HI >::lex_less_than().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::complexifier ( const Multivector< Scalar_T, LO, HI > &  val)

Square root of -1 which commutes with all members of the frame of the given multivector.

Definition at line 506 of file clifford_algebra_imp.h.

References pos_mod().

Referenced by acos(), acosh(), asin(), asinh(), atan(), atanh(), check_complex(), cos(), elliptic(), log(), sin(), sqrt(), and tan().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::conj ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Conjugation, rev o invo == invo o rev.

Definition at line 467 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::cos ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)

Cosine of multivector with specified complexifier.

Definition at line 765 of file clifford_algebra_imp.h.

References check_complex(), exp(), PyClical::pi, and scalar().

Referenced by glucat::numeric_traits< Scalar_T >::cos(), cos(), and tan().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::cos ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Cosine of multivector.

Definition at line 789 of file clifford_algebra_imp.h.

References complexifier(), and cos().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::cosh ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Hyperbolic cosine of multivector.

Definition at line 720 of file clifford_algebra_imp.h.

References exp(), and scalar().

Referenced by glucat::numeric_traits< Scalar_T >::cosh(), and tanh().

template<typename Scalar_T , const index_t LO, const index_t HI>
static Scalar_T glucat::crd_of_mult ( const std::pair< const index_set< LO, HI >, Scalar_T > &  lhs,
const std::pair< const index_set< LO, HI >, Scalar_T > &  rhs 
)
inlinestatic
template<typename Scalar_T , const index_t LO, const index_t HI>
static Scalar_T glucat::crd_of_mult ( const std::pair< const index_set< LO, HI >, Scalar_T > &  lhs,
const std::pair< const index_set< LO, HI >, Scalar_T > &  rhs 
)
inlinestatic

Coordinate of product of terms.

Definition at line 1906 of file framed_multi_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi<Scalar_T,LO,HI> glucat::db_sqrt ( const matrix_multi< Scalar_T, LO, HI > &  val)
static
template<typename Scalar_T , const index_t LO, const index_t HI>
static void glucat::db_step ( matrix_multi< Scalar_T, LO, HI > &  M,
matrix_multi< Scalar_T, LO, HI > &  Y 
)
inlinestatic

Single step of product form of Denman-Beavers square root iteration.

Definition at line 1362 of file matrix_multi_imp.h.

References glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::inv().

Referenced by cascade_log(), and db_sqrt().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::elliptic ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Square root of -1 which commutes with all members of the frame of the given multivector The name "elliptic" is now deprecated: use "complexifier" instead.

Definition at line 557 of file clifford_algebra_imp.h.

References complexifier().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::even ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Even part.

Definition at line 427 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::exp ( const framed_multi< Scalar_T, LO, HI > &  val)
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::exp ( const matrix_multi< Scalar_T, LO, HI > &  val)
template<typename Multivector_T , typename Matrix_T , typename Basis_Matrix_T >
static Multivector_T glucat::fast ( const Matrix_T &  X,
index_t  level 
)
static
template<typename Matrix_Index_T , const index_t LO, const index_t HI>
static Matrix_Index_T glucat::folded_dim ( const index_set< LO, HI > &  sub)
inlinestatic

Determine the matrix dimension of the fold of a subalegbra.

Definition at line 91 of file matrix_multi_imp.h.

References glucat::index_set< LO, HI >::count_neg(), glucat::index_set< LO, HI >::count_pos(), glucat::matrix_multi< Scalar_T, LO, HI >::matrix_multi(), and offset_level().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::imag ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Imaginary part: deprecated (always 0)

Definition at line 411 of file clifford_algebra_imp.h.

Referenced by glucat::matrix::classify_eigenvalues().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::inv ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Geometric multiplicative inverse.

Definition at line 321 of file clifford_algebra_imp.h.

static unsigned long glucat::inverse_gray ( unsigned long  x)
inlinestatic

Inverse Gray code.

Definition at line 861 of file index_set_imp.h.

References glucat::index_set< LO, HI >::sign_of_mult().

Referenced by glucat::index_set< LO, HI >::sign_of_mult().

static unsigned long glucat::inverse_reversed_gray ( unsigned long  x)
inlinestatic

Inverse reversed Gray code.

Definition at line 844 of file index_set_imp.h.

Referenced by glucat::index_set< LO, HI >::sign_of_mult().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::involute ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1})

Main involution, each {i} is replaced by -{i} in each term, eg. {1} ->-{1}.

Definition at line 451 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::log ( const matrix_multi< Scalar_T, LO, HI > &  val,
const matrix_multi< Scalar_T, LO, HI > &  i,
bool  prechecked 
)
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::log ( const framed_multi< Scalar_T, LO, HI > &  val,
const framed_multi< Scalar_T, LO, HI > &  i,
bool  prechecked 
)
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::log ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::log ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Natural logarithm of multivector.

Definition at line 712 of file clifford_algebra_imp.h.

References complexifier(), and log().

template<typename Scalar_T >
Scalar_T glucat::log2 ( const Scalar_T &  x)
inline

Log base 2 of scalar.

Definition at line 302 of file scalar.h.

References glucat::numeric_traits< Scalar_T >::log2().

Referenced by clifford_exp().

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::matrix_log ( const matrix_multi< Scalar_T, LO, HI > &  val,
const matrix_multi< Scalar_T, LO, HI > &  i 
)
template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::matrix_sqrt ( const matrix_multi< Scalar_T, LO, HI > &  val,
const matrix_multi< Scalar_T, LO, HI > &  i 
)
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::max_abs ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Maximum of absolute values of components of multivector: multivector infinity norm.

Definition at line 499 of file clifford_algebra_imp.h.

template<const index_t LO, const index_t HI>
index_t glucat::max_pos ( const index_set< LO, HI > &  ist)
inline

Maximum positive index, or 0 if none.

Definition at line 974 of file index_set_imp.h.

References glucat::index_set< LO, HI >::max(), and glucat::index_set< LO, HI >::reference::reference().

template<const index_t LO, const index_t HI>
index_t glucat::min_neg ( const index_set< LO, HI > &  ist)
inline

Minimum negative index, or 0 if none.

Definition at line 967 of file index_set_imp.h.

References glucat::index_set< LO, HI >::min().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::norm ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Scalar_T norm == sum of norm of coordinates.

Definition at line 483 of file clifford_algebra_imp.h.

Referenced by acosh(), asinh(), atanh(), and glucat::matrix::classify_eigenvalues().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::odd ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Odd part.

Definition at line 435 of file clifford_algebra_imp.h.

Referenced by glucat::framed_multi< Scalar_T, LO, HI >::framed_multi().

index_t glucat::offset_level ( const index_t  p,
const index_t  q 
)
inline

Determine the log2 dim corresponding to signature p, q.

Definition at line 76 of file matrix_multi_imp.h.

References pos_mod().

Referenced by glucat::matrix_multi< Scalar_T, LO, HI >::basis_element(), and folded_dim().

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
bool glucat::operator!= ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Test for inequality of multivectors.

Definition at line 78 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
bool glucat::operator!= ( const Multivector< Scalar_T, LO, HI > &  lhs,
const Scalar_T &  scr 
)
inline

Test for inequality of multivector and scalar.

Definition at line 86 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
bool glucat::operator!= ( const Scalar_T &  scr,
const Multivector< Scalar_T, LO, HI > &  rhs 
)
inline

Test for inequality of scalar and multivector.

Definition at line 94 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::operator% ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs 
)
inline
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::operator% ( const framed_multi< Scalar_T, LO, HI > &  lhs,
const framed_multi< Scalar_T, LO, HI > &  rhs 
)
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator% ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Left contraction.

Definition at line 243 of file clifford_algebra_imp.h.

template<const index_t LO, const index_t HI>
const index_set< LO, HI > glucat::operator& ( const index_set< LO, HI > &  lhs,
const index_set< LO, HI > &  rhs 
)
inline

Set intersection: and.

Definition at line 186 of file index_set_imp.h.

References glucat::index_set< LO, HI >::operator|=().

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::operator& ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs 
)
inline
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::operator& ( const framed_multi< Scalar_T, LO, HI > &  lhs,
const framed_multi< Scalar_T, LO, HI > &  rhs 
)
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator& ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Inner product.

Definition at line 228 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::operator* ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs 
)
inline
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::operator* ( const framed_multi< Scalar_T, LO, HI > &  lhs,
const framed_multi< Scalar_T, LO, HI > &  rhs 
)
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator* ( const Multivector< Scalar_T, LO, HI > &  lhs,
const Scalar_T &  scr 
)
inline

Product of multivector and scalar.

Definition at line 172 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator* ( const Scalar_T &  scr,
const Multivector< Scalar_T, LO, HI > &  rhs 
)
inline

Product of scalar and multivector.

Definition at line 183 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator* ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Geometric product.

Definition at line 198 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
const std::pair< const index_set< LO, HI >, Scalar_T > glucat::operator* ( const std::pair< const index_set< LO, HI >, Scalar_T > &  lhs,
const std::pair< const index_set< LO, HI >, Scalar_T > &  rhs 
)
inline

Product of terms.

Definition at line 1914 of file framed_multi_imp.h.

References crd_of_mult().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator+ ( const Multivector< Scalar_T, LO, HI > &  lhs,
const Scalar_T &  scr 
)
inline

Geometric sum of multivector and scalar.

Definition at line 102 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator+ ( const Scalar_T &  scr,
const Multivector< Scalar_T, LO, HI > &  rhs 
)
inline

Geometric sum of scalar and multivector.

Definition at line 113 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator+ ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Geometric sum.

Definition at line 127 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator- ( const Multivector< Scalar_T, LO, HI > &  lhs,
const Scalar_T &  scr 
)
inline

Geometric difference of multivector and scalar.

Definition at line 138 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator- ( const Scalar_T &  scr,
const Multivector< Scalar_T, LO, HI > &  rhs 
)
inline

Geometric difference of scalar and multivector.

Definition at line 149 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator- ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Geometric difference.

Definition at line 161 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::operator/ ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs 
)
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::operator/ ( const framed_multi< Scalar_T, LO, HI > &  lhs,
const framed_multi< Scalar_T, LO, HI > &  rhs 
)
inline
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator/ ( const Multivector< Scalar_T, LO, HI > &  lhs,
const Scalar_T &  scr 
)
inline

Quotient of multivector and scalar.

Definition at line 269 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator/ ( const Scalar_T &  scr,
const Multivector< Scalar_T, LO, HI > &  rhs 
)
inline

Quotient of scalar and multivector.

Definition at line 280 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator/ ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Geometric quotient.

Definition at line 295 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
std::ostream & glucat::operator<< ( std::ostream &  os,
const matrix_multi< Scalar_T, LO, HI > &  val 
)
inline

Write multivector to output.

Definition at line 1025 of file matrix_multi_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
std::ostream & glucat::operator<< ( std::ostream &  os,
const framed_multi< Scalar_T, LO, HI > &  val 
)
template<typename Scalar_T , const index_t LO, const index_t HI>
std::ostream & glucat::operator<< ( std::ostream &  os,
const std::pair< const index_set< LO, HI >, Scalar_T > &  term 
)

Write term to output.

Definition at line 1398 of file framed_multi_imp.h.

References pow(), and glucat::numeric_traits< Scalar_T >::to_double().

std::ostream & glucat::operator<< ( std::ostream &  os,
const index_set< LO, HI > &  ist 
)

Write out index set.

Definition at line 611 of file index_set_imp.h.

References PyClical::i, and PyClical::ist.

template<typename Scalar_T , const index_t LO, const index_t HI>
std::istream & glucat::operator>> ( std::istream &  s,
matrix_multi< Scalar_T, LO, HI > &  val 
)
inline
template<typename Scalar_T , const index_t LO, const index_t HI>
std::istream & glucat::operator>> ( std::istream &  s,
framed_multi< Scalar_T, LO, HI > &  val 
)

Read multivector from input.

Definition at line 1436 of file framed_multi_imp.h.

References PyClical::ist, and glucat::framed_multi< Scalar_T, LO, HI >::nbr_terms().

template<const index_t LO, const index_t HI>
std::istream & glucat::operator>> ( std::istream &  s,
index_set< LO, HI > &  ist 
)
template<const index_t LO, const index_t HI>
const index_set< LO, HI > glucat::operator^ ( const index_set< LO, HI > &  lhs,
const index_set< LO, HI > &  rhs 
)
inline

Symmetric set difference: exclusive or.

Definition at line 161 of file index_set_imp.h.

References glucat::index_set< LO, HI >::operator&=().

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::operator^ ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs 
)
inline
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::operator^ ( const framed_multi< Scalar_T, LO, HI > &  lhs,
const framed_multi< Scalar_T, LO, HI > &  rhs 
)
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator^ ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Outer product.

Definition at line 213 of file clifford_algebra_imp.h.

template<const index_t LO, const index_t HI>
const index_set< LO, HI > glucat::operator| ( const index_set< LO, HI > &  lhs,
const index_set< LO, HI > &  rhs 
)
inline

Set union: or.

Definition at line 211 of file index_set_imp.h.

References glucat::index_set< LO, HI >::operator[]().

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::operator| ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs 
)
inline

Transformation via twisted adjoint action.

Definition at line 777 of file matrix_multi_imp.h.

References glucat::matrix_multi< Scalar_T, LO, HI >::basis_element(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::conj(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::even(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::frame(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::grade(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::inv(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::involute(), glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::involute(), PyClical::ist, glucat::matrix_multi< Scalar_T, LO, HI >::m_frame, glucat::matrix_multi< Scalar_T, LO, HI >::m_matrix, glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::max_abs(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::norm(), glucat::matrix::norm_frob2(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::odd(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::operator()(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::operator[](), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::operator|=(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::outer_pow(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::pow(), pow(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::pure(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::quad(), glucat::matrix_multi< Scalar_T, LO, HI >::random(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::reverse(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::scalar(), glucat::matrix::trace(), and glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, matrix_multi< Scalar_T, LO, HI > >::vector_part().

template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::operator| ( const framed_multi< Scalar_T, LO, HI > &  lhs,
const framed_multi< Scalar_T, LO, HI > &  rhs 
)
inline

Transformation via twisted adjoint action.

Definition at line 940 of file framed_multi_imp.h.

References abs(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::conj(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::even(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::frame(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::grade(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::inv(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::involute(), PyClical::ist, glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::max_abs(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::norm(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::odd(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::operator()(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::operator[](), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::operator|=(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::outer_pow(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::pow(), pow(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::pure(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::quad(), glucat::framed_multi< Scalar_T, LO, HI >::random(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::reverse(), glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::scalar(), and glucat::clifford_algebra< Scalar_T, index_set< LO, HI >, framed_multi< Scalar_T, LO, HI > >::vector_part().

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::operator| ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Transformation via twisted adjoint action.

Definition at line 310 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::outer_pow ( const Multivector< Scalar_T, LO, HI > &  lhs,
int  rhs 
)

Outer product power of multivector.

Definition at line 384 of file clifford_algebra_imp.h.

template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi<Scalar_T,LO,HI> glucat::pade_approx ( const int  array_size,
const Scalar_T  a[],
const Scalar_T  b[],
const matrix_multi< Scalar_T, LO, HI > &  X 
)
inlinestatic
template<typename Scalar_T , const index_t LO, const index_t HI>
static const matrix_multi<Scalar_T,LO,HI> glucat::pade_log ( const matrix_multi< Scalar_T, LO, HI > &  val)
static
template<typename LHS_T , typename RHS_T >
LHS_T glucat::pos_mod ( LHS_T  lhs,
RHS_T  rhs 
)
inline
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::pow ( const Multivector< Scalar_T, LO, HI > &  lhs,
int  rhs 
)

Integer power of multivector.

Definition at line 328 of file clifford_algebra_imp.h.

Referenced by cascade_log(), clifford_exp(), db_sqrt(), operator<<(), operator|(), and glucat::numeric_traits< Scalar_T >::pow().

template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::pow ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Multivector power of multivector.

Definition at line 361 of file clifford_algebra_imp.h.

References exp(), and log().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::pure ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Pure part.

Definition at line 419 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::quad ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Scalar_T quadratic form == (rev(x)*x)(0)

Definition at line 475 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::real ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Real part: synonym for scalar part.

Definition at line 400 of file clifford_algebra_imp.h.

Referenced by glucat::matrix::classify_eigenvalues().

template<typename Scalar_T , const index_t LO, const index_t HI>
const index_set< LO, HI > glucat::reframe ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs,
matrix_multi< Scalar_T, LO, HI > &  lhs_reframed,
matrix_multi< Scalar_T, LO, HI > &  rhs_reframed 
)
inline
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::reverse ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Reversion, eg. {1}*{2} -> {2}*{1}.

Definition at line 459 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::scalar ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Scalar part.

Definition at line 392 of file clifford_algebra_imp.h.

Referenced by atan(), clifford_exp(), cos(), cosh(), sin(), sinh(), tan(), and tanh().

int glucat::sign_of_square ( index_t  j)
inline

Square of generator {j}.

Square of generator index j.

Definition at line 960 of file index_set_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::sin ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)

Sine of multivector with specified complexifier.

Definition at line 872 of file clifford_algebra_imp.h.

References check_complex(), exp(), PyClical::pi, and scalar().

Referenced by glucat::numeric_traits< Scalar_T >::sin(), sin(), and tan().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::sin ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Sine of multivector.

Definition at line 896 of file clifford_algebra_imp.h.

References complexifier(), and sin().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::sinh ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Hyperbolic sine of multivector.

Definition at line 826 of file clifford_algebra_imp.h.

References exp(), and scalar().

Referenced by glucat::numeric_traits< Scalar_T >::sinh(), and tanh().

template<typename Scalar_T , const index_t LO, const index_t HI>
const matrix_multi< Scalar_T, LO, HI > glucat::sqrt ( const matrix_multi< Scalar_T, LO, HI > &  val,
const matrix_multi< Scalar_T, LO, HI > &  i,
bool  prechecked 
)
template<typename Scalar_T , const index_t LO, const index_t HI>
const framed_multi< Scalar_T, LO, HI > glucat::sqrt ( const framed_multi< Scalar_T, LO, HI > &  val,
const framed_multi< Scalar_T, LO, HI > &  i,
bool  prechecked 
)
template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::sqrt ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Square root of multivector with specified complexifier.

Definition at line 589 of file clifford_algebra_imp.h.

Referenced by acosh(), asinh(), matrix_sqrt(), glucat::framed_multi< Scalar_T, LO, HI >::var_term::operator*=(), glucat::framed_multi< Scalar_T, LO, HI >::random(), and sqrt().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::sqrt ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Square root of multivector.

Definition at line 597 of file clifford_algebra_imp.h.

References complexifier(), and sqrt().

template<typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::star ( const matrix_multi< Scalar_T, LO, HI > &  lhs,
const matrix_multi< Scalar_T, LO, HI > &  rhs 
)
inline
template<typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::star ( const framed_multi< Scalar_T, LO, HI > &  lhs,
const framed_multi< Scalar_T, LO, HI > &  rhs 
)
template<template< typename, const index_t, const index_t > class Multivector, template< typename, const index_t, const index_t > class RHS, typename Scalar_T , const index_t LO, const index_t HI>
Scalar_T glucat::star ( const Multivector< Scalar_T, LO, HI > &  lhs,
const RHS< Scalar_T, LO, HI > &  rhs 
)
inline

Hestenes scalar product.

Definition at line 258 of file clifford_algebra_imp.h.

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::tan ( const Multivector< Scalar_T, LO, HI > &  val,
const Multivector< Scalar_T, LO, HI > &  i,
const bool  prechecked = false 
)
inline

Tangent of multivector with specified complexifier.

Definition at line 977 of file clifford_algebra_imp.h.

References check_complex(), cos(), scalar(), and sin().

Referenced by glucat::numeric_traits< Scalar_T >::tan(), and tan().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::tan ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Tangent of multivector.

Definition at line 996 of file clifford_algebra_imp.h.

References complexifier(), and tan().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const Multivector< Scalar_T, LO, HI > glucat::tanh ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Hyperbolic tangent of multivector.

Definition at line 933 of file clifford_algebra_imp.h.

References cosh(), scalar(), and sinh().

Referenced by glucat::numeric_traits< Scalar_T >::tanh().

template<typename Scalar_T >
numeric_traits<Scalar_T>::demoted::type glucat::to_demote ( const Scalar_T &  val)
inline

Cast to demote.

Definition at line 134 of file scalar_imp.h.

References glucat::numeric_traits< Scalar_T >::to_scalar_t().

template<typename Scalar_T >
numeric_traits<Scalar_T>::promoted::type glucat::to_promote ( const Scalar_T &  val)
inline

Cast to promote.

Definition at line 124 of file scalar_imp.h.

References glucat::numeric_traits< Scalar_T >::to_scalar_t().

int glucat::try_catch ( intfn  f)

Exception catching for functions returning int.

Definition at line 49 of file try_catch.h.

References PyClical::e(), and glucat::glucat_error::print_error_msg().

Referenced by glucat::control_t::call().

int glucat::try_catch ( intintfn  f,
int  arg 
)

Exception catching for functions of int returning int.

Definition at line 64 of file try_catch.h.

References PyClical::e(), and glucat::glucat_error::print_error_msg().

template<template< typename, const index_t, const index_t > class Multivector, typename Scalar_T , const index_t LO, const index_t HI>
const std::vector< Scalar_T > glucat::vector_part ( const Multivector< Scalar_T, LO, HI > &  val)
inline

Vector part of multivector, as a vector_t with respect to frame()

Definition at line 443 of file clifford_algebra_imp.h.

Variable Documentation

const index_t glucat::BITS_PER_SET_VALUE = std::numeric_limits<set_value_t>::digits

Number of bits in set_value_t.

Definition at line 103 of file global.h.

const unsigned int glucat::DEFAULT_Basis_Max_Count = 12

Definition at line 130 of file global.h.

const unsigned int glucat::DEFAULT_Div_Max_Steps = 4

Definition at line 126 of file global.h.

const unsigned int glucat::DEFAULT_Fast_Size_Threshold = 1 << 6

Definition at line 131 of file global.h.

const precision_t glucat::DEFAULT_Function_Precision = precision_same

Definition at line 134 of file global.h.

const index_t glucat::DEFAULT_HI = index_t(BITS_PER_SET_VALUE / 2)

Default highest index in an index set.

Definition at line 111 of file global.h.

const unsigned int glucat::DEFAULT_Inv_Fast_Dim_Threshold = 1 << 3

Definition at line 132 of file global.h.

const unsigned int glucat::DEFAULT_Log_Max_Inner_Steps = 32

Definition at line 129 of file global.h.

const unsigned int glucat::DEFAULT_Log_Max_Outer_Steps = 256

Definition at line 128 of file global.h.

const unsigned int glucat::DEFAULT_Mult_Matrix_Threshold = 8

Definition at line 125 of file global.h.

const unsigned int glucat::DEFAULT_Products_Size_Threshold = 1 << 22

Definition at line 133 of file global.h.

const unsigned int glucat::DEFAULT_Sqrt_Max_Steps = 256

Definition at line 127 of file global.h.

const double glucat::DEFAULT_TRUNCATION = std::numeric_limits<float>::epsilon()
const long double glucat::l_ln2 = 0.6931471805599453094172321214581766L
static

Definition at line 41 of file long_double.h.

Referenced by glucat::numeric_traits< Scalar_T >::ln_2().

const long double glucat::l_pi = 3.1415926535897932384626433832795029L
static

Definition at line 40 of file long_double.h.

Referenced by glucat::numeric_traits< Scalar_T >::pi().

const double glucat::MS_PER_S = 1000.0

Timing constant: deprecated here - moved to test/timing.h.

Definition at line 83 of file global.h.