[X,SDP_orig]=fac_reduct(f,params) is an interactive routine for finding a rational Gram matrix (feasible point) in case of a singular feasible point by doing a facial reduction with an integer vector (or set of orthogonal integer vectors) from the kernel of the given feasible point.


f is an NCpoly representing a polynomial.

params.V is a column of monomials to be used as a basis in the SOHS decomposition. It is optional; if the command is called without it, it is constructed automatically.

params.Vmethod sets the method to get the vector of possible monomials. If it equals -1, the program uses the flawed Newton Cyclic Chip Method to get the vector of possible monomials and if it equals 0, the program constructs all posible monomials from the Newton polytope using alpha degrees. Default value is chosen in NCcycSos.

params.obj set the objective function C for the SDP solver. If it equals 0, C is a square matrix of zeros (finding the analytic center) and if it equals 1, C is the identity matrix (minimizing rank). Default is 0.



X is a Gram matrix. If rationalizing was done in the routine X is a rational feasible point represented by a cell of two matrices; numerators and denominators. If rationalizing was not done X is floating point feasible point as a matrix.

SDP_orig is a structure holding all the data used in the original SDP

possible usage:

fac_reduct(f), fac_reduct(f, params)