docs: static void computePseudo(DMatrixRMaj A , DMatrixRMaj output ) {
  		final int N = A.numRows;
  
  		DMatrix2x2 m = new DMatrix2x2();
  		DMatrix2x2 m_inv = new DMatrix2x2();
  
  		for (int i = 0, index=0; i < N; i++) {
  			double a_i1 = A.data[index++];
  			double a_i2 = A.data[index++];
  			m.a11 += a_i1*a_i1;
  			m.a12 += a_i1*a_i2;
  			m.a22 += a_i2*a_i2;
  		}
  		m.a21 = m.a12;
  		CommonOps_DDF2.invert(m,m_inv);
  
  		output.reshape(2,N);
  		for (int i = 0,index=0; i < N; i++) {
  			output.data[i] = A.data[index++]*m_inv.a11 + A.data[index++]*m_inv.a12;
  		}
  		int end = 2*N;
  		for (int i = N,A_index=0; i < end; i++) {
  			output.data[i] = A.data[A_index++]*m_inv.a21 + A.data[A_index++]*m_inv.a22;
  		}
  	}