code: public boolean process( List<AssociatedPair> points , FastQueue<DMatrixRMaj> solutions ) {
  		if( points.size() != 5 )
  			throw new IllegalArgumentException("Exactly 5 points are required, not "+points.size());
  		solutions.reset();
  
  		// Computes the 4-vector span which contains E.  See equations 7-9
  		computeSpan(points);
  
  		// Construct a linear system based on the 10 constraint equations. See equations 5,6, and 10 .
  		helper.setNullSpace(X,Y,Z,W);
  		helper.setupA1(A1);
  		helper.setupA2(A2);
  
  		// instead of Gauss-Jordan elimination LU decomposition is used to solve the system
  		solver.setA(A1);
  		solver.solve(A2, C);
  
  		// construct the z-polynomial matrix.  Equations 11-14
  		helper.setDeterminantVectors(C);
  		helper.extractPolynomial(poly.getCoefficients());
  
  		if( !findRoots.process(poly) )
  			return false;
  
  		for( Complex_F64 c : findRoots.getRoots() ) {
  			if( !c.isReal() )
  				continue;
  
  			solveForXandY(c.real);
  
  			DMatrixRMaj E = solutions.grow();
  
  			for( int i = 0; i < 9; i++ ) {
  				E.data[i] = x*X[i] + y*Y[i] + z*Z[i] + W[i];
  			}
  		}
  
  		return true;
  	}
docs: Computes the essential matrix from point correspondences.
  
  @param points Input: List of points correspondences in normalized image coordinates
  @param solutions Output: Storage for the found solutions.   .
  @return true for success or false if a fault has been detected