ITK
6.0.0
Insight Toolkit
|
Namespaces | |
namespace | Detail |
Functions | |
bool | abs (bool x) |
unsigned char | abs (char x) |
unsigned short | abs (short x) |
unsigned char | abs (signed char x) |
unsigned char | abs (unsigned char x) |
unsigned int | abs (unsigned int x) |
unsigned long long | abs (unsigned long long x) |
unsigned long | abs (unsigned long x) |
unsigned short | abs (unsigned short x) |
template<typename T1 , typename T2 > | |
bool | AlmostEquals (T1 x1, T2 x2) |
TInput TInput TReturn | CastWithRangeCheck (TInput x) |
TInput | Ceil (TInput x) template< typename TReturn |
template<typename TInput1 , typename TInput2 > | |
bool | ExactlyEquals (const TInput1 &x1, const TInput2 &x2) |
template<typename T > | |
T | FloatAddULP (T x, typename Detail::FloatIEEE< T >::IntType ulps) |
template<typename T > | |
bool | FloatAlmostEqual (T x1, T x2, typename Detail::FloatIEEE< T >::IntType maxUlps=4, typename Detail::FloatIEEE< T >::FloatType maxAbsoluteDifference=0.1 *itk::NumericTraits< T >::epsilon()) |
template<typename T > | |
Detail::FloatIEEE< T >::IntType | FloatDifferenceULP (T x1, T x2) |
template<TReturn , typename TInput > | |
Floor (TInput x) template< TReturn | |
template<typename T1 , typename T2 > | |
bool | NotAlmostEquals (T1 x1, T2 x2) |
template<typename TInput1 , typename TInput2 > | |
bool | NotExactlyEquals (const TInput1 &x1, const TInput2 &x2) |
TInput TInput TReturn | Round (TInput x) |
template<TReturn , typename TInput > | |
RoundHalfIntegerToEven (TInput x) template< TReturn | |
TInput | RoundHalfIntegerUp (TInput x) template< typename TReturn |
template<typename TReturnType = uintmax_t> | |
constexpr TReturnType | UnsignedPower (const uintmax_t base, const uintmax_t exponent) noexcept |
template<typename TReturnType = uintmax_t> | |
constexpr TReturnType | UnsignedProduct (const uintmax_t a, const uintmax_t b) noexcept |
ITKCommon_EXPORT bool | IsPrime (unsigned short n) |
ITKCommon_EXPORT bool | IsPrime (unsigned int n) |
ITKCommon_EXPORT bool | IsPrime (unsigned long n) |
ITKCommon_EXPORT bool | IsPrime (unsigned long long n) |
ITKCommon_EXPORT unsigned short | GreatestPrimeFactor (unsigned short n) |
ITKCommon_EXPORT unsigned int | GreatestPrimeFactor (unsigned int n) |
ITKCommon_EXPORT unsigned long | GreatestPrimeFactor (unsigned long n) |
ITKCommon_EXPORT unsigned long long | GreatestPrimeFactor (unsigned long long n) |
Variables | |
static constexpr double | deg_per_rad = vnl_math::deg_per_rad |
static constexpr double | e = vnl_math::e |
static constexpr double | eps = vnl_math::eps |
static constexpr double | euler = vnl_math::euler |
static constexpr float | float_eps = vnl_math::float_eps |
static constexpr float | float_sqrteps = vnl_math::float_sqrteps |
static constexpr double | ln10 = vnl_math::ln10 |
static constexpr double | ln2 = vnl_math::ln2 |
static constexpr double | log10e = vnl_math::log10e |
static constexpr double | log2e = vnl_math::log2e |
static constexpr double | one_over_pi = vnl_math::one_over_pi |
static constexpr double | one_over_sqrt2pi = vnl_math::one_over_sqrt2pi |
static constexpr double | pi = vnl_math::pi |
static constexpr double | pi_over_180 = vnl_math::pi_over_180 |
static constexpr double | pi_over_2 = vnl_math::pi_over_2 |
static constexpr double | pi_over_4 = vnl_math::pi_over_4 |
static constexpr double | sqrt1_2 = vnl_math::sqrt1_2 |
static constexpr double | sqrt1_3 = vnl_math::sqrt1_3 |
static constexpr double | sqrt2 = vnl_math::sqrt2 |
static constexpr double | sqrt2pi = vnl_math::sqrt2pi |
static constexpr double | sqrteps = vnl_math::sqrteps |
static constexpr double | two_over_pi = vnl_math::two_over_pi |
static constexpr double | two_over_sqrtpi = vnl_math::two_over_sqrtpi |
static constexpr double | twopi = vnl_math::twopi |
|
inline |
Definition at line 840 of file itkMath.h.
Referenced by itk::ScanlineFilterCommon< TInputImage, TOutputImage >::CheckNeighbors(), itk::SimplexMeshAdaptTopologyFilter< TInputMesh, TOutputMesh >::SimplexCellVisitor::ComputeArea(), itk::Function::AdaptiveEqualizationHistogram< TInputPixel, TOutputPixel >::CumulativeFunction(), itk::BSplineKernelFunction< VSplineOrder, TRealValueType >::Evaluate(), itk::Function::Max3(), itk::Functor::Abs< TInput, TOutput >::operator()(), itk::Functor::SimilarPixelsFunctor< TInput >::operator()(), itk::Functor::SimilarVectorsFunctor< TInput >::operator()(), itk::Functor::InverseDeconvolutionFunctor< TInput1, TInput2, TOutput >::operator()(), itk::Functor::WienerDeconvolutionFunctor< TPixel >::operator()(), itk::HessianToObjectnessMeasureImageFilter< TInputImage, TOutputImage >::AbsLessCompare::operator()(), itk::detail::sortEigenValuesByMagnitude(), and itk::SimplexMeshAdaptTopologyFilter< TInputMesh, TOutputMesh >::SimplexCellVisitor::Visit().
|
inline |
Definition at line 881 of file itkMath.h.
Referenced by FloatAlmostEqual().
|
inline |
Provide consistent equality checks between values of potentially different scalar or complex types.
template< typename T1, typename T2 > AlmostEquals( T1 x1, T2 x2 )
template< typename T1, typename T2 > NotAlmostEquals( T1 x1, T2 x2 )
This function compares two scalar or complex values of potentially different types. For maximum extensibility the function is implemented through a series of templated structs which direct the AlmostEquals() call to the correct function by evaluating the parameter's types.
Overall algorithm: If both values are complex... separate values into real and imaginary components and compare them separately
If one of the values is complex.. see if the imaginary part of the complex value is approximately 0 ... compare real part of complex value with scalar value
If both values are scalars...
To compare two floating point types... use FloatAlmostEqual.
To compare a floating point and an integer type... Use static_cast<FloatingPointType>(integerValue) and call FloatAlmostEqual
To compare signed and unsigned integers... Check for negative value or overflow, then cast and use ==
To compare two signed or two unsigned integers ... Use ==
To compare anything else ... Use ==
x1 | first scalar value to compare |
x2 | second scalar value to compare |
Definition at line 684 of file itkMath.h.
Referenced by itk::AnchorErodeDilateLine< TInputPix, TCompare >::Compare(), NotAlmostEquals(), and itk::DivideImageFilter< TInputImage1, TInputImage2, TOutputImage >::VerifyPreconditions().
|
inline |
Definition at line 214 of file itkMath.h.
References itk::NumericTraits< T >::IsPositive(), and itkConceptMacro.
TInput itk::Math::Ceil | ( | TInput | x | ) |
|
inline |
Return the result of an exact comparison between two scalar values of potentially different types.
template <typename TInput1, typename TInput2> inline bool ExactlyEquals( const TInput & x1, const TInput & x2 )
template <typename TInput1, typename TInput2> inline bool NotExactlyEquals( const TInput & x1, const TInput & x2 )
These functions complement the EqualsComparison functions and determine if two scalar values are exactly equal using the compilers casting rules when comparing two different types. While this is also easily accomplished by using the equality operators, use of this function demonstrates the intent of an exact equality check and thus improves readability and clarity of code. In addition, this function suppresses float-equal warnings produced when using Clang.
x1 | first floating point value to compare |
x2 | second floating point value to compare |
Definition at line 722 of file itkMath.h.
Referenced by itk::BSplineKernelFunction< VSplineOrder, TRealValueType >::Evaluate(), itk::BSplineDerivativeKernelFunction< VSplineOrder, TRealValueType >::Evaluate(), NotExactlyEquals(), itk::Functor::Equal< TInput1, TInput2, TOutput >::operator()(), itk::Functor::BinaryThreshold< TInput, TOutput >::operator==(), itk::Functor::ExpNegative< TInput, TOutput >::operator==(), itk::Functor::IntensityLinearTransform< TInput, TOutput >::operator==(), itk::Functor::IntensityWindowingTransform< TInput, TOutput >::operator==(), itk::Functor::LabelOverlayFunctor< TInputPixel, TLabel, TRGBPixel >::operator==(), itk::Functor::Sigmoid< TInput, TOutput >::operator==(), itk::Functor::VectorMagnitudeLinearTransform< TInput, TOutput >::operator==(), itk::Functor::WeightedAdd2< TInput1, TInput2, TOutput >::operator==(), itk::KLMDynamicBorderArray< TBorder >::operator>(), itk::LaplacianSegmentationLevelSetFunction< TImageType, TFeatureImageType >::SetAdvectionWeight(), itk::SigmoidImageFilter< TInputImage, TOutputImage >::SetAlpha(), itk::SigmoidImageFilter< TInputImage, TOutputImage >::SetBeta(), itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::SetBinaryMask(), itk::SigmoidImageFilter< TInputImage, TOutputImage >::SetOutputMaximum(), itk::SigmoidImageFilter< TInputImage, TOutputImage >::SetOutputMinimum(), and itk::ShapeUniqueLabelMapFilter< TImage >::TemplatedGenerateData().
|
inline |
Add the given ULPs (units in the last place) to a float.
If the given ULPs can are negative, they are subtracted.
Definition at line 271 of file itkMath.h.
References itk::Math::Detail::FloatIEEE< T >::asFloat, and itk::Math::Detail::FloatIEEE< T >::asInt.
|
inline |
Compare two floats and return if they are effectively equal.
Determining when floats are almost equal is difficult because of their IEEE bit representation. This function uses the integer representation of the float to determine if they are almost equal.
The implementation is based off the explanation in the white papers:
This function is not a cure-all, and reading those articles is important to understand its appropriate use in the context of ULPs, zeros, subnormals, infinities, and NANs. For example, it is preferable to use this function on two floats directly instead of subtracting them and comparing them to zero.
The tolerance is specified in ULPs (units in the last place), i.e. how many floats there are in between the numbers. Therefore, the tolerance depends on the magnitude of the values that are being compared. A second tolerance is a maximum difference allowed, which is important when comparing numbers close to zero.
A NAN compares as not equal to a number, but two NAN's may compare as equal to each other.
x1 | first floating value to compare |
x2 | second floating value to compare |
maxUlps | maximum units in the last place to be considered equal |
maxAbsoluteDifference | maximum absolute difference to be considered equal |
Definition at line 310 of file itkMath.h.
References abs(), and FloatDifferenceULP().
|
inline |
Return the signed distance in ULPs (units in the last place) between two floats.
This is the signed distance, i.e., if x1 > x2, then the result is positive.
Definition at line 255 of file itkMath.h.
References itk::Math::Detail::FloatIEEE< T >::AsULP().
Referenced by FloatAlmostEqual().
itk::Math::Floor | ( | TInput | x | ) |
Round towards minus infinity.
The behavior of overflow is undefined due to numerous implementations.
Round towards plus infinity
The behavior of overflow is undefined due to numerous implementations.
ITKCommon_EXPORT unsigned int itk::Math::GreatestPrimeFactor | ( | unsigned int | n | ) |
Return the greatest factor of the decomposition in prime numbers.
ITKCommon_EXPORT unsigned long long itk::Math::GreatestPrimeFactor | ( | unsigned long long | n | ) |
Return the greatest factor of the decomposition in prime numbers.
ITKCommon_EXPORT unsigned long itk::Math::GreatestPrimeFactor | ( | unsigned long | n | ) |
Return the greatest factor of the decomposition in prime numbers.
ITKCommon_EXPORT unsigned short itk::Math::GreatestPrimeFactor | ( | unsigned short | n | ) |
Return the greatest factor of the decomposition in prime numbers.
ITKCommon_EXPORT bool itk::Math::IsPrime | ( | unsigned int | n | ) |
Return whether the number is a prime number or not.
ITKCommon_EXPORT bool itk::Math::IsPrime | ( | unsigned long long | n | ) |
Return whether the number is a prime number or not.
ITKCommon_EXPORT bool itk::Math::IsPrime | ( | unsigned long | n | ) |
Return whether the number is a prime number or not.
ITKCommon_EXPORT bool itk::Math::IsPrime | ( | unsigned short | n | ) |
Return whether the number is a prime number or not.
|
inline |
Definition at line 692 of file itkMath.h.
References AlmostEquals().
Referenced by itk::Functor::Div< TInput1, TInput2, TOutput >::operator()().
|
inline |
Definition at line 733 of file itkMath.h.
References ExactlyEquals().
Referenced by itk::Functor::NotEqual< TInput1, TInput2, TOutput >::operator()(), itk::Matrix< T, VRows, VColumns >::operator==(), itk::VariableSizeMatrix< T >::operator==(), itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >::SetAdvectionScaling(), itk::SegmentationLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >::SetAdvectionScaling(), itk::GaussianInterpolateImageFunction< TInputImage, TCoordRep >::SetAlpha(), itk::NotImageFilter< TInputImage, TOutputImage >::SetBackgroundValue(), itk::ConstantPadImageFilter< TInputImage, TOutputImage >::SetConstant(), itk::DivideOrZeroOutImageFilter< TInputImage1, TInputImage2, TOutputImage >::SetConstant(), itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >::SetCurvatureScaling(), itk::SegmentationLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >::SetCurvatureScaling(), itk::GeodesicActiveContourLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >::SetDerivativeSigma(), itk::SegmentationLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >::SetFeatureScaling(), itk::NotImageFilter< TInputImage, TOutputImage >::SetForegroundValue(), itk::CannyEdgeDetectionImageFilter< TInputImage, TOutputImage >::SetMaximumError(), itk::MaskImageFilter< TInputImage, TMaskImage, TOutputImage >::SetOutsideValue(), itk::MaskNegatedImageFilter< TInputImage, TMaskImage, TOutputImage >::SetOutsideValue(), itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >::SetPropagationScaling(), itk::SegmentationLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >::SetPropagationScaling(), itk::ShapePriorSegmentationLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType >::SetShapePriorScaling(), itk::DivideOrZeroOutImageFilter< TInputImage1, TInputImage2, TOutputImage >::SetThreshold(), itk::CannyEdgeDetectionImageFilter< TInputImage, TOutputImage >::SetVariance(), TestCellDataContainer(), and TestPointDataContainer().
itk::Math::RoundHalfIntegerToEven | ( | TInput | x | ) |
Round towards nearest integer.
TReturn | must be an integer type |
TInput | must be float or double halfway cases are rounded towards the nearest even integer, e.g. RoundHalfIntegerToEven( 1.5) == 2
RoundHalfIntegerToEven(-1.5) == -2
RoundHalfIntegerToEven( 2.5) == 2
RoundHalfIntegerToEven( 3.5) == 4
RoundHalfIntegerToEven(TInput x) template< TReturn Round towards nearest integer. |
The behavior of overflow is undefined due to numerous implementations.
Round towards nearest integer
TReturn | must be an integer type |
TInput | must be float or double halfway cases are rounded upward, e.g. RoundHalfIntegerUp( 1.5) == 2
RoundHalfIntegerUp(-1.5) == -1
RoundHalfIntegerUp( 2.5) == 3
TInput RoundHalfIntegerUp(TInput x) template< typename TReturn Round towards nearest integer (This is a synonym for RoundHalfIntegerUp) |
The behavior of overflow is undefined due to numerous implementations.
TInput itk::Math::RoundHalfIntegerUp | ( | TInput | x | ) |
Round towards nearest integer (This is a synonym for RoundHalfIntegerUp)
TReturn | must be an integer type |
TInput | must be float or double |
|
constexprnoexcept |
Calculates base ^ exponent. Numeric overflow triggers a compilation error in "constexpr context" and a debug assert failure at run-time. Otherwise equivalent to C++11 static_cast<uintmax_t>(std::pow(base, exponent))
UnsignedPower(0, 0)
is not supported, as zero to the power of zero has no agreed-upon value: https://en.wikipedia.org/wiki/Zero_to_the_power_of_zero Definition at line 793 of file itkMath.h.
Referenced by itk::ConnectedImageNeighborhoodShape< VImageDimension >::CalculateNumberOfConnectedNeighbors().
|
constexprnoexcept |
Returns a * b
. Numeric overflow triggers a compilation error in "constexpr context" and a debug assert failure at run-time.
Definition at line 771 of file itkMath.h.
Referenced by itk::ConnectedImageNeighborhoodShape< VImageDimension >::CalculateBinomialCoefficient(), and itk::ConnectedImageNeighborhoodShape< VImageDimension >::CalculateNumberOfHypercubesOnBoundaryOfCube().
|
staticconstexpr |
|
staticconstexpr |
\[e\]
The base of the natural logarithm or Euler's number
Definition at line 56 of file itkMath.h.
Referenced by itk::ProgressReporter::CheckAbortGenerateData(), itk::TotalProgressReporter::CheckAbortGenerateData(), itk::DiscretePrincipalCurvaturesQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ComputeMeanAndGaussianCurvatures(), itk::Concept::AdditiveOperators< T1, T2, T3 >::Constraints::const_constraints(), itk::Concept::MultiplyOperator< T1, T2, T3 >::Constraints::const_constraints(), itk::Concept::DivisionOperators< T1, T2, T3 >::Constraints::const_constraints(), itk::Concept::BitwiseOperators< T1, T2, T3 >::Constraints::const_constraints(), itk::Concept::BracketOperator< T1, T2, T3 >::Constraints::const_constraints(), itk::Functor::DivideOrZeroOut< TNumerator, TDenominator, TOutput >::DivideOrZeroOut(), itk::Versor< T >::Epsilon(), itk::DiscreteMeanCurvatureQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::EstimateCurvature(), itk::QuadEdgeMeshEulerOperatorSplitEdgeFunction< TMesh, TQEType >::Evaluate(), itk::MatrixOrthogonalityTolerance< double >::GetTolerance(), itk::ConstNeighborhoodIterator< TImage, TBoundaryCondition >::IsAtEnd(), itk::Functor::Sigmoid< TInput, TOutput >::operator()(), itk::operator<<(), itk::PDEDeformableRegistrationFunction< TFixedImage, TMovingImage, TDisplacementField >::SetEnergy(), itk::GPUPDEDeformableRegistrationFunction< TFixedImage, TMovingImage, TDisplacementField >::SetEnergy(), itk::LevelSetFunction< TImageType >::SetEpsilonMagnitude(), itk::PDEDeformableRegistrationFunction< TFixedImage, TMovingImage, TDisplacementField >::SetGradientStep(), itk::GPUPDEDeformableRegistrationFunction< TFixedImage, TMovingImage, TDisplacementField >::SetGradientStep(), itk::PDEDeformableRegistrationFunction< TFixedImage, TMovingImage, TDisplacementField >::SetNormalizeGradient(), itk::GPUPDEDeformableRegistrationFunction< TFixedImage, TMovingImage, TDisplacementField >::SetNormalizeGradient(), and TestPointsContainer().
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
\[ \pi \]
Definition at line 66 of file itkMath.h.
Referenced by itk::DiscretePrincipalCurvaturesQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::ComputeMeanAndGaussianCurvatures(), itk::DelaunayConformingQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::Dyer07Criterion(), itk::DiscreteGaussianCurvatureQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::EstimateCurvature(), itk::GaborKernelFunction< TRealValueType >::Evaluate(), itk::Statistics::MersenneTwisterRandomVariateGenerator::GetNormalVariate(), itk::PhasedArray3DSpecialCoordinatesImage< TPixel >::PhasedArray3DSpecialCoordinatesImage(), and itk::WindowedSincInterpolateImageFunction< TInputImage, VRadius, TWindowFunction, TBoundaryCondition, TCoordRep >::Sinc().
|
staticconstexpr |
|
staticconstexpr |
\[ \frac{\pi}{2} \]
Definition at line 70 of file itkMath.h.
Referenced by itk::PhasedArray3DSpecialCoordinatesImage< TPixel >::TransformPhysicalPointToContinuousIndex(), and itk::PhasedArray3DSpecialCoordinatesImage< TPixel >::TransformPhysicalPointToIndex().
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |