| 41 |  |  | 
| 42 |  | #define RBFALLOCB       10              /* RBF allocation block size */ | 
| 43 |  |  | 
| 44 | < | /* our loaded grid for this incident angle */ | 
| 44 | > | /* our loaded grid or comparison DSFs */ | 
| 45 |  | GRIDVAL                 dsf_grid[GRIDRES][GRIDRES]; | 
| 46 |  |  | 
| 47 |  | /* Start new DSF input grid */ | 
| 83 |  |  | 
| 84 |  | pos_from_vec(pos, ovec); | 
| 85 |  |  | 
| 86 | < | dsf_grid[pos[0]][pos[1]].vsum += val; | 
| 87 | < | dsf_grid[pos[0]][pos[1]].nval++; | 
| 86 | > | dsf_grid[pos[0]][pos[1]].sum.v += val; | 
| 87 | > | dsf_grid[pos[0]][pos[1]].sum.n++; | 
| 88 |  | } | 
| 89 |  |  | 
| 90 |  | /* Compute minimum BSDF from histogram (does not clear) */ | 
| 116 |  |  | 
| 117 |  | for (x = x0; x < x1; x++) | 
| 118 |  | for (y = y0; y < y1; y++) | 
| 119 | < | if (dsf_grid[x][y].nval) | 
| 119 | > | if (dsf_grid[x][y].sum.n) | 
| 120 |  | return(0); | 
| 121 |  | return(1); | 
| 122 |  | } | 
| 134 |  | memset(xvec, 0, sizeof(xvec)); | 
| 135 |  | for (x = x0; x < x1; x++) | 
| 136 |  | for (y = y0; y < y1; y++) | 
| 137 | < | if ((n = dsf_grid[x][y].nval) > 0) { | 
| 138 | < | double  z = dsf_grid[x][y].vsum; | 
| 137 | > | if ((n = dsf_grid[x][y].sum.n) > 0) { | 
| 138 | > | double  z = dsf_grid[x][y].sum.v; | 
| 139 |  | rMtx[0][0] += x*x*(double)n; | 
| 140 |  | rMtx[0][1] += x*y*(double)n; | 
| 141 |  | rMtx[0][2] += x*(double)n; | 
| 158 |  | sqerr = 0.0;                    /* compute mean squared error */ | 
| 159 |  | for (x = x0; x < x1; x++) | 
| 160 |  | for (y = y0; y < y1; y++) | 
| 161 | < | if ((n = dsf_grid[x][y].nval) > 0) { | 
| 162 | < | double  d = A*x + B*y + C - dsf_grid[x][y].vsum/n; | 
| 161 | > | if ((n = dsf_grid[x][y].sum.n) > 0) { | 
| 162 | > | double  d = A*x + B*y + C - dsf_grid[x][y].sum.v/n; | 
| 163 |  | sqerr += n*d*d; | 
| 164 |  | } | 
| 165 |  | if (sqerr <= nvs*SMOOTH_MSE)    /* below absolute MSE threshold? */ | 
| 179 |  | /* compute average for region */ | 
| 180 |  | for (x = x0; x < x1; x++) | 
| 181 |  | for (y = y0; y < y1; y++) { | 
| 182 | < | vtot += dsf_grid[x][y].vsum; | 
| 183 | < | nv += dsf_grid[x][y].nval; | 
| 182 | > | vtot += dsf_grid[x][y].sum.v; | 
| 183 | > | nv += dsf_grid[x][y].sum.n; | 
| 184 |  | } | 
| 185 |  | if (!nv) { | 
| 186 |  | fprintf(stderr, "%s: internal - missing samples in create_lobe\n", |