more double promote fixes, still not complete

This commit is contained in:
Ingo Weyrich
2020-01-21 00:16:27 +01:00
parent 9dbf0ff629
commit b2443b0e7e
38 changed files with 203 additions and 187 deletions

View File

@@ -790,12 +790,12 @@ float* RawImageSource::CA_correct_RT(
for (int m = 0; m < polyord; m++) {
double powHblock = powHblockInit;
for (int n = 0; n < polyord; n++) {
polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * blockwt[vblock * hblsz + hblock];
polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * static_cast<double>(blockwt[vblock * hblsz + hblock]);
powHblock *= hblock;
}
powVblock *= vblock;
}
shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * bstemp[dir] * blockwt[vblock * hblsz + hblock];
shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * static_cast<double>(bstemp[dir]) * static_cast<double>(blockwt[vblock * hblsz + hblock]);
powHblockInit *= hblock;
}
powVblockInit *= vblock;
@@ -848,7 +848,7 @@ float* RawImageSource::CA_correct_RT(
for (int top = -border; top < height; top += ts - border2) {
for (int left = -border; left < width - (W & 1); left += ts - border2) {
memset(bufferThr, 0, buffersizePassTwo);
float lblockshifts[2][2];
double lblockshifts[2][2];
const int vblock = ((top + border) / (ts - border2)) + 1;
const int hblock = ((left + border) / (ts - border2)) + 1;
const int bottom = min(top + ts, height + border);
@@ -1036,8 +1036,8 @@ float* RawImageSource::CA_correct_RT(
}
if (!autoCA) {
float hfrac = -((float)(hblock - 0.5) / (hblsz - 2) - 0.5);
float vfrac = -((float)(vblock - 0.5) / (vblsz - 2) - 0.5) * height / width;
double hfrac = -((hblock - 0.5) / (hblsz - 2) - 0.5);
double vfrac = -((vblock - 0.5) / (vblsz - 2) - 0.5) * height / width;
lblockshifts[0][0] = 2 * vfrac * cared;
lblockshifts[0][1] = 2 * hfrac * cared;
lblockshifts[1][0] = 2 * vfrac * cablue;
@@ -1058,7 +1058,7 @@ float* RawImageSource::CA_correct_RT(
}
powVblock *= vblock;
}
constexpr float bslim = 3.99; //max allowed CA shift
constexpr double bslim = 3.99f; //max allowed CA shift
lblockshifts[0][0] = LIM(lblockshifts[0][0], -bslim, bslim);
lblockshifts[0][1] = LIM(lblockshifts[0][1], -bslim, bslim);
lblockshifts[1][0] = LIM(lblockshifts[1][0], -bslim, bslim);
@@ -1070,14 +1070,14 @@ float* RawImageSource::CA_correct_RT(
//some parameters for the bilinear interpolation
shiftvfloor[c] = floor((float)lblockshifts[c>>1][0]);
shiftvceil[c] = ceil((float)lblockshifts[c>>1][0]);
if (lblockshifts[c>>1][0] < 0.f) {
if (lblockshifts[c>>1][0] < 0.0) {
std::swap(shiftvfloor[c], shiftvceil[c]);
}
shiftvfrac[c] = fabs(lblockshifts[c>>1][0] - shiftvfloor[c]);
shifthfloor[c] = floor((float)lblockshifts[c>>1][1]);
shifthceil[c] = ceil((float)lblockshifts[c>>1][1]);
if (lblockshifts[c>>1][1] < 0.f) {
if (lblockshifts[c>>1][1] < 0.0) {
std::swap(shifthfloor[c], shifthceil[c]);
}
shifthfrac[c] = fabs(lblockshifts[c>>1][1] - shifthfloor[c]);