void test_cross_ratio ( mclx* mx ) { dim i, j, n = 0 ; for (i=0;i<N_COLS(mx);i++) { mclv* v = mx->cols+i ; double selfv = mclvSelf(v) ; for (j=0;j<v->n_ivps;j++) { mclv* w = mclxGetVector(mx, v->ivps[j].idx, EXIT_ON_FAIL, NULL) ; double arc = v->ivps[j].val ; double selfw= mclvSelf(w) ; double cra = mclvIdxVal(w, v->vid, NULL) ; double s = MCX_MIN(selfv, selfw) ; if (s > arc || s > cra) fprintf ( stdout , "%u\t%u\t%g\t%g\t%g\t%g\n" , (unsigned) v->vid , (unsigned) w->vid , arc , cra , selfv , selfw ) ; n++ ; } } fprintf(stderr, "tested %u entries\n", (unsigned) n) ; }
static void tf_ssq ( mclx* mx , double val ) { dim i ; for (i=0;i<N_COLS(mx);i++) { mclv* v = mx->cols+i ; double ssq = mclvPowSum(v, 2.0) ; double sum = mclvSum(v) ; double self = mclvSelf(v) ; if (sum-self) mclvSelectGtBar(v, val * (ssq - self*self) / (sum - self)) ; } ; }