@Override
    protected final long evaluateAsLongPrimitive(IPidEvaluationArguments<NUMERICTYPE, INTEGRATOR_ARGS_TYPE, DIFFERENTIATOR_ARGS_TYPE> evaluationArguments) {
        // use long primitive via string conversion (which does not contain any
        // loss of precision)
        NUMERICTYPE errorSignal = evaluationArguments.getErrorSignalValue();
        long controlOuput = 0l;
        controlOuput += kp.longValue() * errorSignal.longValue();
        controlOuput += ki.longValue() * i.integrate(evaluationArguments.getIntegratorEvaluationArgs(), errorSignal).longValue();
        controlOuput += kd.longValue() * d.differentiate(evaluationArguments.getDifferentiatorEvaluationArgs(), errorSignal).longValue();
        return controlOuput;
    }
@ Override protected final long evaluateAsLongPrimitive ( IPidEvaluationArguments < NUMERICTYPE , INTEGRATOR_ARGS_TYPE , DIFFERENTIATOR_ARGS_TYPE > evaluationArguments ) { NUMERICTYPE errorSignal = evaluationArguments . getErrorSignalValue ( ) ; long controlOuput = 0l ; controlOuput += kp . longValue ( ) * errorSignal . longValue ( ) ; controlOuput += ki . longValue ( ) * i . integrate ( evaluationArguments . getIntegratorEvaluationArgs ( ) , errorSignal ) . longValue ( ) ; controlOuput += kd . longValue ( ) * d . differentiate ( evaluationArguments . getDifferentiatorEvaluationArgs ( ) , errorSignal ) . longValue ( ) ; return controlOuput ; }
PID entirely.