diff --git a/Testing/Code/BasicFilters/CMakeLists.txt b/Testing/Code/BasicFilters/CMakeLists.txt
index 830d474ffefa7d8e36a403042358f3b74d0c283c..ce2431ae98f06c004cf10e79c6ac3ba920740d2e 100644
--- a/Testing/Code/BasicFilters/CMakeLists.txt
+++ b/Testing/Code/BasicFilters/CMakeLists.txt
@@ -831,7 +831,9 @@ ${TEMP}/bfTvVectorImageToAmplitudeImageFilterOutput.tif
          otbFlexibleDistanceWithMissingValueNew)
 
   ADD_TEST(bfTuFlexibleDistanceWithMissingValue ${BASICFILTERS_TESTS8}
-         otbFlexibleDistanceWithMissingValue)
+          otbFlexibleDistanceWithMissingValue
+          0.00000001
+)
 
 # -------            otb::LabelizeNeighborhoodConnectedImageFilter   ----------------------------
 
diff --git a/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx b/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx
index 512c4ebe0b95d6197193e54307eea92221598bc9..36d6a5a0ac5d55176d8a28c6e9848846598f480b 100644
--- a/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx
+++ b/Testing/Code/BasicFilters/otbFlexibleDistanceWithMissingValue.cxx
@@ -21,6 +21,7 @@ PURPOSE.  See the above copyright notices for more information.
 
 #include <iostream>
 #include <cstdlib>
+#include <iomanip>
 #include "itkVariableLengthVector.h"
 #include "otbFlexibleDistanceWithMissingValue.h"
 
@@ -30,7 +31,7 @@ int otbFlexibleDistanceWithMissingValue( int argc, char * argv[] )
   typedef itk::VariableLengthVector< double > VectorType;
   typedef otb::Statistics::FlexibleDistanceWithMissingValue< VectorType > DistanceType;
 
-  const double epsilon = 0.00000001;
+  const double epsilon(atof(argv[1]));
 
   float a = 2.0;
   float b = 0.5;
@@ -45,7 +46,12 @@ int otbFlexibleDistanceWithMissingValue( int argc, char * argv[] )
 
   DistanceType::Pointer dist = DistanceType::New();
   double distanceValue = dist->Evaluate( x, y );
-  std::cout << "Distance: " << distanceValue << std::endl;
+  std::cout << std::setprecision(20)<< std::endl;
+  std::cout << "dim,a,b          : " << dim<<","<<a<<","<<b<< std::endl;
+  std::cout << "dim*vcl_pow(3,b) : " << dim*vcl_pow(3,b) << std::endl;
+  std::cout << "Distance         : " << distanceValue << std::endl;
+  std::cout << "Epsilon          : " << epsilon << std::endl;
+  std::cout << "-> Tests diff    : " << vcl_abs(distanceValue - dim*vcl_pow(3,b)) << std::endl;
 
   if ( vcl_abs(distanceValue - dim*vcl_pow(3,b)) < epsilon )
     return EXIT_SUCCESS;