code: @Override
      protected final double evaluateAsDoublePrimitive(IPidEvaluationArguments<NUMERICTYPE, INTEGRATOR_ARGS_TYPE, DIFFERENTIATOR_ARGS_TYPE> evaluationArguments) {
          // use double primitive
          NUMERICTYPE errorSignal = evaluationArguments.getErrorSignalValue();
          double controlOuput = 0d;
          controlOuput += kp.doubleValue() * errorSignal.doubleValue();
          controlOuput += ki.doubleValue() * i.integrate(evaluationArguments.getIntegratorEvaluationArgs(), errorSignal).doubleValue();
          controlOuput += kd.doubleValue() * d.differentiate(evaluationArguments.getDifferentiatorEvaluationArgs(), errorSignal).doubleValue();
          return controlOuput;
      }
docs: PID entirely.