temp[i] = x[i]*da[i] + h[i] + omega*b[i];
temp[i] = (1.0 - omega)*x[i]*da[i] + h[i] + omega*b[i];
ssor_kernel(int n, double *b, double *x, double *h, double *temp,	     double *va, double *da, int *ja, int *ia,	     double omega, int steps) {  double s;                     /* runnung sum in innermost loop */  int step;                     /* current iteration step */  int i;                        /* current row of L */  int j;                        /* column index */  int k;                        /* loop variable */   /* main iteration loop */  for (step = 0; step < steps; step ++) {     /* 1st half-step: x = (L + D) \ (b - y) and y = L*x */    if (step == 0)      for (i = 0; i < n; i ++)	temp[i] = omega*b[i];    else      for (i = 0; i < n; i ++)	temp[i] = x[i]*da[i] + h[i] + omega*b[i];    for (i = 0; i < n; i ++) {      s = 0.0;      for (k = ia[i]; k < ia[i+1]; k ++) {        j = ja[k];        s -= va[k] * x[j];      }      h[i] = omega*s;      x[i] = (temp[i] + h[i])/da[i];    }     /* 2nd half-step: x = (L^T + D) \ (b - y) and y = L^T*x */    for (i = 0; i < n; i ++) {      temp[i] = x[i]*da[i] + h[i] + omega*b[i];      h[i] = 0.0;    }    for (i = n-1; i >= 0; i --) {      h[i] = omega*h[i];      x[i] = (temp[i] + h[i]) / da[i];      s = x[i];      for (k = ia[i]; k < ia[i+1]; k ++) {        j = ja[k];        h[j] -= va[k] * s;      }    }   } /* end of main iteration loop */}