@@ -33,7 +33,7 @@ struct BoxSampler
3333 const int32_t leftFlIdx = (int32_t)floor (leftIdx);
3434 const int32_t leftClIdx = (int32_t)ceil (leftIdx);
3535
36- assert (linearSize > 1 && radius >= 0 );
36+ assert (linearSize > 1 && radius >= bit_cast<float32_t>(numeric_limits<float32_t>:: min ) );
3737 assert (borderColor >= 0 && borderColor <= 1 );
3838
3939 T result = 0 ;
@@ -146,26 +146,26 @@ struct BoxSampler
146146 const T last = prefixSumAccessor.template get<T, uint32_t>(lastIdx);
147147 T floored, ceiled;
148148
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;
151151 else
152152 {
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));
154154 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);
156156 else
157157 floored = -(period - 1 ) * last - (last - prefixSumAccessor.template get<T, uint32_t>(leftFlIdx % linearSize - 1 ));
158158 }
159159
160160 if (leftClIdx == 0 ) // Special case, wouldn't be possible for `floored` above
161161 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;
164164 else
165165 {
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));
167167 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);
169169 else
170170 ceiled = -(period - 1 ) * last - (last - prefixSumAccessor.template get<T, uint32_t>(leftClIdx % linearSize - 1 ));
171171 }
@@ -183,7 +183,7 @@ struct BoxSampler
183183 }
184184 }
185185
186- return result / (2 * radius + 1 );
186+ return result / (2.f * radius + 1.f );
187187 }
188188};
189189
0 commit comments