ITK
4.3.0
Insight Segmentation and Registration Toolkit
|
Namespaces | |
namespace | Detail |
Functions | |
template<typename TReturn , typename TInput > | |
TReturn | CastWithRangeCheck (TInput x) |
template<TReturn , typename TInput > | |
Ceil (TInput x) | |
template<typename T > | |
bool | FloatAlmostEqual (T x1, T x2, typename Detail::FloatIEEE< T >::IntType maxUlps=4, typename Detail::FloatIEEE< T >::FloatType maxAbsoluteDifference=0.1 *NumericTraits< T >::epsilon()) |
template<typename T > | |
Detail::FloatIEEE< T >::IntType | FloatDifferenceULP (T x1, T x2) |
template<TReturn , typename TInput > | |
Floor (TInput x) | |
template<typename TReturn , typename TInput > | |
TReturn | Round (TInput x) |
template<TReturn , typename TInput > | |
RoundHalfIntegerToEven (TInput x) | |
template<TReturn , typename TInput > | |
RoundHalfIntegerUp (TInput x) | |
Variables | |
static const double | e = 2.7182818284590452354 |
static const double | ln10 = 2.30258509299404568402 |
static const double | ln2 = 0.69314718055994530942 |
static const double | log10e = 0.43429448190325182765 |
static const double | log2e = 1.4426950408889634074 |
static const double | one_over_pi = 0.31830988618379067154 |
static const double | one_over_sqrt2pi = 0.39894228040143267794 |
static const double | pi = 3.14159265358979323846 |
static const double | pi_over_2 = 1.57079632679489661923 |
static const double | pi_over_4 = 0.78539816339744830962 |
static const double | sqrt1_2 = 0.70710678118654752440 |
static const double | sqrt2 = 1.41421356237309504880 |
static const double | two_over_pi = 0.63661977236758134308 |
static const double | two_over_sqrtpi = 1.12837916709551257390 |
|
inline |
This class requires OnlyDefinedForIntegerTypes1 in the form of ( itk::Concept::IsInteger< TReturn > )
This class requires OnlyDefinedForIntegerTypes2 in the form of ( itk::Concept::IsInteger< TInput > )
Definition at line 180 of file itkMath.h.
References itk::NumericTraits< T >::IsPositive(), and itkConceptMacro.
itk::Math::Ceil | ( | TInput | x | ) |
Round towards plus infinity.
The behavior of overflow is undefined due to numerous implementations.
|
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 values to compare |
maxUlps | maximum units in the last place to be considered equal |
maxAbsoluteDifference | maximum absolute difference to be considered equal |
Definition at line 259 of file itkMath.h.
References 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 220 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.
|
inline |
Round towards nearest integer (This is a synonym for RoundHalfIntegerUp)
TReturn | must be an integer type |
TInput | must be float or double |
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
|
The behavior of overflow is undefined due to numerous implementations.
itk::Math::RoundHalfIntegerUp | ( | TInput | x | ) |
Round towards nearest integer.
TReturn | must be an integer type |
TInput | must be float or double halfway cases are rounded upward, e.g. |
The behavior of overflow is undefined due to numerous implementations.
|
static |
The base of the natural logarithm or Euler's number
Definition at line 45 of file itkMath.h.
Referenced by itk::TreeNodeChangeEvent< TTreeType >::CheckEvent(), itk::ProgressReporter::CompletedPixel(), ComputeHash(), 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::LogicalOperators< T1, T2, T3 >::Constraints::const_constraints(), itk::Concept::BracketOperator< T1, T2, T3 >::Constraints::const_constraints(), itk::Functor::DivideOrZeroOut< TInputImage1::PixelType, TInputImage2::PixelType, TOutputImage::PixelType >::DivideOrZeroOut(), itk::DiscreteMeanCurvatureQuadEdgeMeshFilter< TInputMesh, TOutputMesh >::EstimateCurvature(), HashTestImage(), itk::ConstNeighborhoodIterator< TSparseImageType >::IsAtEnd(), itk::MultiLabelSTAPLEImageFilter< TInputImage, TOutputImage, TWeights >::MultiLabelSTAPLEImageFilter(), itk::Functor::Sigmoid< TInputImage::PixelType, TOutputImage::PixelType >::operator()(), itk::operator<<(), RegressionTestImage(), itk::fem::LoadLandmark::SetContainedElement(), itk::fem::ImageMetricLoad< TMoving, TFixed >::SetCurrentEnergy(), itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage, TFemObjectType >::SetElement(), 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(), and itk::GPUPDEDeformableRegistrationFunction< TFixedImage, TMovingImage, TDisplacementField >::SetNormalizeGradient().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 55 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().
|
static |
|
static |
|
static |
|
static |
|
static |