  A popular numerical method to compute SOS (sum of squares of polynomials)
decompositions for polynomials is to transform the problem into semi-definite
programming (SDP) problems and then solve them by SDP solvers. In this paper,
we focus on reducing the sizes of inputs to SDP solvers to improve the
efficiency and reliability of those SDP based methods. Two types of
polynomials, convex cover polynomials and split polynomials, are defined. A
convex cover polynomial or a split polynomial can be decomposed into several
smaller sub-polynomials such that the original polynomial is SOS if and only if
the sub-polynomials are all SOS. Thus the original SOS problem can be
decomposed equivalently into smaller sub-problems. It is proved that convex
cover polynomials are split polynomials and it is quite possible that sparse
polynomials with many variables are split polynomials, which can be efficiently
detected in practice. Some necessary conditions for polynomials to be SOS are
also given, which can help refute quickly those polynomials which have no SOS
representations so that SDP solvers are not called in this case. All the new
results lead to a new SDP based method to compute SOS decompositions, which
improves this kind of methods by passing smaller inputs to SDP solvers in some
cases. Experiments show that the number of monomials obtained by our program is
often smaller than that by other SDP based software, especially for polynomials
with many variables and high degrees. Numerical results on various tests are
reported to show the performance of our program.
