Index

C++ Code Documentation

loop::Loop1

File: LAB/loop/Loop1.H

Class Loop1 represents an complex laurent series.

public:
  • inline Loop1(uint polylen);
    void constructor
  • inline Loop1( Loop1 const & );
    copy constructor
  • virtual ~Loop1();
    destructor
  • inline Loop1 &operator=( Loop1 const & );
    assignment operator
  • uint size() const;
  • uint polylen() const;
  • inline void clear();
    *this = 0
  • base::Array<Complex> &data();
    data access
  • base::Array<Complex> const &data() const;
  • inline Complex &operator[]( int n );
  • inline Complex const &operator[]( int n ) const;
  • inline void allocate( uint polylen );
  • inline void chop();
  • void conj( Loop1 const &a );
    *this = conj(a) ( Sum[a_k t^k] -> Sum[conj(a_k) t^(-k)]
  • inline void conj();
    *this = conj(*this)
  • inline void make_real();
  • inline void neg( Loop1 const &a );
    *this = -a
  • inline void neg();
    *this = -*this
  • inline void add( Loop1 const &a, Loop1 const &b );
    *this = a + b
  • inline void add( Loop1 const &a );
    *this += a
  • inline void sub( Loop1 const &a, Loop1 const &b );
    *this = a - b
  • inline void sub( Loop1 const &a );
    *this -= a
  • inline void mul( Complex const &r, Loop1 const &a );
    *this = r * a (Complex r, Loop1 a)
  • inline void mul( Complex const &r );
    *this *= r (Complex r)
  • inline void mul( Real const &r, Loop1 const & );
    *this = r * a (real r, Loop1 a)
  • inline void mul( Real const &r );
    *this *= r (real r)
  • inline void mul( Loop1 const &a );
    *this *= a (Loop1 a)
  • void mul( Loop1 const &a, Loop1 const &b );
    *this = a * b (Loop1 a, Loop1 b)
  • void mul( Loop1 const &a, Loop1 const &b, int n1, int n2 );
    *this = a * b, optimized according to the range of b
  • void mul( Complex const &r, Loop1 const &a, int shift );
    *this = r * a (where a is shifted by shift)
  • void mul_add( Complex const &r, Loop1 const &a, int shift );
    *this += r * a (where a is shifted by shift)
  • inline void mul_add( Loop1 const &a, Complex const &r, Loop1 const &b );
    *this = a + r * b
  • inline void mul_add( Complex const &r, Loop1 const &a );
    *this += r * a
  • inline void make_positive();
    set all coefficients of t^i (i<0) to 0
  • inline void make_negative();
    set all coefficients of t^i (i>0) to 0
  • inline void inv_pos( Loop1 const &a );
    *this = inverse(a) (a must be postive)
  • inline void inv_pos();
    *this = inverse(*this) (*this must be postive)
  • inline void sqrt_pos( Loop1 const &a );
    *this = sqrt(a) (*this must be postive)
  • inline void sqrt_pos();
    *this = sqrt(*this) (*this must be postive)
  • void eval( Complex &r, Complex const &lambda ) const;
  • void eval( Complex &r, Complex &dr, Complex const &lambda ) const;
    evaluates (*this) and d(*this)/dt at lambda=exp(it) deriv is with respect to t, not lambda p = X.len-1 X.len is not Loop len, but the raw length X = X[0] lambda^-p + X[1] lambda^(-p+2) + ... + X[i] lambda^(2i-p) + ... + X[p] lambda^p
  • inline Real norm();
  • friend inline void inner_product( Complex &r, Loop1 const &a, Loop1 const &b );
    r = a . conj(b)
  • friend void inner_product_shift( Complex &, Loop1 const &, int sa, Loop1 const &, int sb );
    r = shift(a,sa) . conj( shift(b.sb) ) used by Iwasawa decomposition (Cholesky)
  • friend std::ostream &operator<<( std::ostream &, Loop1 const & );
    print
  • void print( std::ostream & ) const;
    full-precision print
  • void printM( std::ostream & ) const;
    print in Mathematica array format
  • void printC( std::ostream & ) const;
protected:
private:
  • uint _polylen;
  • base::Array<Complex> _data;
  • static void inv_pos_static( Loop1 &x, Loop1 const &a );
    x = inv(a) (*this must be postive)
  • static void sqrt_pos_static( Loop1 &x, Loop1 const &a );
    x = sqrt(a) (*this must be postive)


loop::Loop1 GANG