/* M = inv ( diag ( RHO_X * I + A'A ) ) */ void getPreconditioner(const AMatrix * A, const Settings * stgs, Priv * p) { scs_int i; scs_float * M = p->M; #if EXTRAVERBOSE > 0 scs_printf("getting pre-conditioner\n"); #endif for (i = 0; i < A->n; ++i) { M[i] = 1 / (stgs->rho_x + calcNormSq(&(A->x[A->p[i]]), A->p[i + 1] - A->p[i])); /* M[i] = 1; */ } #if EXTRAVERBOSE > 0 scs_printf("finished getting pre-conditioner\n"); #endif }
/* ||v||_2 */ scs_float calcNorm(const scs_float * v, scs_int len) { return SQRTF(calcNormSq(v, len)); }