code: @Override
  	public void computeGradient(S jacLeft , S jacRight ,
  								DMatrixRMaj residuals, DMatrixRMaj gradient) {
  
  		// Find the gradient using the two matrices for Jacobian
  		// g = J'*r = [L,R]'*r
  		x1.reshape(jacLeft.getNumCols(),1);
  		x2.reshape(jacRight.getNumCols(),1);
  		multTransA(jacLeft,residuals,x1);
  		multTransA(jacRight,residuals,x2);
  
  		CommonOps_DDRM.insert(x1,gradient,0,0);
  		CommonOps_DDRM.insert(x2,gradient,x1.numRows,0);
  	}
docs: Computes the gradient using Schur complement
  
  @param jacLeft (Input) Left side of Jacobian
  @param jacRight (Input) Right side of Jacobian
  @param residuals (Input) Residuals
  @param gradient (Output) Gradient