docs: protected void computeNumericalJacobian( DMatrixRMaj param ,
                                               DMatrixRMaj jacobian )
      {
          double invDelta = 1.0/DELTA;
  
          function.compute(param, temp0);
  
          // compute the jacobian by perturbing the parameters slightly
          // then seeing how it effects the results.
          for( int i = 0; i < param.getNumElements(); i++ ) {
              param.data[i] += DELTA;
              function.compute(param, temp1);
              // compute the difference between the two parameters and divide by the delta
              // temp1 = (temp1 - temp0)/delta
              CommonOps_DDRM.add(invDelta,temp1,-invDelta,temp0,temp1);
  
              // copy the results into the jacobian matrix
              // J(i,:) = temp1
              CommonOps_DDRM.insert(temp1,jacobian,0,i);
  
              param.data[i] -= DELTA;
          }
      }