anchor.diff:         LocateCandidate, MAX_LOCATE_SUBDIVISIONS, LOCATE_STD_CAP, &
          SQRT_PREC, REDUCE_THRESHOLD, scalar_func, dqagse, &
          specialize_curve_generic, specialize_curve_quadratic, &
  -       subdivide_nodes_generic, split_candidate, projection_error, can_reduce
  +       subdivide_nodes_generic, split_candidate, allocate_candidates, &
  +       update_candidates, projection_error, can_reduce
     public &
          CurveData, LOCATE_MISS, LOCATE_INVALID, evaluate_curve_barycentric, &
          evaluate_multi, specialize_curve, evaluate_hodograph, subdivide_nodes, &
  
positive.code: 
    end subroutine newton_refine
  
    subroutine split_candidate(num_nodes, dimension_, candidate, both_halves)
  
      integer(c_int), intent(in) :: num_nodes, dimension_
      type(LocateCandidate), intent(in) :: candidate
      type(LocateCandidate), intent(out) :: both_halves(2)
  
      ! Left half.
      both_halves(1)%start = candidate%start
      both_halves(1)%end_ = 0.5_dp * (candidate%start + candidate%end_)
      ! Right half.
      both_halves(2)%start = both_halves(1)%end_
      both_halves(2)%end_ = candidate%end_
  
      ! Allocate the new nodes and call sub-divide.
      allocate(both_halves(1)%nodes(num_nodes, dimension_))
      allocate(both_halves(2)%nodes(num_nodes, dimension_))
      call subdivide_nodes( &
           num_nodes, dimension_, candidate%nodes, &
           both_halves(1)%nodes, both_halves(2)%nodes)
  
    end subroutine split_candidate
  
    subroutine locate_point( &
         num_nodes, dimension_, nodes, point, s_approx) &
  
negative.code:     ! Compute the s-parameter as the mean of the **start** and
      ! **end** parameters.
      allocate(s_params(2 * num_candidates))
      if (is_even) then
         ! NOTE: We "exclude" this block from ``lcov`` because it can never
         !       be invoked while ``MAX_LOCATE_SUBDIVISIONS`` is even.
         s_params(:num_candidates) = ( &
              candidates_odd(:num_candidates)%start)  ! LCOV_EXCL_LINE
         s_params(num_candidates + 1:) = ( &
              candidates_odd(:num_candidates)%end_)  ! LCOV_EXCL_LINE
      else
         s_params(:num_candidates) = candidates_even(:num_candidates)%start
         s_params(num_candidates + 1:) = candidates_even(:num_candidates)%end_
      end if
      s_approx = sum(s_params) / (2 * num_candidates)
  
      std_dev = sqrt(sum((s_params - s_approx)**2) / (2 * num_candidates))
  