Commit 1662e41e authored by Amir MOHAMMADI's avatar Amir MOHAMMADI

use nexttoward instead of epsilon since epsilon is too small sometimes

parent b99f8bb7
Pipeline #14132 failed with stages
in 3 minutes and 7 seconds
......@@ -126,7 +126,7 @@ double bob::measure::farThreshold(const blitz::Array<double, 1> &negatives,
double epsilon = std::numeric_limits<double>::epsilon();
// handle special case of far == 1 without any iterating
if (far_value >= 1 - epsilon)
return scores(0) - epsilon;
return std::nexttoward(scores(0), scores(0)-1);
// Reverse negatives so the end is the start. This way the code below will be
// very similar to the implementation in the frrThreshold function. The
......@@ -139,7 +139,7 @@ double bob::measure::farThreshold(const blitz::Array<double, 1> &negatives,
// since the comparison is `if score >= threshold then accept as genuine`, we
// can choose the largest score value + eps as the threshold so that we can
// get for 0% FAR.
double valid_threshold = scores(current_position) + epsilon;
double valid_threshold = std::nexttoward(scores(current_position), scores(current_position)+1);
double current_threshold;
double future_far;
while (current_position < total_count) {
......@@ -181,7 +181,7 @@ double bob::measure::frrThreshold(const blitz::Array<double, 1> &negatives,
double epsilon = std::numeric_limits<double>::epsilon();
// handle special case of frr == 1 without any iterating
if (frr_value >= 1 - epsilon)
return scores(scores.extent(0)-1) + epsilon;
return std::nexttoward(scores(scores.extent(0)-1), scores(scores.extent(0)-1)+1);
// Move towards the end of array changing the threshold until we pass the
// desired FRR value. Starting with a threshold that corresponds to FRR == 0.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment