void LUsolve(float *LU, float *b, int dim, Uint8 *v) { int i, j; float *y, *vett, sum; 1 if (((y = (float *)malloc(dim*sizeof(float))) == NULL) || 2 ((vett = (float *)malloc(dim*sizeof(float))) == NULL)) 3 exit(1); 4 for (i = 0; i < dim; i++) { 5 sum = 0; 6 for(j = 0; j < i; j++) 7 sum += LU[indd(i,j)] * y[j]; 8 y[i] = b[i] - sum; 9 } 10 for (i = dim - 1; i >= 0; i--) { 11 sum = 0; 12 for(j = i + 1; j < dim; j++) 13 sum += LU[indd(i,j)] * vett[j]; 14 vett[i] = ((y[i] - sum) / LU[indd(i,i)]); 15 if (((y[i] - sum) / LU[indd(i,i)]) > 255) { 16 printf("%f\n", (y[i] - sum) / LU[indd(i,i)] ); 17 vett[i] = 255; 18 } 19 else vett[i] = ((y[i] - sum) / LU[indd(i,i)]) + 0.5; 20 v[i] = (Uint8)vett[i]; 21 } 22 free(y); 23 free(vett); 24}
Il tempo di esecuzione è .