int func_input(double* A, int n){ for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ A[i*n + j] = Aij(i,j); if (fabs(Aij(i,j) - Aij(j,i)) > EPS){ printf("It is not diagonal matrix.\n"); return -1; } } } return 0; }
int func_input(double* A, int n){ for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ A[i*n+ j] = Aij(i,j); } } return 0; }
double residual_norm(int n, double *b, double *x){ double m,l = 0.; for (int i = 0; i < n; i++){ m = 0.; for (int j = 0; j < n; j++){ m += Aij(i,j)*x[j]; } m -= b[i]; l += m*m; } return sqrt(l); }
//! Check if block (i,j) is a zero block. int IsZeroBlock(int i, int j) const { return (Aij(i,j)==NULL) ? 1 : 0; }