glucat 0.12.0
|
Namespaces | |
namespace | gen |
namespace | matrix |
namespace | 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,Tune_P> 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,Tune_P> 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 > |
Typedefs | |
using | index_t = int |
Size of index_t should be enough to represent LO, HI. | |
using | set_value_t = unsigned long |
Size of set_value_t should be enough to contain index_set<LO,HI> | |
typedef int(* | intfn) () |
For exception catching: pointer to function returning int. | |
typedef int(* | intintfn) (int) |
For exception catching: pointer to function of int returning int. | |
using | tuning_slow |
using | tuning_naive |
using | tuning_fast |
Functions | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator!= (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> bool |
Test for inequality of multivectors. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator!= (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const Scalar_T &scr) -> bool |
Test for inequality of multivector and scalar. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator!= (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI, Tune_P > &rhs) -> bool |
Test for inequality of scalar and multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | error_squared_tol (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Quadratic norm error tolerance relative to a specific multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | error_squared (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs, const Scalar_T threshold) -> Scalar_T |
Relative or absolute error using the quadratic norm. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | approx_equal (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs, const Scalar_T threshold, const Scalar_T tolerance) -> bool |
Test for approximate equality of multivectors. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | approx_equal (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> bool |
Test for approximate equality of multivectors. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator+ (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const Scalar_T &scr) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric sum of multivector and scalar. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator+ (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric sum of scalar and multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator+ (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric sum. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator- (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const Scalar_T &scr) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric difference of multivector and scalar. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator- (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric difference of scalar and multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator- (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric difference. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator* (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const Scalar_T &scr) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Product of multivector and scalar. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator* (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Product of scalar and multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator* (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric product. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator^ (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Outer product. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator& (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inner product. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator% (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Left contraction. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | star (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> Scalar_T |
Hestenes scalar product. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator/ (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const Scalar_T &scr) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Quotient of multivector and scalar. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator/ (const Scalar_T &scr, const Multivector< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Quotient of scalar and multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator/ (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric quotient. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator| (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Transformation via twisted adjoint action. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | inv (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Geometric multiplicative inverse. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | pow (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, int rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Integer power of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, template< typename, const index_t, const index_t, typename > class RHS, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | pow (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, const RHS< Scalar_T, LO, HI, Tune_P > &rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Multivector power of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | outer_pow (const Multivector< Scalar_T, LO, HI, Tune_P > &lhs, int rhs) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Outer product power of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | scalar (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Scalar part. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | real (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Real part: synonym for scalar part. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | imag (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Imaginary part: deprecated (always 0) | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | pure (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Pure part. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | even (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Even part. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | odd (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Odd part. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | vector_part (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const std::vector< Scalar_T > |
Vector part of multivector, as a vector_t with respect to frame() | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | involute (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Main involution, each {i} is replaced by -{i} in each term, eg. {1}*{2} -> (-{2})*(-{1}) | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | reverse (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Reversion, eg. {1}*{2} -> {2}*{1}. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | conj (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Conjugation, rev o invo == invo o rev. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | quad (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Scalar_T quadratic form == (rev(x)*x)(0) | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | norm (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Scalar_T norm == sum of norm of coordinates. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | abs (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Absolute value == sqrt(norm) | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | max_abs (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> Scalar_T |
Maximum of absolute values of components of multivector: multivector infinity norm. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | complexifier (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Square root of -1 which commutes with all members of the frame of the given multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | elliptic (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | sqrt (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Square root of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | sqrt (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Square root of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | clifford_exp (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Exponential of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | log (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Natural logarithm of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | log (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Natural logarithm of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | cos (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Cosine of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | cos (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Cosine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | acos (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse cosine of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | acos (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse cosine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | cosh (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Hyperbolic cosine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | acosh (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse hyperbolic cosine of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | acosh (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse hyperbolic cosine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | sin (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Sine of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | sin (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Sine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | asin (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse sine of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | asin (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse sine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | sinh (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Hyperbolic sine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | asinh (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse hyperbolic sine of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | asinh (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse hyperbolic sine of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | tan (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Tangent of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | tan (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Tangent of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | atan (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse tangent of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | atan (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse tangent of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | tanh (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Hyperbolic tangent of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | atanh (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse hyperbolic tangent of multivector with specified complexifier. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | atanh (const Multivector< Scalar_T, LO, HI, Tune_P > &val) -> const Multivector< Scalar_T, LO, HI, Tune_P > |
Inverse hyperbolic tangent of multivector. | |
template<template< typename, const index_t, const index_t, typename > class Multivector, typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
static void | check_complex (const Multivector< Scalar_T, LO, HI, Tune_P > &val, const Multivector< Scalar_T, LO, HI, Tune_P > &i, const bool prechecked=false) |
Check that i is a valid complexifier for val. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator* (const framed_multi< Scalar_T, LO, HI, Tune_P > &lhs, const framed_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Geometric product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator^ (const framed_multi< Scalar_T, LO, HI, Tune_P > &lhs, const framed_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Outer product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator& (const framed_multi< Scalar_T, LO, HI, Tune_P > &lhs, const framed_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Inner product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator% (const framed_multi< Scalar_T, LO, HI, Tune_P > &lhs, const framed_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Left contraction. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | star (const framed_multi< Scalar_T, LO, HI, Tune_P > &lhs, const framed_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> Scalar_T |
Hestenes scalar product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator/ (const framed_multi< Scalar_T, LO, HI, Tune_P > &lhs, const framed_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Geometric quotient. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator| (const framed_multi< Scalar_T, LO, HI, Tune_P > &lhs, const framed_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Transformation via twisted adjoint action. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator>> (std::istream &s, framed_multi< Scalar_T, LO, HI, Tune_P > &val) -> std::istream & |
Read multivector from input. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator<< (std::ostream &os, const framed_multi< Scalar_T, LO, HI, Tune_P > &val) -> std::ostream & |
Write multivector to output. | |
template<typename Scalar_T , const index_t LO, const index_t HI> | |
auto | operator<< (std::ostream &os, const std::pair< const index_set< LO, HI >, Scalar_T > &term) -> std::ostream & |
Write term to output. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | exp (const framed_multi< Scalar_T, LO, HI, Tune_P > &val) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Exponential of multivector. | |
template<typename Scalar_T , const index_t LO, const index_t HI> | |
static auto | 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) -> Scalar_T |
Coordinate of product of terms. | |
template<typename Scalar_T , const index_t LO, const index_t HI> | |
auto | operator* (const std::pair< const index_set< LO, HI >, Scalar_T > &lhs, const std::pair< const index_set< LO, HI >, Scalar_T > &rhs) -> const std::pair< const index_set< LO, HI >, Scalar_T > |
Product of terms. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | sqrt (const framed_multi< Scalar_T, LO, HI, Tune_P > &val, const framed_multi< Scalar_T, LO, HI, Tune_P > &i, bool prechecked) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Square root of multivector with specified complexifier. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | log (const framed_multi< Scalar_T, LO, HI, Tune_P > &val, const framed_multi< Scalar_T, LO, HI, Tune_P > &i, bool prechecked) -> const framed_multi< Scalar_T, LO, HI, Tune_P > |
Natural logarithm of multivector with specified complexifier. | |
template<typename Scalar_T , const index_t LO, const index_t HI> | |
static auto | 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) -> Scalar_T |
Coordinate of product of terms. | |
_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. | |
_GLUCAT_CTAssert (_GLUCAT_BITS_PER_ULONG==BITS_PER_SET_VALUE, BitsPerULongDoesNotMatchSetValueT) const index_t DEFAULT_LO | |
Default lowest index in an index set. | |
template<typename LHS_T , typename RHS_T > | |
auto | pos_mod (LHS_T lhs, RHS_T rhs) -> LHS_T |
Modulo function which works reliably for lhs < 0. | |
template<const index_t LO, const index_t HI> | |
auto | operator^ (const index_set< LO, HI > &lhs, const index_set< LO, HI > &rhs) -> const index_set< LO, HI > |
Symmetric set difference: exclusive or. | |
template<const index_t LO, const index_t HI> | |
auto | operator& (const index_set< LO, HI > &lhs, const index_set< LO, HI > &rhs) -> const index_set< LO, HI > |
Set intersection: and. | |
template<const index_t LO, const index_t HI> | |
auto | operator| (const index_set< LO, HI > &lhs, const index_set< LO, HI > &rhs) -> const index_set< LO, HI > |
Set union: or. | |
template<const index_t LO, const index_t HI> | |
auto | compare (const index_set< LO, HI > &a, const index_set< LO, HI > &b) -> int |
"lexicographic compare" eg. {3,4,5} is less than {3,7,8} | |
_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> | |
const index_t HI auto | operator<< (std::ostream &os, const index_set< LO, HI > &ist) -> std::ostream & |
template<const index_t LO, const index_t HI> | |
auto | operator>> (std::istream &s, index_set< LO, HI > &ist) -> std::istream & |
Read in index set. | |
auto | sign_of_square (index_t j) -> int |
Square of generator {j}. | |
template<const index_t LO, const index_t HI> | |
auto | min_neg (const index_set< LO, HI > &ist) -> index_t |
Minimum negative index, or 0 if none. | |
template<const index_t LO, const index_t HI> | |
auto | max_pos (const index_set< LO, HI > &ist) -> index_t |
Maximum positive index, or 0 if none. | |
template<const index_t LO, const index_t HI> | |
auto | operator<< (std::ostream &os, const index_set< LO, HI > &ist) -> std::ostream & |
Write out index set. | |
static auto | inverse_reversed_gray (unsigned long x) -> unsigned long |
Inverse reversed Gray code. | |
static auto | inverse_gray (unsigned long x) -> unsigned long |
Inverse Gray code. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator* (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Geometric product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator^ (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Outer product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator& (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Inner product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator% (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Left contraction. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | star (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> Scalar_T |
Hestenes scalar product. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator/ (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Geometric quotient. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator| (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Transformation via twisted adjoint action. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator>> (std::istream &s, matrix_multi< Scalar_T, LO, HI, Tune_P > &val) -> std::istream & |
Read multivector from input. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | operator<< (std::ostream &os, const matrix_multi< Scalar_T, LO, HI, Tune_P > &val) -> std::ostream & |
Write multivector to output. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | reframe (const matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs, const matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs, matrix_multi< Scalar_T, LO, HI, Tune_P > &lhs_reframed, matrix_multi< Scalar_T, LO, HI, Tune_P > &rhs_reframed) -> const index_set< LO, HI > |
Find a common frame for operands of a binary operator. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | sqrt (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val, const matrix_multi< Scalar_T, LO, HI, Tune_P > &i, bool prechecked) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Square root of multivector with specified complexifier. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | matrix_sqrt (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val, const matrix_multi< Scalar_T, LO, HI, Tune_P > &i, const index_t level) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Square root of multivector with specified complexifier. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | log (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val, const matrix_multi< Scalar_T, LO, HI, Tune_P > &i, bool prechecked) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Natural logarithm of multivector with specified complexifier. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | matrix_log (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val, const matrix_multi< Scalar_T, LO, HI, Tune_P > &i, const index_t level) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Natural logarithm of multivector with specified complexifier. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
auto | exp (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Exponential of multivector. | |
auto | offset_level (const index_t p, const index_t q) -> index_t |
Determine the log2 dim corresponding to signature p, q. | |
template<typename Matrix_Index_T , const index_t LO, const index_t HI> | |
static auto | folded_dim (const index_set< LO, HI > &sub) -> Matrix_Index_T |
Determine the matrix dimension of the fold of a subalegbra. | |
template<typename Multivector_T , typename Matrix_T , typename Basis_Matrix_T > | |
static auto | fast (const Matrix_T &X, index_t level) -> Multivector_T |
Inverse generalized Fast Fourier Transform. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P , const size_t Size> | |
static auto | pade_approx (const std::array< Scalar_T, Size > &numer, const std::array< Scalar_T, Size > &denom, const matrix_multi< Scalar_T, LO, HI, Tune_P > &X) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Pade' approximation. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
static void | db_step (matrix_multi< Scalar_T, LO, HI, Tune_P > &M, matrix_multi< Scalar_T, LO, HI, Tune_P > &Y) |
Single step of product form of Denman-Beavers square root iteration. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
static auto | db_sqrt (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val, Scalar_T norm_tol=std::pow(std::numeric_limits< Scalar_T >::epsilon(), 4)) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Product form of Denman-Beavers square root iteration. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
static auto | cr_sqrt (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val, Scalar_T norm_Y_tol=std::pow(std::numeric_limits< Scalar_T >::epsilon(), 1)) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Cyclic reduction square root iteration. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
static auto | pade_log (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Pade' approximation of log. | |
template<typename Scalar_T , const index_t LO, const index_t HI, typename Tune_P > | |
static auto | cascade_log (const matrix_multi< Scalar_T, LO, HI, Tune_P > &val) -> const matrix_multi< Scalar_T, LO, HI, Tune_P > |
Incomplete square root cascade and Pade' approximation of log. | |
template<typename Scalar_T > | |
auto | log2 (const Scalar_T &x) -> Scalar_T |
Log base 2 of scalar. | |
template<typename Scalar_T > | |
auto | to_promote (const Scalar_T &val) -> typename numeric_traits< Scalar_T >::promoted::type |
Cast to promote. | |
template<typename Scalar_T > | |
auto | to_demote (const Scalar_T &val) -> typename numeric_traits< Scalar_T >::demoted::type |
Cast to demote. | |
int | try_catch (intfn f) |
Exception catching for functions returning int. | |
int | try_catch (intintfn f, int arg) |
Exception catching for functions of int returning int. | |
using glucat::index_t = int |
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.
using glucat::set_value_t = unsigned long |
using glucat::tuning_fast |
using glucat::tuning_naive |
using glucat::tuning_slow |
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 577 of file clifford_algebra_imp.h.
References glucat::numeric_traits< Scalar_T >::sqrt().
Referenced by PyClical.clifford::abs(), clifford_to_str(), matrix_log(), and matrix_sqrt().
|
inline |
Inverse cosine of multivector.
Definition at line 903 of file clifford_algebra_imp.h.
References acos(), and complexifier().
|
inline |
Inverse cosine of multivector with specified complexifier.
Definition at line 883 of file clifford_algebra_imp.h.
References acosh(), and check_complex().
Referenced by acos().
|
inline |
Inverse hyperbolic cosine of multivector.
Definition at line 844 of file clifford_algebra_imp.h.
References acosh(), and complexifier().
|
inline |
Inverse hyperbolic cosine of multivector with specified complexifier.
Definition at line 825 of file clifford_algebra_imp.h.
References check_complex(), log(), norm(), and sqrt().
|
inline |
Test for approximate equality of multivectors.
Definition at line 169 of file clifford_algebra_imp.h.
References approx_equal(), and error_squared_tol().
|
inline |
Test for approximate equality of multivectors.
Definition at line 154 of file clifford_algebra_imp.h.
References error_squared().
Referenced by approx_equal(), and matrix_sqrt().
|
inline |
Inverse sine of multivector.
Definition at line 1008 of file clifford_algebra_imp.h.
References asin(), and complexifier().
|
inline |
Inverse sine of multivector with specified complexifier.
Definition at line 988 of file clifford_algebra_imp.h.
References asinh(), and check_complex().
Referenced by asin().
|
inline |
Inverse hyperbolic sine of multivector.
Definition at line 949 of file clifford_algebra_imp.h.
References asinh(), and complexifier().
|
inline |
Inverse hyperbolic sine of multivector with specified complexifier.
Definition at line 930 of file clifford_algebra_imp.h.
References check_complex(), log(), norm(), and sqrt().
|
inline |
Inverse tangent of multivector.
Definition at line 1108 of file clifford_algebra_imp.h.
References atan(), and complexifier().
|
inline |
Inverse tangent of multivector with specified complexifier.
Definition at line 1088 of file clifford_algebra_imp.h.
References atanh(), and check_complex().
Referenced by atan().
|
inline |
Inverse hyperbolic tangent of multivector.
Definition at line 1052 of file clifford_algebra_imp.h.
References atanh(), and complexifier().
|
inline |
Inverse hyperbolic tangent of multivector with specified complexifier.
Definition at line 1035 of file clifford_algebra_imp.h.
References check_complex(), log(), and norm().
|
static |
Incomplete square root cascade and Pade' approximation of log.
Definition at line 1920 of file matrix_multi_imp.h.
References db_step(), epsilon, glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan(), norm(), and pade_log().
Referenced by matrix_log().
|
inlinestatic |
auto glucat::clifford_exp | ( | const Multivector< Scalar_T, LO, HI, Tune_P > & | val | ) | -> const Multivector<Scalar_T,LO,HI,Tune_P> |
Exponential of multivector.
Definition at line 690 of file clifford_algebra_imp.h.
References log2().
"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 574 of file index_set_imp.h.
|
inline |
Conjugation, rev o invo == invo o rev.
Definition at line 553 of file clifford_algebra_imp.h.
|
inline |
Cosine of multivector.
Definition at line 874 of file clifford_algebra_imp.h.
References complexifier(), and cos().
auto glucat::cos | ( | const Multivector< Scalar_T, LO, HI, Tune_P > & | val, |
const Multivector< Scalar_T, LO, HI, Tune_P > & | i, | ||
const bool | prechecked = false ) -> const Multivector<Scalar_T,LO,HI,Tune_P> |
Cosine of multivector with specified complexifier.
Definition at line 851 of file clifford_algebra_imp.h.
References check_complex(), and exp().
|
inline |
Hyperbolic cosine of multivector.
Definition at line 807 of file clifford_algebra_imp.h.
References exp().
Referenced by tanh().
|
static |
Cyclic reduction square root iteration.
Definition at line 1349 of file matrix_multi_imp.h.
References glucat::numeric_traits< Scalar_T >::NaN(), and norm().
Referenced by matrix_sqrt().
|
inlinestatic |
Coordinate of product of terms.
Referenced by operator%(), operator&(), operator*(), and operator^().
|
inlinestatic |
Coordinate of product of terms.
Definition at line 1709 of file framed_multi_imp.h.
|
static |
Product form of Denman-Beavers square root iteration.
Definition at line 1320 of file matrix_multi_imp.h.
References db_step(), and norm().
Referenced by matrix_sqrt().
|
inlinestatic |
Single step of product form of Denman-Beavers square root iteration.
Definition at line 1308 of file matrix_multi_imp.h.
References inv().
Referenced by cascade_log(), and db_sqrt().
|
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 643 of file clifford_algebra_imp.h.
References complexifier().
|
inline |
Relative or absolute error using the quadratic norm.
Definition at line 134 of file clifford_algebra_imp.h.
References norm().
Referenced by approx_equal().
auto glucat::error_squared_tol | ( | const Multivector< Scalar_T, LO, HI, Tune_P > & | val | ) | -> Scalar_T |
Quadratic norm error tolerance relative to a specific multivector.
Definition at line 112 of file clifford_algebra_imp.h.
References glucat::numeric_traits< Scalar_T >::pow().
Referenced by approx_equal().
|
inline |
Even part.
Definition at line 513 of file clifford_algebra_imp.h.
auto glucat::exp | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | val | ) | -> const framed_multi<Scalar_T,LO,HI,Tune_P> |
Exponential of multivector.
Definition at line 1750 of file framed_multi_imp.h.
References clifford_exp(), exp(), and scalar().
Referenced by cos(), cosh(), exp(), matrix_log(), matrix_sqrt(), pow(), sin(), and sinh().
auto glucat::exp | ( | const matrix_multi< Scalar_T, LO, HI, Tune_P > & | val | ) | -> const matrix_multi<Scalar_T,LO,HI,Tune_P> |
Exponential of multivector.
Definition at line 2086 of file matrix_multi_imp.h.
References clifford_exp(), glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan(), and glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::scalar().
|
static |
Inverse generalized Fast Fourier Transform.
Definition at line 1027 of file matrix_multi_imp.h.
References glucat::matrix::signed_perm_nork().
|
inlinestatic |
Determine the matrix dimension of the fold of a subalegbra.
Definition at line 101 of file matrix_multi_imp.h.
References offset_level().
|
inline |
Imaginary part: deprecated (always 0)
Definition at line 497 of file clifford_algebra_imp.h.
|
inline |
Geometric multiplicative inverse.
Definition at line 400 of file clifford_algebra_imp.h.
Referenced by db_step(), and matrix_log().
|
inlinestatic |
Inverse Gray code.
Definition at line 863 of file index_set_imp.h.
Referenced by glucat::index_set< LO, HI >::sign_of_mult().
|
inlinestatic |
Inverse reversed Gray code.
Definition at line 846 of file index_set_imp.h.
Referenced by glucat::index_set< LO, HI >::sign_of_mult().
|
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 537 of file clifford_algebra_imp.h.
auto glucat::log | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | val, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | i, | ||
bool | prechecked ) -> const framed_multi<Scalar_T,LO,HI,Tune_P> |
Natural logarithm of multivector with specified complexifier.
Definition at line 1800 of file framed_multi_imp.h.
References check_complex(), and log().
auto glucat::log | ( | const matrix_multi< Scalar_T, LO, HI, Tune_P > & | val, |
const matrix_multi< Scalar_T, LO, HI, Tune_P > & | i, | ||
bool | prechecked ) -> const matrix_multi<Scalar_T,LO,HI,Tune_P> |
Natural logarithm of multivector with specified complexifier.
Definition at line 2045 of file matrix_multi_imp.h.
References check_complex(), glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan(), and matrix_log().
|
inline |
Natural logarithm of multivector.
Definition at line 799 of file clifford_algebra_imp.h.
References complexifier(), and log().
|
inline |
|
inline |
Log base 2 of scalar.
Definition at line 303 of file scalar.h.
References glucat::numeric_traits< Scalar_T >::log2().
Referenced by clifford_exp().
auto glucat::matrix_log | ( | const matrix_multi< Scalar_T, LO, HI, Tune_P > & | val, |
const matrix_multi< Scalar_T, LO, HI, Tune_P > & | i, | ||
const index_t | level ) -> const matrix_multi<Scalar_T,LO,HI,Tune_P> |
Natural logarithm of multivector with specified complexifier.
Definition at line 1967 of file matrix_multi_imp.h.
References abs(), cascade_log(), glucat::matrix::classify_eigenvalues(), exp(), inv(), glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan(), matrix_log(), norm(), and glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::scalar().
Referenced by log(), and matrix_log().
auto glucat::matrix_sqrt | ( | const matrix_multi< Scalar_T, LO, HI, Tune_P > & | val, |
const matrix_multi< Scalar_T, LO, HI, Tune_P > & | i, | ||
const index_t | level ) -> const matrix_multi<Scalar_T,LO,HI,Tune_P> |
Square root of multivector with specified complexifier.
Definition at line 1571 of file matrix_multi_imp.h.
References abs(), approx_equal(), glucat::matrix::classify_eigenvalues(), cr_sqrt(), db_sqrt(), exp(), glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan(), matrix_sqrt(), norm(), pade_approx(), pow(), and glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::scalar().
Referenced by matrix_sqrt(), and sqrt().
|
inline |
Maximum of absolute values of components of multivector: multivector infinity norm.
Definition at line 585 of file clifford_algebra_imp.h.
Maximum positive index, or 0 if none.
Definition at line 977 of file index_set_imp.h.
Minimum negative index, or 0 if none.
Definition at line 970 of file index_set_imp.h.
|
inline |
Scalar_T norm == sum of norm of coordinates.
Definition at line 569 of file clifford_algebra_imp.h.
Referenced by acosh(), asinh(), atanh(), cascade_log(), cr_sqrt(), db_sqrt(), error_squared(), matrix_log(), and matrix_sqrt().
|
inline |
Odd part.
Definition at line 521 of file clifford_algebra_imp.h.
Referenced by glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::fast().
Determine the log2 dim corresponding to signature p, q.
Definition at line 86 of file matrix_multi_imp.h.
References pos_mod().
Referenced by glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::basis_element(), and folded_dim().
|
inline |
Test for inequality of multivectors.
Definition at line 86 of file clifford_algebra_imp.h.
|
inline |
Test for inequality of multivector and scalar.
Definition at line 94 of file clifford_algebra_imp.h.
|
inline |
Test for inequality of scalar and multivector.
Definition at line 102 of file clifford_algebra_imp.h.
auto glucat::operator% | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | lhs, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | rhs ) -> const framed_multi<Scalar_T,LO,HI,Tune_P> |
Left contraction.
Definition at line 597 of file framed_multi_imp.h.
References _GLUCAT_HASH_SIZE_T, and crd_of_mult().
|
inline |
Left contraction.
Definition at line 581 of file matrix_multi_imp.h.
|
inline |
Left contraction.
Definition at line 322 of file clifford_algebra_imp.h.
auto glucat::operator& | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | lhs, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | rhs ) -> const framed_multi<Scalar_T,LO,HI,Tune_P> |
Inner product.
Definition at line 495 of file framed_multi_imp.h.
References _GLUCAT_HASH_SIZE_T, and crd_of_mult().
|
inline |
Set intersection: and.
Definition at line 186 of file index_set_imp.h.
|
inline |
Inner product.
Definition at line 562 of file matrix_multi_imp.h.
|
inline |
Inner product.
Definition at line 307 of file clifford_algebra_imp.h.
auto glucat::operator* | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | lhs, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | rhs ) -> const framed_multi<Scalar_T,LO,HI,Tune_P> |
Geometric product.
Definition at line 374 of file framed_multi_imp.h.
References _GLUCAT_HASH_SIZE_T.
|
inline |
Geometric product.
Definition at line 502 of file matrix_multi_imp.h.
References glucat::numeric_traits< Scalar_T >::NaN(), and reframe().
|
inline |
Geometric product.
Definition at line 277 of file clifford_algebra_imp.h.
|
inline |
Product of multivector and scalar.
Definition at line 251 of file clifford_algebra_imp.h.
|
inline |
Product of scalar and multivector.
Definition at line 262 of file clifford_algebra_imp.h.
|
inline |
Geometric sum.
Definition at line 206 of file clifford_algebra_imp.h.
|
inline |
Geometric sum of multivector and scalar.
Definition at line 181 of file clifford_algebra_imp.h.
|
inline |
Geometric sum of scalar and multivector.
Definition at line 192 of file clifford_algebra_imp.h.
|
inline |
Geometric difference.
Definition at line 240 of file clifford_algebra_imp.h.
|
inline |
Geometric difference of multivector and scalar.
Definition at line 217 of file clifford_algebra_imp.h.
|
inline |
Geometric difference of scalar and multivector.
Definition at line 228 of file clifford_algebra_imp.h.
|
inline |
Geometric quotient.
Definition at line 734 of file framed_multi_imp.h.
auto glucat::operator/ | ( | const matrix_multi< Scalar_T, LO, HI, Tune_P > & | lhs, |
const matrix_multi< Scalar_T, LO, HI, Tune_P > & | rhs ) -> const matrix_multi<Scalar_T,LO,HI,Tune_P> |
Geometric quotient.
Definition at line 614 of file matrix_multi_imp.h.
References glucat::matrix::isnan(), and reframe().
|
inline |
Geometric quotient.
Definition at line 374 of file clifford_algebra_imp.h.
|
inline |
Quotient of multivector and scalar.
Definition at line 348 of file clifford_algebra_imp.h.
|
inline |
Quotient of scalar and multivector.
Definition at line 359 of file clifford_algebra_imp.h.
auto glucat::operator<< | ( | std::ostream & | os, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | val ) -> std::ostream& |
Write multivector to output.
Definition at line 1148 of file framed_multi_imp.h.
References scalar().
const index_t HI auto glucat::operator<< | ( | std::ostream & | os, |
const index_set< LO, HI > & | ist ) -> std::ostream & |
auto glucat::operator<< | ( | std::ostream & | os, |
const index_set< LO, HI > & | ist ) -> std::ostream& |
Write out index set.
Definition at line 611 of file index_set_imp.h.
|
inline |
Write multivector to output.
Definition at line 955 of file matrix_multi_imp.h.
auto glucat::operator<< | ( | std::ostream & | os, |
const std::pair< const index_set< LO, HI >, Scalar_T > & | term ) -> std::ostream& |
Write term to output.
Definition at line 1209 of file framed_multi_imp.h.
References glucat::numeric_traits< Scalar_T >::to_double().
auto glucat::operator>> | ( | std::istream & | s, |
framed_multi< Scalar_T, LO, HI, Tune_P > & | val ) -> std::istream& |
Read multivector from input.
Definition at line 1248 of file framed_multi_imp.h.
auto glucat::operator>> | ( | std::istream & | s, |
index_set< LO, HI > & | ist ) -> std::istream& |
Read in index set.
Definition at line 634 of file index_set_imp.h.
|
inline |
Read multivector from input.
Definition at line 966 of file matrix_multi_imp.h.
auto glucat::operator^ | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | lhs, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | rhs ) -> const framed_multi<Scalar_T,LO,HI,Tune_P> |
Outer product.
Definition at line 416 of file framed_multi_imp.h.
References _GLUCAT_HASH_SIZE_T, and crd_of_mult().
|
inline |
Symmetric set difference: exclusive or.
Definition at line 161 of file index_set_imp.h.
|
inline |
Outer product.
Definition at line 543 of file matrix_multi_imp.h.
|
inline |
Outer product.
Definition at line 292 of file clifford_algebra_imp.h.
|
inline |
Transformation via twisted adjoint action.
Definition at line 760 of file framed_multi_imp.h.
|
inline |
Set union: or.
Definition at line 211 of file index_set_imp.h.
|
inline |
Transformation via twisted adjoint action.
Definition at line 717 of file matrix_multi_imp.h.
|
inline |
Transformation via twisted adjoint action.
Definition at line 389 of file clifford_algebra_imp.h.
auto glucat::outer_pow | ( | const Multivector< Scalar_T, LO, HI, Tune_P > & | lhs, |
int | rhs ) -> const Multivector<Scalar_T,LO,HI,Tune_P> |
Outer product power of multivector.
Definition at line 470 of file clifford_algebra_imp.h.
|
inlinestatic |
Pade' approximation.
Definition at line 1245 of file matrix_multi_imp.h.
Referenced by matrix_sqrt(), and pade_log().
|
static |
Pade' approximation of log.
Definition at line 1900 of file matrix_multi_imp.h.
References glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan(), and pade_approx().
Referenced by cascade_log().
|
inline |
Modulo function which works reliably for lhs < 0.
Definition at line 117 of file global.h.
Referenced by complexifier(), glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::fast_framed_multi(), glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::fast_matrix_multi(), glucat::gen::generator_table< Matrix_T >::gen_vector(), offset_level(), and glucat::gen::generator_table< Matrix_T >::operator()().
|
inline |
Multivector power of multivector.
Definition at line 446 of file clifford_algebra_imp.h.
auto glucat::pow | ( | const Multivector< Scalar_T, LO, HI, Tune_P > & | lhs, |
int | rhs ) -> const Multivector<Scalar_T,LO,HI,Tune_P> |
Integer power of multivector.
Definition at line 407 of file clifford_algebra_imp.h.
Referenced by matrix_sqrt().
|
inline |
Pure part.
Definition at line 505 of file clifford_algebra_imp.h.
|
inline |
Scalar_T quadratic form == (rev(x)*x)(0)
Definition at line 561 of file clifford_algebra_imp.h.
|
inline |
Real part: synonym for scalar part.
Definition at line 486 of file clifford_algebra_imp.h.
|
inline |
Find a common frame for operands of a binary operator.
Definition at line 345 of file matrix_multi_imp.h.
Referenced by operator*(), and operator/().
|
inline |
Reversion, eg. {1}*{2} -> {2}*{1}.
Definition at line 545 of file clifford_algebra_imp.h.
|
inline |
Scalar part.
Definition at line 478 of file clifford_algebra_imp.h.
Referenced by exp(), glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::fast(), and operator<<().
|
inline |
Square of generator {j}.
Square of generator index j.
Definition at line 963 of file index_set_imp.h.
|
inline |
Sine of multivector.
Definition at line 979 of file clifford_algebra_imp.h.
References complexifier(), and sin().
auto glucat::sin | ( | const Multivector< Scalar_T, LO, HI, Tune_P > & | val, |
const Multivector< Scalar_T, LO, HI, Tune_P > & | i, | ||
const bool | prechecked = false ) -> const Multivector<Scalar_T,LO,HI,Tune_P> |
Sine of multivector with specified complexifier.
Definition at line 956 of file clifford_algebra_imp.h.
References check_complex(), and exp().
|
inline |
Hyperbolic sine of multivector.
Definition at line 911 of file clifford_algebra_imp.h.
References exp().
Referenced by tanh().
auto glucat::sqrt | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | val, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | i, | ||
bool | prechecked ) -> const framed_multi<Scalar_T,LO,HI,Tune_P> |
Square root of multivector with specified complexifier.
Definition at line 1727 of file framed_multi_imp.h.
References check_complex(), and sqrt().
auto glucat::sqrt | ( | const matrix_multi< Scalar_T, LO, HI, Tune_P > & | val, |
const matrix_multi< Scalar_T, LO, HI, Tune_P > & | i, | ||
bool | prechecked ) -> const matrix_multi<Scalar_T,LO,HI,Tune_P> |
Square root of multivector with specified complexifier.
Definition at line 1667 of file matrix_multi_imp.h.
References check_complex(), glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan(), and matrix_sqrt().
|
inline |
Square root of multivector.
Definition at line 683 of file clifford_algebra_imp.h.
References complexifier(), and sqrt().
|
inline |
auto glucat::star | ( | const framed_multi< Scalar_T, LO, HI, Tune_P > & | lhs, |
const framed_multi< Scalar_T, LO, HI, Tune_P > & | rhs ) -> Scalar_T |
Hestenes scalar product.
Definition at line 684 of file framed_multi_imp.h.
|
inline |
Hestenes scalar product.
Definition at line 600 of file matrix_multi_imp.h.
|
inline |
Hestenes scalar product.
Definition at line 337 of file clifford_algebra_imp.h.
References star().
Referenced by star().
|
inline |
Tangent of multivector.
Definition at line 1079 of file clifford_algebra_imp.h.
References complexifier(), and tan().
|
inline |
Tangent of multivector with specified complexifier.
Definition at line 1060 of file clifford_algebra_imp.h.
References check_complex(), cos(), and sin().
Referenced by tan().
|
inline |
Hyperbolic tangent of multivector.
Definition at line 1016 of file clifford_algebra_imp.h.
|
inline |
Cast to demote.
Definition at line 135 of file scalar_imp.h.
References glucat::numeric_traits< Scalar_T >::to_scalar_t().
|
inline |
Cast to promote.
Definition at line 125 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.
Referenced by glucat::control_t::call(), and 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.
|
inline |
Vector part of multivector, as a vector_t with respect to frame()
Definition at line 529 of file clifford_algebra_imp.h.
const index_t glucat::BITS_PER_SET_VALUE = std::numeric_limits<set_value_t>::digits |
const index_t glucat::DEFAULT_HI = index_t(BITS_PER_SET_VALUE / 2) |
|
static |
Definition at line 44 of file long_double.h.
Referenced by glucat::numeric_traits< Scalar_T >::ln_2().
|
static |
Definition at line 43 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.
const unsigned int glucat::Tuning_Fast_CR_Sqrt_Max_Steps = 256 |
const unsigned int glucat::Tuning_Fast_DB_Sqrt_Max_Steps = 256 |
const unsigned int glucat::Tuning_Fast_Fast_Size_Threshold = 0 |
const unsigned int glucat::Tuning_Fast_Inv_Fast_Dim_Threshold = 0 |
const unsigned int glucat::Tuning_Fast_Log_Max_Inner_Steps = 8 |
const unsigned int glucat::Tuning_Fast_Log_Max_Outer_Steps = 16 |
const unsigned int glucat::Tuning_Fast_Mult_Matrix_Threshold = 0 |
const unsigned int glucat::Tuning_Fast_Products_Size_Threshold = 0 |
const unsigned int glucat::Tuning_Int_Digits = std::numeric_limits<int>::digits |
const unsigned int glucat::Tuning_Max_Threshold = 1 << Tuning_Int_Digits |
const unsigned int glucat::Tuning_Naive_Basis_Max_Count = Tuning_Max_Threshold |
const unsigned int glucat::Tuning_Naive_Fast_Size_Threshold = Tuning_Max_Threshold |
const unsigned int glucat::Tuning_Naive_Inv_Fast_Dim_Threshold = Tuning_Max_Threshold |
const unsigned int glucat::Tuning_Naive_Mult_Matrix_Threshold = 0 |
const unsigned int glucat::Tuning_Slow_Fast_Size_Threshold = Tuning_Max_Threshold |
const unsigned int glucat::Tuning_Slow_Inv_Fast_Dim_Threshold = Tuning_Max_Threshold |
const unsigned int glucat::Tuning_Slow_Mult_Matrix_Threshold = Tuning_Max_Threshold |
const unsigned int glucat::Tuning_Slow_Products_Size_Threshold = Tuning_Max_Threshold |