inlib  1.2.0
Public Member Functions
inlib::a4::sqm< T > Class Template Reference
Inheritance diagram for inlib::a4::sqm< T >:
Inheritance graph
[legend]
Collaboration diagram for inlib::a4::sqm< T >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 sqm ()
virtual ~sqm ()
 sqm (const sqm &a_from)
sqmoperator= (const sqm &a_from)
void v00 (const T &a_value)
void v10 (const T &a_value)
void v20 (const T &a_value)
void v30 (const T &a_value)
void v01 (const T &a_value)
void v11 (const T &a_value)
void v21 (const T &a_value)
void v31 (const T &a_value)
void v02 (const T &a_value)
void v12 (const T &a_value)
void v22 (const T &a_value)
void v32 (const T &a_value)
void v03 (const T &a_value)
void v13 (const T &a_value)
void v23 (const T &a_value)
void v33 (const T &a_value)
v00 () const
v10 () const
v20 () const
v30 () const
v01 () const
v11 () const
v21 () const
v31 () const
v02 () const
v12 () const
v22 () const
v32 () const
v03 () const
v13 () const
v23 () const
v33 () const
virtual T determinant () const
bool invert (sqm< T > &a_result) const

Detailed Description

template<class T>
class inlib::a4::sqm< T >

Definition at line 80 of file a4.


Constructor & Destructor Documentation

template<class T>
inlib::a4::sqm< T >::sqm ( ) [inline]

Definition at line 82 of file a4.

template<class T>
virtual inlib::a4::sqm< T >::~sqm ( ) [inline, virtual]

Reimplemented from inlib::sqm< T >.

Definition at line 83 of file a4.

{}
template<class T>
inlib::a4::sqm< T >::sqm ( const sqm< T > &  a_from) [inline]

Definition at line 85 of file a4.

: inlib::sqm<T>(a_from){}

Member Function Documentation

template<class T>
virtual T inlib::a4::sqm< T >::determinant ( ) const [inline, virtual]

Reimplemented from inlib::sqm< T >.

Definition at line 131 of file a4.

                                {
    T e00 =  D33(v11(),v12(),v13(),
                      v21(),v22(),v23(),
                      v31(),v32(),v33());
    T e01 = -D33(v01(),v02(),v03(),
                      v21(),v22(),v23(),
                      v31(),v32(),v33());
    T e02 =  D33(v01(),v02(),v03(),
                      v11(),v12(),v13(),
                      v31(),v32(),v33());
    T e03 = -D33(v01(),v02(),v03(),
                      v11(),v12(),v13(),
                      v21(),v22(),v23());
                  
    return (  v00() * e00
            + v10() * e01
            + v20() * e02
            + v30() * e03);
  }
template<class T>
bool inlib::a4::sqm< T >::invert ( sqm< T > &  a_result) const [inline]

Definition at line 151 of file a4.

                                      {
    // Twice faster than the generic invertion method.
    a_result.v00(
      D33(v11(),v12(),v13(),
          v21(),v22(),v23(),
        v31(),v32(),v33()));
    a_result.v01(
      -D33(v01(),v02(),v03(),
         v21(),v22(),v23(),
           v31(),v32(),v33()));
    a_result.v02(
      D33(v01(),v02(),v03(),
          v11(),v12(),v13(),
        v31(),v32(),v33()));
    a_result.v03(
     -D33(v01(),v02(),v03(),
          v11(),v12(),v13(),
        v21(),v22(),v23()));
                    
    T deter =
        v00() * a_result.v00()
      + v10() * a_result.v01()
      + v20() * a_result.v02()
      + v30() * a_result.v03();
  
    if(deter==array<T>::zero()) return false;
                    
    a_result.v10(
     -D33(v10(),v12(),v13(),
          v20(),v22(),v23(),
          v30(),v32(),v33()));
    a_result.v11(
      D33(v00(),v02(),v03(),
        v20(),v22(),v23(),
        v30(),v32(),v33()));
    a_result.v12(
     -D33(v00(),v02(),v03(),
          v10(),v12(),v13(),
        v30(),v32(),v33()));
    a_result.v13(
      D33(v00(),v02(),v03(),
        v10(),v12(),v13(),
        v20(),v22(),v23()));
                    
    a_result.v20(
      D33(v10(),v11(),v13(),
        v20(),v21(),v23(),
        v30(),v31(),v33()));
    a_result.v21(
     -D33(v00(),v01(),v03(),
        v20(),v21(),v23(),
        v30(),v31(),v33()));
    a_result.v22(
      D33(v00(),v01(),v03(),
        v10(),v11(),v13(),
        v30(),v31(),v33()));
    a_result.v23(
     -D33(v00(),v01(),v03(),
        v10(),v11(),v13(),
        v20(),v21(),v23()));
                    
    a_result.v30(
     -D33(v10(),v11(),v12(),
        v20(),v21(),v22(),
        v30(),v31(),v32()));
    a_result.v31(
      D33(v00(),v01(),v02(),
        v20(),v21(),v22(),
        v30(),v31(),v32()));
    a_result.v32(
     -D33(v00(),v01(),v02(),
        v10(),v11(),v12(),
        v30(),v31(),v32()));
    a_result.v33(
      D33(v00(),v01(),v02(),
        v10(),v11(),v12(),
        v20(),v21(),v22()));
  
    a_result.multiply(1./deter);  
  
    return true;
  }
template<class T>
sqm& inlib::a4::sqm< T >::operator= ( const sqm< T > &  a_from) [inline]

Definition at line 86 of file a4.

                                    {
    inlib::sqm<T>::operator=(a_from);
    return *this;
  }
template<class T>
void inlib::a4::sqm< T >::v00 ( const T &  a_value) [inline]

Definition at line 91 of file a4.

{array<T>::m_vector[0+0*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v00 ( ) const [inline]

Definition at line 111 of file a4.

{return array<T>::m_vector[0+0*4];}
template<class T>
void inlib::a4::sqm< T >::v01 ( const T &  a_value) [inline]

Definition at line 96 of file a4.

{array<T>::m_vector[0+1*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v01 ( ) const [inline]

Definition at line 116 of file a4.

{return array<T>::m_vector[0+1*4];}
template<class T>
void inlib::a4::sqm< T >::v02 ( const T &  a_value) [inline]

Definition at line 101 of file a4.

{array<T>::m_vector[0+2*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v02 ( ) const [inline]

Definition at line 121 of file a4.

{return array<T>::m_vector[0+2*4];}
template<class T>
void inlib::a4::sqm< T >::v03 ( const T &  a_value) [inline]

Definition at line 106 of file a4.

{array<T>::m_vector[0+3*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v03 ( ) const [inline]

Definition at line 126 of file a4.

{return array<T>::m_vector[0+3*4];}
template<class T>
void inlib::a4::sqm< T >::v10 ( const T &  a_value) [inline]

Definition at line 92 of file a4.

{array<T>::m_vector[1+0*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v10 ( ) const [inline]

Definition at line 112 of file a4.

{return array<T>::m_vector[1+0*4];}
template<class T>
void inlib::a4::sqm< T >::v11 ( const T &  a_value) [inline]

Definition at line 97 of file a4.

{array<T>::m_vector[1+1*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v11 ( ) const [inline]

Definition at line 117 of file a4.

{return array<T>::m_vector[1+1*4];}
template<class T>
void inlib::a4::sqm< T >::v12 ( const T &  a_value) [inline]

Definition at line 102 of file a4.

{array<T>::m_vector[1+2*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v12 ( ) const [inline]

Definition at line 122 of file a4.

{return array<T>::m_vector[1+2*4];}
template<class T>
void inlib::a4::sqm< T >::v13 ( const T &  a_value) [inline]

Definition at line 107 of file a4.

{array<T>::m_vector[1+3*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v13 ( ) const [inline]

Definition at line 127 of file a4.

{return array<T>::m_vector[1+3*4];}
template<class T>
void inlib::a4::sqm< T >::v20 ( const T &  a_value) [inline]

Definition at line 93 of file a4.

{array<T>::m_vector[2+0*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v20 ( ) const [inline]

Definition at line 113 of file a4.

{return array<T>::m_vector[2+0*4];}
template<class T>
void inlib::a4::sqm< T >::v21 ( const T &  a_value) [inline]

Definition at line 98 of file a4.

{array<T>::m_vector[2+1*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v21 ( ) const [inline]

Definition at line 118 of file a4.

{return array<T>::m_vector[2+1*4];}
template<class T>
void inlib::a4::sqm< T >::v22 ( const T &  a_value) [inline]

Definition at line 103 of file a4.

{array<T>::m_vector[2+2*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v22 ( ) const [inline]

Definition at line 123 of file a4.

{return array<T>::m_vector[2+2*4];}
template<class T>
void inlib::a4::sqm< T >::v23 ( const T &  a_value) [inline]

Definition at line 108 of file a4.

{array<T>::m_vector[2+3*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v23 ( ) const [inline]

Definition at line 128 of file a4.

{return array<T>::m_vector[2+3*4];}
template<class T>
void inlib::a4::sqm< T >::v30 ( const T &  a_value) [inline]

Definition at line 94 of file a4.

{array<T>::m_vector[3+0*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v30 ( ) const [inline]

Definition at line 114 of file a4.

{return array<T>::m_vector[3+0*4];}
template<class T>
void inlib::a4::sqm< T >::v31 ( const T &  a_value) [inline]

Definition at line 99 of file a4.

{array<T>::m_vector[3+1*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v31 ( ) const [inline]

Definition at line 119 of file a4.

{return array<T>::m_vector[3+1*4];}
template<class T>
void inlib::a4::sqm< T >::v32 ( const T &  a_value) [inline]

Definition at line 104 of file a4.

{array<T>::m_vector[3+2*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v32 ( ) const [inline]

Definition at line 124 of file a4.

{return array<T>::m_vector[3+2*4];}
template<class T>
void inlib::a4::sqm< T >::v33 ( const T &  a_value) [inline]

Definition at line 109 of file a4.

{array<T>::m_vector[3+3*4] = a_value;}
template<class T>
T inlib::a4::sqm< T >::v33 ( ) const [inline]

Definition at line 129 of file a4.

{return array<T>::m_vector[3+3*4];}

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines