int concheck (void) /* Consistency check */ { short *p,*q,ok; if (ainvb(wd1,wd2,wd3)== -1) return(-1); if (reduce(wd3)== -1) return(-1); ok= *wd3==0; if (ok) { p=wd3+mwdl; q=p+dim; while (++p<=q) if (*p!=0) {ok=0; break;} } if (ok==0) { fprintf(stderr,"Inconsistent relation.\n"); return(-1);} return(0); }
void GeneralSylvester::init() { GeneralMatrix ainvb(b); double rcond1; double rcondinf; a.multInvLeft2(ainvb, d, rcond1, rcondinf); pars.rcondA1 = rcond1; pars.rcondAI = rcondinf; bdecomp = new SchurDecompZero(ainvb); cdecomp = new SimilarityDecomp(c.getData().base(), c.numRows(), *(pars.bs_norm)); cdecomp->check(pars, c); cdecomp->infoToPars(pars); if (*(pars.method) == SylvParams::recurse) sylv = new TriangularSylvester(*bdecomp, *cdecomp); else sylv = new IterativeSylvester(*bdecomp, *cdecomp); }