| 
    SNAP Library 2.0, Developer Reference
    2013-05-13 16:33:57
    
   SNAP, a general purpose, high performance system for analysis and manipulation of large networks 
   | 
  
  
  
 
#include <linalg.h>
Static Public Member Functions | |
| static void | SaveCsvTFltV (const TFltV &Vec, TSOut &SOut) | 
| static void | SaveMatlabTFltIntKdV (const TIntFltKdV &SpV, const int &ColN, TSOut &SOut) | 
| static void | SaveMatlabTFltV (const TFltV &m, const TStr &FName) | 
| static void | SaveMatlabTIntV (const TIntV &m, const TStr &FName) | 
| static void | SaveMatlabTFltVVCol (const TFltVV &m, int ColId, const TStr &FName) | 
| static void | SaveMatlabTFltVV (const TFltVV &m, const TStr &FName) | 
| static void | SaveMatlabTFltVVMjrSubMtrx (const TFltVV &m, int rowN, int colN, const TStr &FName) | 
| static void | LoadMatlabTFltVV (const TStr &FNm, TVec< TFltV > &ColV) | 
| static void | LoadMatlabTFltVV (const TStr &FNm, TFltVV &MatrixVV) | 
| static void | PrintTFltV (const TFltV &Vec, const TStr &VecNm) | 
| static void | PrintTFltVV (const TFltVV &A, const TStr &MatrixNm) | 
| static void | PrintTIntV (const TIntV &Vec, const TStr &VecNm) | 
| static void | FillRnd (TFltV &Vec) | 
| static void | FillRnd (TFltV &Vec, TRnd &Rnd) | 
| static void | Fill (TFltVV &M, const double &Val) | 
| static void | FillZero (TFltV &Vec) | 
| static void | FillZero (TFltVV &M) | 
| static void | FillIdentity (TFltVV &M) | 
| static void | FillIdentity (TFltVV &M, const double &Elt) | 
| static int | SumVec (const TIntV &Vec) | 
| static double | SumVec (const TFltV &Vec) | 
| static void | ToSpVec (const TFltV &Vec, TIntFltKdV &SpVec, const double &CutWordWgtSumPrc=0.0) | 
| static void | ToVec (const TIntFltKdV &SpVec, TFltV &Vec, const int &VecLen) | 
| static void TLAMisc::Fill | ( | TFltVV & | M, | 
| const double & | Val | ||
| ) |  [static] | 
        
| void TLAMisc::FillIdentity | ( | TFltVV & | M | ) |  [static] | 
        
Definition at line 1741 of file linalg.cpp.
References TVVec< TVal >::GetCols(), TVVec< TVal >::GetRows(), and IAssert.
Referenced by TSparseSVD::SimpleLanczos().
                                    {
    IAssert(M.GetRows() == M.GetCols());
    int Len = M.GetRows();
    for (int i = 0; i < Len; i++) {
        for (int j = 0; j < Len; j++) M(i,j) = 0.0;
        M(i,i) = 1.0;
    }
}


| void TLAMisc::FillIdentity | ( | TFltVV & | M, | 
| const double & | Elt | ||
| ) |  [static] | 
        
Definition at line 1750 of file linalg.cpp.
References TVVec< TVal >::GetCols(), TVVec< TVal >::GetRows(), and IAssert.
                                                       {
    IAssert(M.GetRows() == M.GetCols());
    int Len = M.GetRows();
    for (int i = 0; i < Len; i++) {
        for (int j = 0; j < Len; j++) M(i,j) = 0.0;
        M(i,i) = Elt;
    }
}

| static void TLAMisc::FillRnd | ( | TFltV & | Vec | ) |  [inline, static] | 
        
| void TLAMisc::FillRnd | ( | TFltV & | Vec, | 
| TRnd & | Rnd | ||
| ) |  [static] | 
        
Definition at line 1735 of file linalg.cpp.
References TRnd::GetNrmDev(), and TVec< TVal, TSizeTy >::Len().

| static void TLAMisc::FillZero | ( | TFltV & | Vec | ) |  [inline, static] | 
        
Definition at line 526 of file linalg.h.
References TVec< TVal, TSizeTy >::PutAll().
{ Vec.PutAll(0.0); }

| static void TLAMisc::FillZero | ( | TFltVV & | M | ) |  [inline, static] | 
        
| void TLAMisc::LoadMatlabTFltVV | ( | const TStr & | FNm, | 
| TVec< TFltV > & | ColV | ||
| ) |  [static] | 
        
Definition at line 1660 of file linalg.cpp.
References TVec< TVal, TSizeTy >::Add(), TVec< TVal, TSizeTy >::Clr(), Fail, TILx::Flt, TILx::GetSym(), TVec< TFlt >::GetV(), IAssert, iloExcept, iloRetEoln, iloSigNum, TVec< TVal, TSizeTy >::Len(), TFIn::New(), syEof, syEoln, syFlt, and TILx::Sym.
Referenced by LoadMatlabTFltVV(), and TFullColMatrix::TFullColMatrix().
                                                                 {
    PSIn SIn = TFIn::New(FNm);
    TILx Lx(SIn, TFSet()|iloRetEoln|iloSigNum|iloExcept);
    int Row = 0, Col = 0; ColV.Clr();
    Lx.GetSym(syFlt, syEof, syEoln);
    //printf("%d x %d\r", Row, ColV.Len());
    while (Lx.Sym != syEof) {
        if (Lx.Sym == syFlt) {
            if (ColV.Len() > Col) {
                IAssert(ColV[Col].Len() == Row);
                ColV[Col].Add(Lx.Flt);
            } else {
                IAssert(Row == 0);
                ColV.Add(TFltV::GetV(Lx.Flt));
            }
            Col++;
        } else if (Lx.Sym == syEoln) {
            IAssert(Col == ColV.Len());
            Col = 0; Row++;
            if (Row%100 == 0) {
                //printf("%d x %d\r", Row, ColV.Len());
            }
        } else {
            Fail;
        }
        Lx.GetSym(syFlt, syEof, syEoln);
    }
    //printf("\n");
    IAssert(Col == ColV.Len() || Col == 0);
}


| void TLAMisc::LoadMatlabTFltVV | ( | const TStr & | FNm, | 
| TFltVV & | MatrixVV | ||
| ) |  [static] | 
        
Definition at line 1691 of file linalg.cpp.
References TVVec< TVal >::Clr(), TVec< TVal, TSizeTy >::Empty(), TVVec< TVal >::Gen(), TVec< TVal, TSizeTy >::Len(), and LoadMatlabTFltVV().
                                                                {
    TVec<TFltV> ColV; LoadMatlabTFltVV(FNm, ColV);
    if (ColV.Empty()) { MatrixVV.Clr(); return; }
    const int Rows = ColV[0].Len(), Cols = ColV.Len();
    MatrixVV.Gen(Rows, Cols);
    for (int RowN = 0; RowN < Rows; RowN++) {
        for (int ColN = 0; ColN < Cols; ColN++) {
            MatrixVV(RowN, ColN) = ColV[ColN][RowN];
        }
    }
}

| void TLAMisc::PrintTFltV | ( | const TFltV & | Vec, | 
| const TStr & | VecNm | ||
| ) |  [static] | 
        
Definition at line 1704 of file linalg.cpp.
References TStr::CStr(), and TVec< TVal, TSizeTy >::Len().
                                                            {
    printf("%s = [", VecNm.CStr());
    for (int i = 0; i < Vec.Len(); i++) {
        printf("%.5f", Vec[i]());
                if (i < Vec.Len() - 1) { printf(", "); }
    }
    printf("]\n");
}

| void TLAMisc::PrintTFltVV | ( | const TFltVV & | A, | 
| const TStr & | MatrixNm | ||
| ) |  [static] | 
        
Definition at line 1714 of file linalg.cpp.
References TVVec< TVal >::At(), TStr::CStr(), TVVec< TVal >::GetCols(), TVVec< TVal >::GetRows(), and TFlt::Val.
                                                               {
    printf("%s = [\n", MatrixNm.CStr());
        for (int j = 0; j < A.GetRows(); j++) {
                for (int i = 0; i < A.GetCols(); i++) {
                        printf("%f\t", A.At(i, j).Val);
                }
                printf("\n");
        }
    printf("]\n");
}

| void TLAMisc::PrintTIntV | ( | const TIntV & | Vec, | 
| const TStr & | VecNm | ||
| ) |  [static] | 
        
Definition at line 1725 of file linalg.cpp.
References TStr::CStr(), and TVec< TVal, TSizeTy >::Len().
                                                            {
    printf("%s = [", VecNm.CStr());
    for (int i = 0; i < Vec.Len(); i++) {
        printf("%d", Vec[i]());
        if (i < Vec.Len() - 1) printf(", ");
    }
    printf("]\n");
}

| void TLAMisc::SaveCsvTFltV | ( | const TFltV & | Vec, | 
| TSOut & | SOut | ||
| ) |  [static] | 
        
Definition at line 1588 of file linalg.cpp.
References TVec< TVal, TSizeTy >::Len(), TSOut::PutCh(), TSOut::PutFlt(), and TSOut::PutLn().
                                                        {
    for (int ValN = 0; ValN < Vec.Len(); ValN++) {
        SOut.PutFlt(Vec[ValN]); SOut.PutCh(',');
    }
    SOut.PutLn();
}

| void TLAMisc::SaveMatlabTFltIntKdV | ( | const TIntFltKdV & | SpV, | 
| const int & | ColN, | ||
| TSOut & | SOut | ||
| ) |  [static] | 
        
Definition at line 1595 of file linalg.cpp.
References TStr::Fmt(), TVec< TVal, TSizeTy >::Len(), and TSOut::PutStrLn().
                                                                                      {
    const int Len = SpV.Len();
    for (int ValN = 0; ValN < Len; ValN++) {
        SOut.PutStrLn(TStr::Fmt("%d %d %g", SpV[ValN].Key+1, ColN+1, SpV[ValN].Dat()));
    }
}

| void TLAMisc::SaveMatlabTFltV | ( | const TFltV & | m, | 
| const TStr & | FName | ||
| ) |  [static] | 
        
Definition at line 1602 of file linalg.cpp.
References TSOut::Flush(), TFlt::GetStr(), TVec< TVal, TSizeTy >::Len(), TFOut::New(), TSOut::PutCh(), and TSOut::PutStr().
                                                               {
    PSOut out = TFOut::New(FName);
    const int RowN = m.Len();
    for (int RowId = 0; RowId < RowN; RowId++) {
        out->PutStr(TFlt::GetStr(m[RowId], 20, 18));
        out->PutCh('\n');
    }
    out->Flush();
}

| void TLAMisc::SaveMatlabTFltVV | ( | const TFltVV & | m, | 
| const TStr & | FName | ||
| ) |  [static] | 
        
Definition at line 1633 of file linalg.cpp.
References TSOut::Flush(), TVVec< TVal >::GetCols(), TVVec< TVal >::GetRows(), TFlt::GetStr(), TFOut::New(), TSOut::PutCh(), and TSOut::PutStr().
                                                                 {
    PSOut out = TFOut::New(FName);
    const int RowN = m.GetRows();
    const int ColN = m.GetCols();
    for (int RowId = 0; RowId < RowN; RowId++) {
        for (int ColId = 0; ColId < ColN; ColId++) {
            out->PutStr(TFlt::GetStr(m(RowId,ColId), 20, 18));
            out->PutCh(' ');
        }
        out->PutCh('\n');
    }
    out->Flush();
}

| void TLAMisc::SaveMatlabTFltVVCol | ( | const TFltVV & | m, | 
| int | ColId, | ||
| const TStr & | FName | ||
| ) |  [static] | 
        
Definition at line 1622 of file linalg.cpp.
References TSOut::Flush(), TVVec< TVal >::GetRows(), TFlt::GetStr(), TFOut::New(), TSOut::PutCh(), and TSOut::PutStr().
                                                                               {
    PSOut out = TFOut::New(FName);
    const int RowN = m.GetRows();
    for (int RowId = 0; RowId < RowN; RowId++) {
        out->PutStr(TFlt::GetStr(m(RowId,ColId), 20, 18));
        out->PutCh('\n');
    }
    out->Flush();
}

| void TLAMisc::SaveMatlabTFltVVMjrSubMtrx | ( | const TFltVV & | m, | 
| int | rowN, | ||
| int | colN, | ||
| const TStr & | FName | ||
| ) |  [static] | 
        
Definition at line 1647 of file linalg.cpp.
References TSOut::Flush(), TFlt::GetStr(), TFOut::New(), TSOut::PutCh(), and TSOut::PutStr().
                                               {
    PSOut out = TFOut::New(FName);
    for (int RowId = 0; RowId < RowN; RowId++) {
        for (int ColId = 0; ColId < ColN; ColId++) {
            out->PutStr(TFlt::GetStr(m(RowId,ColId), 20, 18)); out->PutCh(' ');
        }
        out->PutCh('\n');
    }
    out->Flush();
}

| void TLAMisc::SaveMatlabTIntV | ( | const TIntV & | m, | 
| const TStr & | FName | ||
| ) |  [static] | 
        
Definition at line 1612 of file linalg.cpp.
References TSOut::Flush(), TVec< TVal, TSizeTy >::Len(), TFOut::New(), TSOut::PutCh(), and TSOut::PutInt().
                                                               {
    PSOut out = TFOut::New(FName);
    const int RowN = m.Len();
    for (int RowId = 0; RowId < RowN; RowId++) {
        out->PutInt(m[RowId]);
        out->PutCh('\n');
    }
    out->Flush();
}

| int TLAMisc::SumVec | ( | const TIntV & | Vec | ) |  [static] | 
        
Definition at line 1759 of file linalg.cpp.
References TVec< TVal, TSizeTy >::Len().
                                    {
    const int Len = Vec.Len();
    int res = 0;
    for (int i = 0; i < Len; i++)
        res += Vec[i];
    return res;
}

| double TLAMisc::SumVec | ( | const TFltV & | Vec | ) |  [static] | 
        
Definition at line 1767 of file linalg.cpp.
References TVec< TVal, TSizeTy >::Len().
                                       {
    const int Len = Vec.Len();
    double res = 0.0;
    for (int i = 0; i < Len; i++)
        res += Vec[i];
    return res;
}

| void TLAMisc::ToSpVec | ( | const TFltV & | Vec, | 
| TIntFltKdV & | SpVec, | ||
| const double & | CutWordWgtSumPrc = 0.0  | 
        ||
| ) |  [static] | 
        
Definition at line 1775 of file linalg.cpp.
References TFlt::Abs(), TVec< TVal, TSizeTy >::Add(), TVec< TVal, TSizeTy >::Clr(), IAssert, TVec< TVal, TSizeTy >::Len(), and TVec< TVal, TSizeTy >::Pack().
                                 {
    // determine minimal element value
    IAssert(0.0 <= CutSumPrc && CutSumPrc <= 1.0);
    const int Elts = Vec.Len();
    double EltSum = 0.0;
    for (int EltN = 0; EltN < Elts; EltN++) {
        EltSum += TFlt::Abs(Vec[EltN]); }
    const double MnEltVal = CutSumPrc * EltSum;
    // create sparse vector
    SpVec.Clr();
    for (int EltN = 0; EltN < Elts; EltN++) {
        if (TFlt::Abs(Vec[EltN]) > MnEltVal) {
            SpVec.Add(TIntFltKd(EltN, Vec[EltN]));
        }
    }
    SpVec.Pack();
}

| void TLAMisc::ToVec | ( | const TIntFltKdV & | SpVec, | 
| TFltV & | Vec, | ||
| const int & | VecLen | ||
| ) |  [static] | 
        
Definition at line 1795 of file linalg.cpp.
References TVec< TVal, TSizeTy >::Gen(), TVec< TVal, TSizeTy >::Len(), and TVec< TVal, TSizeTy >::PutAll().
                                                                          {
    Vec.Gen(VecLen); Vec.PutAll(0.0);
    int Elts = SpVec.Len();
    for (int EltN = 0; EltN < Elts; EltN++) {
        if (SpVec[EltN].Key < VecLen) {
            Vec[SpVec[EltN].Key] = SpVec[EltN].Dat;
        }
    }
}
