SimpleITK  1.0.1
itkDivideFloorFunctor.h
Go to the documentation of this file.
1 /*=========================================================================
2 *
3 * Copyright Insight Software Consortium
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18 #ifndef itkDivideFloorFunctor_h
19 #define itkDivideFloorFunctor_h
20 
21 #include <cmath>
22 
23 namespace itk
24 {
25 namespace Functor
26 {
31 template< class TInput1, class TInput2, class TOutput >
32 class DivFloor
33 {
34 public:
35  // Use default copy, assigned and destructor
36  // DivFloor() {} default constructor OK
37 
38  bool operator!=(const DivFloor &) const
39  {
40  return false;
41  }
42 
43  bool operator==(const DivFloor & other) const
44  {
45  return !( *this != other );
46  }
47 
48  inline TOutput operator()(const TInput1 & A, const TInput2 & B) const
49  {
50  if ( B != (TInput2)0 )
51  {
52  return static_cast<TOutput>( std::floor( double(A) / double(B) ) );
53  }
54  else
55  {
56  return NumericTraits< TOutput >::max( static_cast<TOutput>(A) );
57  }
58  }
59 };
60 }
61 }
62 
63 #endif // itkDivisionFloorImageFilter_h
bool operator==(const DivFloor &other) const
TOutput operator()(const TInput1 &A, const TInput2 &B) const
static constexpr T max(const T &)
bool operator!=(const DivFloor &) const