@@ -33,7 +33,7 @@ struct BoxSampler
33
33
const int32_t leftFlIdx = (int32_t)floor (leftIdx);
34
34
const int32_t leftClIdx = (int32_t)ceil (leftIdx);
35
35
36
- assert (linearSize > 1 && radius >= 0 );
36
+ assert (linearSize > 1 && radius >= bit_cast<float32_t>(numeric_limits<float32_t>:: min ) );
37
37
assert (borderColor >= 0 && borderColor <= 1 );
38
38
39
39
T result = 0 ;
@@ -146,26 +146,26 @@ struct BoxSampler
146
146
const T last = prefixSumAccessor.template get<T, uint32_t>(lastIdx);
147
147
T floored, ceiled;
148
148
149
- if (abs ( leftFlIdx) % (2 * linearSize) == 0 )
150
- floored = -( abs (leftFlIdx) / linearSize) * last;
149
+ if (leftFlIdx % (2 * linearSize) == 0 )
150
+ floored = ( T (leftFlIdx) / linearSize) * last;
151
151
else
152
152
{
153
- const uint32_t period = uint32_t (ceil (float32_t (abs ( leftFlIdx) ) / linearSize));
153
+ const uint32_t period = uint32_t (ceil (float32_t (- leftFlIdx) / linearSize));
154
154
if ((period & 0x1u) == 1 )
155
- floored = -(period - 1 ) * last - prefixSumAccessor.template get<T, uint32_t>(( abs ( leftFlIdx) - 1 ) % linearSize);
155
+ floored = -(period - 1 ) * last - prefixSumAccessor.template get<T, uint32_t>(-( leftFlIdx + 1 ) % linearSize);
156
156
else
157
157
floored = -(period - 1 ) * last - (last - prefixSumAccessor.template get<T, uint32_t>(leftFlIdx % linearSize - 1 ));
158
158
}
159
159
160
160
if (leftClIdx == 0 ) // Special case, wouldn't be possible for `floored` above
161
161
ceiled = 0 ;
162
- else if (abs ( leftClIdx) % (2 * linearSize) == 0 )
163
- ceiled = -( abs (leftClIdx) / linearSize) * last;
162
+ else if (leftClIdx % (2 * linearSize) == 0 )
163
+ ceiled = ( T (leftClIdx) / linearSize) * last;
164
164
else
165
165
{
166
- const uint32_t period = uint32_t (ceil (float32_t (abs ( leftClIdx) ) / linearSize));
166
+ const uint32_t period = uint32_t (ceil (float32_t (- leftClIdx) / linearSize));
167
167
if ((period & 0x1u) == 1 )
168
- ceiled = -(period - 1 ) * last - prefixSumAccessor.template get<T, uint32_t>(( abs ( leftClIdx) - 1 ) % linearSize);
168
+ ceiled = -(period - 1 ) * last - prefixSumAccessor.template get<T, uint32_t>(-( leftClIdx + 1 ) % linearSize);
169
169
else
170
170
ceiled = -(period - 1 ) * last - (last - prefixSumAccessor.template get<T, uint32_t>(leftClIdx % linearSize - 1 ));
171
171
}
@@ -183,7 +183,7 @@ struct BoxSampler
183
183
}
184
184
}
185
185
186
- return result / (2 * radius + 1 );
186
+ return result / (2.f * radius + 1.f );
187
187
}
188
188
};
189
189
0 commit comments