RVector RMatrix :: operator * (const RVector& v)
 {
    integer incx = 1;
    integer m    = attr_numberOfRows;
    integer n    = attr_numberOfColumns;
    integer lda  = attr_numberOfRows;
    
	RVector result (attr_numberOfRows);

	// dgemv ( correctChar(), &m, &n, (LongReal*) &(Complex::complexUnit), (LongReal*) (&_pelm[0]), 
        //     &lda, (LongReal*) &v(0), &incx, (LongReal*) &(Complex::complexNull), 
        //     (LongReal*)&result(0), &incx
        //   );
	TensorCalculus::Blas<double>::gemv ( *correctChar(), m, n, 1.0, (&_pelm[0]), 
            lda, &v(0), incx, 0.0, &result(0), incx);

        clearTranspose();
   return result;
 }
bool RMatrix::operator () (const LongInt& i, RVector& w, const LongInt& j, const RVector& v)
 {
    bool value = true;

    integer incx = 1;
    integer m    = numberOfRows();
    integer n    = numberOfColumns();
    integer lda  = m;

    // dgemv (  correctChar(), &m, &n, (LongReal*) &(Complex::complexUnit), (LongReal*) (&_pelm[0]), 
    //         &lda, (LongReal*) &v(j), &incx, (LongReal*) &(Complex::complexUnit), 
    //         (LongReal*) &w(i), &incx
    //       );
    TensorCalculus::Blas<double>::gemv(*correctChar(), m, n, 1.0, &_pelm[0], 
            lda, &v(j), incx, 1.0, &w(i), incx);

    clearTranspose();
   return value;
 }
RMatrix& RMatrix::update(const LongReal& a, RMatrix& A, RMatrix& B, const LongReal& b,
                         const LongInt& rowOffset, const LongInt& colOffset)
 {
    integer l = A.numberOfRows();
    integer n = B.numberOfColumns();
    integer m = A.numberOfColumns();
    integer lda = l;
    integer ldb = m;
             
    if(A.isTranspose() || A.isTranspose())
     {
        l   = A.numberOfColumns();
        m   = A.numberOfRows();
        lda = m;
        ldb = m;
     }

    if(B.isTranspose() || B.isTranspose())
     {
        m   = B.numberOfColumns();
        n   = B.numberOfRows();
        ldb = n;
     }

    integer ldc = l;

    (*this).setDimension(l, n);

    // dgemm (A.correctChar(), B.correctChar(), &l, &n, &m, 
    //        (LongReal*) &a, (LongReal*) &A._pelm[rowOffset], &lda, 
    //        (LongReal*) &B._pelm[colOffset], &ldb, (LongReal*) &b, 
    //        (LongReal*) (&this->_pelm[0]), &ldc);
    TensorCalculus::Blas<double>::gemm (*A.correctChar(), *B.correctChar(), l, n, m, 
           a, &A._pelm[rowOffset], lda, 
           &B._pelm[colOffset], ldb, b, 
           (&this->_pelm[0]), ldc);

      clearTranspose();
      A.clearTranspose();
      B.clearTranspose();

   return (*this);
 }
void FloatMatrix4::clear()
{
    clearElementCount();
    clearTranspose();
    clearValue();
}