# NCFlatExt

description:

[IsFlatExt,SDP_data,rank_d,V_new,M_d,var,sizeM_small,tol] = NCFlatExt(f) checks whether the extension of the dual moment matrix M_{d} over M_{d-1}, where d=deg(f), is flat.

arguments:

f is an NCpoly representing a polynomial.

output:

IsFlatExt == 1 iff there is a flat extension

SDP_data is a structure holding all the data used in SDP solver, undelying the M_d problem

rank_d equals the rank of the matrix M_d (and the rank of M_{d-1} in  case of flatness)

V_new is a cell representing the vector of all monomials with degree <=d

M_d is the M_{d} moment matrix (dual to the NCcycSos problem)

var is a cell of all variables contained in the underlying polynomial f

sizeM_small is the size of the square matrix M_{d-1}

tol equals the tolerance used to compute rank_d

possible usage:

NCFlatExt(f)

example:

>> IsFlatExt = NCFlatExt(BMV(8,2))

***** Polynomial does not have a flat extension *****

IsFlatExt = 0

>> f = 3 + x^2 + 2*x^3 + 2*x^4 + x^6 - 4*x^4*y + x^4*y^2 + 4*x^3*y + 2*x^3*y^2 - 2*x^3*y^3 + 2*x^2*y - x^2*y^2 + 2*x^2*y^3 - 4*x*y + 8*x*y*x*y + 4*x*y^2 + 6*x*y^4 - 2*y + y^2 - 4*y^3 +  2*y^4 + 2*y^6;

>> IsFlatExt = NCFlatExt(f)

***** Polynomial has a flat extension *****

IsFlatExt = 1