def test_mc01td_D(): """ test_mc01td_D: test discrete option """ (dp, stable, nz) = mc01td('D', 3, [1, 2, 3, 4]) assert dp == 3 assert stable == 1 assert nz == 0 (dp, stable, nz) = mc01td('D', 3, [4, 3, 2, 1]) assert dp == 3 assert stable == 0 assert nz == 3
def test_mc01td_D(self): """ test_mc01td_D: test discrete option """ (dp, stable, nz) = mc01td('D', 3, [1, 2, 3, 4]) self.assertEqual(dp, 3) self.assertEqual(stable, 1) self.assertEqual(nz, 0) (dp, stable, nz) = mc01td('D', 3, [4, 3, 2, 1]) self.assertEqual(dp, 3) self.assertEqual(stable, 0) self.assertEqual(nz, 3)
def mc01td_example(): p = array([2, 0, 1, -1, 1]) out = slycot.mc01td('C',4,p) print('--- Example for mc01td ...') if out[1]: print('The polynomial is stable') else: print('The polynomial has', out[2], 'unstable zeros')
def test_mc01td(): """ test_mc01td: doc example data from http://slicot.org/objects/software/shared/doc/MC01TD.html """ (dp, stable, nz) = mc01td('C', 4, [2, 0, 1, -1, 1]) assert dp == 4 assert stable == 0 assert nz == 2
def test_mc01td(self): """ test_mc01td: doc example data from http://slicot.org/objects/software/shared/doc/MC01TD.html """ (dp, stable, nz) = mc01td('C', 4, [2, 0, 1, -1, 1]) self.assertEqual(dp, 4) self.assertEqual(stable, 0) self.assertEqual(nz, 2)
def test_mc01td_warnings(self): """ test_mc01td_warnings: Test warnings """ T = [([0, 0], "entry P(x) is the zero polynomial."), ([0, 1], "P(x) may have zeros very close to stability boundary."), ([1, 0], "The degree of P(x) has been reduced to 0")] for P, m in T: with warnings.catch_warnings(record=True) as w: (dp, stable, nz) = mc01td('C', len(P) - 1, P) self.assertEqual(str(w[0].message), m)
def test_mc01td_warnings(): """ test_mc01td_warnings: Test warnings """ T = [([0, 0], "Entry ``P(x)`` is the zero polynomial."), ([0, 1], "The polynomial ``P(x)`` is most probably unstable,\n" "although it may be stable with one or more zeros\n" "very close to the imaginary axis.\n" "The number of unstable zeros (NZ) is not determined."), ([1, 0], "The degree of the polynomial ``P(x)`` has been\n" "reduced to ``(DB - 1)`` because\n" "``P(DB+1-j) = 0.0`` on entry\n" "for ``j = 0, 1,..., k-1`` and ``P(DB+1-k) <> 0.0``.")] for P, m in T: with pytest.warns(SlycotResultWarning, match=re.escape(m)): (dp, stable, nz) = mc01td('C', len(P) - 1, P)