docs: private Function1D getDerivativeFunc(final RegressionDataSet backingResidsList, final Regressor h)
      {
          final Function1D fhPrime = (double x) ->
          {
              double c1 = x;//c2=c1-eps
              double eps = 1e-5;
              double c1Pc2 = c1 * 2 - eps;//c1+c2 = c1+c1-eps
              double result = 0;
              /*
              * Computing the estimate of the derivative directly, f'(x) approx = f(x)-f(x-eps)
              *
              * hEst is the output of the new regressor, target is the true residual target value
              *
              * So we have several
              * (hEst_i   c1 - target)^2 - (hEst_i   c2 -target)^2   //4 muls, 3 subs
              * Where c2 = c1-eps
              * Which simplifies to
              * (c1 - c2) hEst ((c1 + c2) hEst - 2 target)
              * =
              * eps hEst (c1Pc2 hEst - 2 target)//3 muls, 1 sub, 1 shift (mul by 2)
              *
              * because eps is on the outside and independent of each
              * individual summation, we can move it out and do the eps
              * multiplicatio ont he final result.  Reducing us to
              *
              * 2 muls, 1 sub, 1 shift (mul by 2)
              *
              * per loop
              *
              * Which reduce computation, and allows us to get the result
              * in one pass of the data
              */
              
              for(int i = 0; i < backingResidsList.size(); i++)
              {
                  double hEst = h.regress(backingResidsList.getDataPoint(i));
                  double target = backingResidsList.getTargetValue(i);
                  
                  result += hEst * (c1Pc2 * hEst - 2 * target);
              }
              
              return result * eps;
          };
  
          return fhPrime;
      }