glucat
0.8.4
|
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 int glucat::index_t |
typedef int(* glucat::intfn) () |
For exception catching: pointer to function returning int.
Definition at line 66 of file try_catch.h.
typedef int(* glucat::intintfn) (int) |
For exception catching: pointer to function of int returning int.
Definition at line 69 of file try_catch.h.
typedef unsigned long glucat::set_value_t |
enum glucat::precision_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
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
|
inline |
Absolute value == sqrt(norm)
Definition at line 520 of file clifford_algebra_imp.h.
Referenced by PyClical.clifford::abs(), clifford_to_str(), cos(), matrix_log(), matrix_sqrt(), and sin().
|
inline |
Inverse cosine of multivector.
Definition at line 847 of file clifford_algebra_imp.h.
|
inline |
Inverse cosine of multivector with specified complexifier.
Definition at line 827 of file clifford_algebra_imp.h.
References exp(), scalar(), and sinh().
Referenced by glucat::numeric_traits< Scalar_T >::abs(), and cos().
|
inline |
Inverse hyperbolic cosine of multivector.
Definition at line 787 of file clifford_algebra_imp.h.
References complexifier(), and cos().
|
inline |
Inverse hyperbolic cosine of multivector with specified complexifier.
Definition at line 767 of file clifford_algebra_imp.h.
Referenced by cos().
|
inline |
Inverse sine of multivector.
Definition at line 954 of file clifford_algebra_imp.h.
|
inline |
Inverse sine of multivector with specified complexifier.
Definition at line 934 of file clifford_algebra_imp.h.
References cosh(), scalar(), sinh(), and tanh().
Referenced by glucat::numeric_traits< Scalar_T >::pow(), and sin().
|
inline |
Inverse hyperbolic sine of multivector.
Definition at line 894 of file clifford_algebra_imp.h.
References complexifier(), and sin().
|
inline |
Inverse hyperbolic sine of multivector with specified complexifier.
Definition at line 874 of file clifford_algebra_imp.h.
Referenced by sin().
|
inline |
Inverse tangent of multivector.
Definition at line 1054 of file clifford_algebra_imp.h.
|
inline |
Inverse tangent of multivector with specified complexifier.
Definition at line 1034 of file clifford_algebra_imp.h.
Referenced by glucat::numeric_traits< Scalar_T >::log(), and tan().
|
inline |
Inverse hyperbolic tangent of multivector.
Definition at line 998 of file clifford_algebra_imp.h.
|
inline |
Inverse hyperbolic tangent of multivector with specified complexifier.
Definition at line 981 of file clifford_algebra_imp.h.
|
static |
Incomplete square root cascade and Pade' approximation of log.
Definition at line 1979 of file matrix_multi_imp.h.
References db_step(), epsilon, glucat::tuning< Mult_Matrix_Threshold, Div_Max_Steps, Sqrt_Max_Steps, Log_Max_Outer_Steps, Log_Max_Inner_Steps, Basis_Max_Count, Fast_Size_Threshold, Inv_Fast_Dim_Threshold, Products_Size_Threshold, Function_Precision >::log_max_inner_steps, glucat::tuning< Mult_Matrix_Threshold, Div_Max_Steps, Sqrt_Max_Steps, Log_Max_Outer_Steps, Log_Max_Inner_Steps, Basis_Max_Count, Fast_Size_Threshold, Inv_Fast_Dim_Threshold, Products_Size_Threshold, Function_Precision >::log_max_outer_steps, norm(), pade_log(), and pow().
Referenced by matrix_log().
|
inlinestatic |
Check that i is a valid complexifier for val.
Definition at line 595 of file clifford_algebra_imp.h.
References complexifier(), and sqrt().
const Multivector< Scalar_T, LO, HI > glucat::clifford_exp | ( | const Multivector< Scalar_T, LO, HI > & | val | ) |
Exponential of multivector.
Definition at line 633 of file clifford_algebra_imp.h.
Referenced by exp().
|
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 602 of file index_set_imp.h.
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 535 of file clifford_algebra_imp.h.
Referenced by acosh(), asinh(), check_complex(), cos(), sin(), tan(), and tanh().
|
inline |
Conjugation, rev o invo == invo o rev.
Definition at line 496 of file clifford_algebra_imp.h.
|
inline |
Cosine of multivector.
Definition at line 818 of file clifford_algebra_imp.h.
References acos(), and complexifier().
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 794 of file clifford_algebra_imp.h.
References abs(), acos(), acosh(), check_complex(), and PyClical::i.
Referenced by acosh(), and glucat::numeric_traits< Scalar_T >::imag().
|
inline |
Hyperbolic cosine of multivector.
Definition at line 749 of file clifford_algebra_imp.h.
Referenced by asin(), and glucat::numeric_traits< Scalar_T >::pi().
|
inlinestatic |
Coordinate of product of terms.
Referenced by operator&().
|
inlinestatic |
Coordinate of product of terms.
Definition at line 1936 of file framed_multi_imp.h.
|
static |
Product form of Denman-Beavers square root iteration.
Definition at line 1407 of file matrix_multi_imp.h.
Referenced by matrix_sqrt().
|
inlinestatic |
Single step of product form of Denman-Beavers square root iteration.
Definition at line 1394 of file matrix_multi_imp.h.
References norm().
Referenced by cascade_log().
|
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 586 of file clifford_algebra_imp.h.
References PyClical::i, and sqrt().
|
inline |
Even part.
Definition at line 456 of file clifford_algebra_imp.h.
const framed_multi< Scalar_T, LO, HI > glucat::exp | ( | const framed_multi< Scalar_T, LO, HI > & | val | ) |
Exponential of multivector.
Definition at line 1977 of file framed_multi_imp.h.
Referenced by acos(), exp(), glucat::numeric_traits< Scalar_T >::fmod(), matrix_log(), matrix_sqrt(), pow(), and PyClical.clifford::pow().
const matrix_multi< Scalar_T, LO, HI > glucat::exp | ( | const matrix_multi< Scalar_T, LO, HI > & | val | ) |
Exponential of multivector.
Definition at line 2143 of file matrix_multi_imp.h.
References clifford_exp(), exp(), glucat::tuning< Mult_Matrix_Threshold, Div_Max_Steps, Sqrt_Max_Steps, Log_Max_Outer_Steps, Log_Max_Inner_Steps, Basis_Max_Count, Fast_Size_Threshold, Inv_Fast_Dim_Threshold, Products_Size_Threshold, Function_Precision >::function_precision, precision_demoted, precision_promoted, and scalar().
|
static |
Inverse generalized Fast Fourier Transform.
Definition at line 1115 of file matrix_multi_imp.h.
|
inlinestatic |
Determine the matrix dimension of the fold of a subalegbra.
Definition at line 123 of file matrix_multi_imp.h.
|
inline |
Imaginary part: deprecated (always 0)
Definition at line 440 of file clifford_algebra_imp.h.
|
inline |
Geometric multiplicative inverse.
Definition at line 350 of file clifford_algebra_imp.h.
Referenced by matrix_log(), and matrix_sqrt().
|
inlinestatic |
Inverse Gray code.
Definition at line 890 of file index_set_imp.h.
|
inlinestatic |
Inverse reversed Gray code.
Definition at line 873 of file index_set_imp.h.
|
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 480 of file clifford_algebra_imp.h.
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 | ||
) |
Natural logarithm of multivector with specified complexifier.
Definition at line 2027 of file framed_multi_imp.h.
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 | ||
) |
Natural logarithm of multivector with specified complexifier.
Definition at line 2026 of file matrix_multi_imp.h.
References check_complex(), glucat::tuning< Mult_Matrix_Threshold, Div_Max_Steps, Sqrt_Max_Steps, Log_Max_Outer_Steps, Log_Max_Inner_Steps, Basis_Max_Count, Fast_Size_Threshold, Inv_Fast_Dim_Threshold, Products_Size_Threshold, Function_Precision >::function_precision, PyClical::i, matrix_log(), precision_demoted, and precision_promoted.
|
inline |
Natural logarithm of multivector.
Definition at line 741 of file clifford_algebra_imp.h.
|
inline |
Natural logarithm of multivector with specified complexifier.
Definition at line 733 of file clifford_algebra_imp.h.
Referenced by glucat::numeric_traits< Scalar_T >::conj(), matrix_log(), pow(), and PyClical.clifford::pow().
|
inline |
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 | ||
) |
Natural logarithm of multivector with specified complexifier.
Definition at line 2067 of file matrix_multi_imp.h.
References abs(), glucat::matrix::both_eig_case, cascade_log(), glucat::matrix::classify_eigenvalues(), exp(), PyClical::i, inv(), glucat::matrix::isnan(), log(), glucat::matrix::eig_genus< Matrix_T >::m_eig_case, glucat::matrix::eig_genus< Matrix_T >::m_safe_arg, glucat::matrix::negative_eig_case, norm(), and PyClical::pi.
Referenced by log().
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 | ||
) |
Square root of multivector with specified complexifier.
Definition at line 1648 of file matrix_multi_imp.h.
References abs(), glucat::matrix::both_eig_case, glucat::matrix::classify_eigenvalues(), db_sqrt(), exp(), PyClical::i, inv(), glucat::matrix::eig_genus< Matrix_T >::m_eig_case, glucat::matrix::eig_genus< Matrix_T >::m_safe_arg, glucat::matrix::negative_eig_case, norm(), pade_approx(), and sqrt().
Referenced by sqrt().
|
inline |
Maximum of absolute values of components of multivector: multivector infinity norm.
Definition at line 528 of file clifford_algebra_imp.h.
|
inline |
Maximum positive index, or 0 if none.
Definition at line 1003 of file index_set_imp.h.
|
inline |
Minimum negative index, or 0 if none.
Definition at line 996 of file index_set_imp.h.
|
inline |
Scalar_T norm == sum of norm of coordinates.
Definition at line 512 of file clifford_algebra_imp.h.
Referenced by cascade_log(), db_step(), matrix_log(), and matrix_sqrt().
|
inline |
Odd part.
Definition at line 464 of file clifford_algebra_imp.h.
Referenced by glucat::framed_multi< Scalar_T, LO, HI >::fast().
Determine the log2 dim corresponding to signature p, q.
Definition at line 108 of file matrix_multi_imp.h.
References glucat::matrix_multi< Scalar_T, LO, HI >::m_matrix.
|
inline |
Test for inequality of multivectors.
Definition at line 107 of file clifford_algebra_imp.h.
|
inline |
Test for inequality of multivector and scalar.
Definition at line 115 of file clifford_algebra_imp.h.
|
inline |
Test for inequality of scalar and multivector.
Definition at line 123 of file clifford_algebra_imp.h.
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 | ||
) |
Left contraction.
Definition at line 749 of file framed_multi_imp.h.
|
inline |
Left contraction.
Definition at line 667 of file matrix_multi_imp.h.
|
inline |
Left contraction.
Definition at line 272 of file clifford_algebra_imp.h.
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 |
Set intersection: and.
Definition at line 215 of file index_set_imp.h.
|
inline |
Inner product.
Definition at line 648 of file matrix_multi_imp.h.
|
inline |
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 | ||
) |
Geometric product.
Definition at line 430 of file framed_multi_imp.h.
|
inline |
Geometric product.
Definition at line 579 of file matrix_multi_imp.h.
|
inline |
Geometric product.
Definition at line 227 of file clifford_algebra_imp.h.
|
inline |
Product of multivector and scalar.
Definition at line 201 of file clifford_algebra_imp.h.
|
inline |
Product of scalar and multivector.
Definition at line 212 of file clifford_algebra_imp.h.
|
inline |
Product of terms.
Definition at line 1944 of file framed_multi_imp.h.
|
inline |
Geometric sum.
Definition at line 156 of file clifford_algebra_imp.h.
|
inline |
Geometric sum of multivector and scalar.
Definition at line 131 of file clifford_algebra_imp.h.
|
inline |
Geometric sum of scalar and multivector.
Definition at line 142 of file clifford_algebra_imp.h.
|
inline |
Geometric difference.
Definition at line 190 of file clifford_algebra_imp.h.
|
inline |
Geometric difference of multivector and scalar.
Definition at line 167 of file clifford_algebra_imp.h.
|
inline |
Geometric difference of scalar and multivector.
Definition at line 178 of file clifford_algebra_imp.h.
|
inline |
Geometric quotient.
Definition at line 944 of file framed_multi_imp.h.
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 | ||
) |
Geometric quotient.
Definition at line 700 of file matrix_multi_imp.h.
|
inline |
Geometric quotient.
Definition at line 324 of file clifford_algebra_imp.h.
|
inline |
Quotient of multivector and scalar.
Definition at line 298 of file clifford_algebra_imp.h.
|
inline |
Quotient of scalar and multivector.
Definition at line 309 of file clifford_algebra_imp.h.
std::ostream & glucat::operator<< | ( | std::ostream & | os, |
const framed_multi< Scalar_T, LO, HI > & | val | ||
) |
Write multivector to output.
Definition at line 1395 of file framed_multi_imp.h.
const index_t HI std::ostream& glucat::operator<< | ( | std::ostream & | os, |
const index_set< LO, HI > & | ist | ||
) |
Write out index set.
Definition at line 639 of file index_set_imp.h.
|
inline |
Write multivector to output.
Definition at line 1056 of file matrix_multi_imp.h.
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 1427 of file framed_multi_imp.h.
std::istream & glucat::operator>> | ( | std::istream & | s, |
framed_multi< Scalar_T, LO, HI > & | val | ||
) |
Read multivector from input.
Definition at line 1466 of file framed_multi_imp.h.
std::istream & glucat::operator>> | ( | std::istream & | s, |
index_set< LO, HI > & | ist | ||
) |
Read in index set.
Definition at line 662 of file index_set_imp.h.
|
inline |
Read multivector from input.
Definition at line 1067 of file matrix_multi_imp.h.
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 | ||
) |
Outer product.
Definition at line 531 of file framed_multi_imp.h.
|
inline |
Symmetric set difference: exclusive or.
Definition at line 190 of file index_set_imp.h.
|
inline |
Outer product.
Definition at line 629 of file matrix_multi_imp.h.
|
inline |
Outer product.
Definition at line 242 of file clifford_algebra_imp.h.
|
inline |
Transformation via twisted adjoint action.
Definition at line 970 of file framed_multi_imp.h.
References pow().
|
inline |
Set union: or.
Definition at line 240 of file index_set_imp.h.
|
inline |
Transformation via twisted adjoint action.
Definition at line 809 of file matrix_multi_imp.h.
|
inline |
Transformation via twisted adjoint action.
Definition at line 339 of file clifford_algebra_imp.h.
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 413 of file clifford_algebra_imp.h.
|
inlinestatic |
Pade' approximation.
Definition at line 1334 of file matrix_multi_imp.h.
Referenced by matrix_sqrt(), and pade_log().
|
static |
Pade' approximation of log.
Definition at line 1958 of file matrix_multi_imp.h.
References pade_approx().
Referenced by cascade_log().
|
inline |
|
inline |
Multivector power of multivector.
Definition at line 390 of file clifford_algebra_imp.h.
const Multivector< Scalar_T, LO, HI > glucat::pow | ( | const Multivector< Scalar_T, LO, HI > & | lhs, |
int | rhs | ||
) |
Integer power of multivector.
Definition at line 357 of file clifford_algebra_imp.h.
Referenced by cascade_log(), and operator|().
|
inline |
Pure part.
Definition at line 448 of file clifford_algebra_imp.h.
|
inline |
Scalar_T quadratic form == (rev(x)*x)(0)
Definition at line 504 of file clifford_algebra_imp.h.
|
inline |
Real part: synonym for scalar part.
Definition at line 429 of file clifford_algebra_imp.h.
|
inline |
Find a common frame for operands of a binary operator.
Definition at line 382 of file matrix_multi_imp.h.
Referenced by glucat::matrix_multi< Scalar_T, LO, HI >::operator+=().
|
inline |
Reversion, eg. {1}*{2} -> {2}*{1}.
Definition at line 488 of file clifford_algebra_imp.h.
References glucat::numeric_traits< Scalar_T >::sqrt().
|
inline |
Scalar part.
Definition at line 421 of file clifford_algebra_imp.h.
Referenced by acos(), asin(), exp(), glucat::framed_multi< Scalar_T, LO, HI >::fast(), and tan().
|
inline |
Square of generator {j}.
Square of generator index j.
Definition at line 989 of file index_set_imp.h.
|
inline |
Sine of multivector.
Definition at line 925 of file clifford_algebra_imp.h.
References asin(), and complexifier().
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 901 of file clifford_algebra_imp.h.
References abs(), asin(), asinh(), check_complex(), and PyClical::i.
Referenced by asinh(), and glucat::numeric_traits< Scalar_T >::ln_2().
|
inline |
Hyperbolic sine of multivector.
Definition at line 855 of file clifford_algebra_imp.h.
Referenced by acos(), asin(), and glucat::numeric_traits< Scalar_T >::sqrt().
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 | ||
) |
Square root of multivector with specified complexifier.
Definition at line 1954 of file framed_multi_imp.h.
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 | ||
) |
Square root of multivector with specified complexifier.
Definition at line 1603 of file matrix_multi_imp.h.
References check_complex(), glucat::tuning< Mult_Matrix_Threshold, Div_Max_Steps, Sqrt_Max_Steps, Log_Max_Outer_Steps, Log_Max_Inner_Steps, Basis_Max_Count, Fast_Size_Threshold, Inv_Fast_Dim_Threshold, Products_Size_Threshold, Function_Precision >::function_precision, PyClical::i, matrix_sqrt(), precision_demoted, and precision_promoted.
|
inline |
Square root of multivector.
Definition at line 626 of file clifford_algebra_imp.h.
|
inline |
Square root of multivector with specified complexifier.
Definition at line 618 of file clifford_algebra_imp.h.
Referenced by check_complex(), elliptic(), and matrix_sqrt().
Scalar_T glucat::star | ( | const framed_multi< Scalar_T, LO, HI > & | lhs, |
const framed_multi< Scalar_T, LO, HI > & | rhs | ||
) |
Hestenes scalar product.
Definition at line 885 of file framed_multi_imp.h.
References glucat::matrix::isnan().
|
inline |
Hestenes scalar product.
Definition at line 686 of file matrix_multi_imp.h.
|
inline |
Hestenes scalar product.
Definition at line 287 of file clifford_algebra_imp.h.
Referenced by operator&().
|
inline |
Tangent of multivector.
Definition at line 1025 of file clifford_algebra_imp.h.
References atan(), and complexifier().
|
inline |
Tangent of multivector with specified complexifier.
Definition at line 1006 of file clifford_algebra_imp.h.
References atan(), atanh(), check_complex(), PyClical::i, and scalar().
Referenced by glucat::numeric_traits< Scalar_T >::exp().
|
inline |
Hyperbolic tangent of multivector.
Definition at line 962 of file clifford_algebra_imp.h.
References atanh(), and complexifier().
Referenced by asin(), and glucat::numeric_traits< Scalar_T >::log2().
|
inline |
Cast to demote.
Definition at line 163 of file scalar_imp.h.
|
inline |
Cast to promote.
Definition at line 153 of file scalar_imp.h.
int glucat::try_catch | ( | intfn | f | ) |
Exception catching for functions returning int.
Definition at line 78 of file try_catch.h.
Referenced by glucat::control_t::verbose().
int glucat::try_catch | ( | intintfn | f, |
int | arg | ||
) |
Exception catching for functions of int returning int.
Definition at line 93 of file try_catch.h.
|
inline |
Vector part of multivector, as a vector_t with respect to frame()
Definition at line 472 of file clifford_algebra_imp.h.
const index_t glucat::BITS_PER_SET_VALUE = std::numeric_limits<set_value_t>::digits |
const unsigned int glucat::DEFAULT_Fast_Size_Threshold = 1 << 6 |
const precision_t glucat::DEFAULT_Function_Precision = precision_same |
const index_t glucat::DEFAULT_HI = index_t(BITS_PER_SET_VALUE / 2) |
const unsigned int glucat::DEFAULT_Inv_Fast_Dim_Threshold = 1 << 3 |
const unsigned int glucat::DEFAULT_Log_Max_Inner_Steps = 32 |
const unsigned int glucat::DEFAULT_Log_Max_Outer_Steps = 256 |
const unsigned int glucat::DEFAULT_Mult_Matrix_Threshold = 8 |
const unsigned int glucat::DEFAULT_Products_Size_Threshold = 1 << 22 |
const double glucat::DEFAULT_TRUNCATION = std::numeric_limits<float>::epsilon() |
|
static |
Definition at line 70 of file long_double.h.
|
static |
Definition at line 69 of file long_double.h.
const double glucat::MS_PER_S = 1000.0 |
Timing constant: deprecated here - moved to test/timing.h.