/* TriDiag2Vector: Copy diagonal from m into v */ void TriDiag2Vector(TriMat m, Vector v) { int i,size; if (TriMatSize(m) != (size=VectorSize(v))) HError(2090,"TriDiag2Vector: Covariance sizes differ %d vs %d", TriMatSize(m),VectorSize(v)); for (i=1; i<=size; i++) v[i] = m[i][i]; }
/* CloneSTriMat: return a clone of given TriMat */ STriMat CloneSTriMat(MemHeap *hmem, STriMat s, Boolean sharing) { STriMat t; /* the target */ if (s==NULL) return NULL; if (GetUse(s)>0 && sharing) { IncUse(s); return s; } t = CreateSTriMat(hmem,TriMatSize(s)); CopyTriMat(s,t); return t; }
/* FullInvGConst: compute gConst for inv covariance */ static float FullInvGConst(TriMat ic) { return TriMatSize(ic)*log(TPI) - CovDet(ic); }