MCPcopy Create free account
hub / github.com/numpy/numpy / do

Method do

numpy/linalg/tests/test_linalg.py:711–751  ·  view source on GitHub ↗
(self, a, b, tags)

Source from the content-addressed store, hash-verified

709 # cond(x, p) for p in (None, 2, -2)
710
711 def do(self, a, b, tags):
712 c = asarray(a) # a might be a matrix
713 if 'size-0' in tags:
714 assert_raises(LinAlgError, linalg.cond, c)
715 return
716
717 # +-2 norms
718 s = linalg.svd(c, compute_uv=False)
719 assert_almost_equal(
720 linalg.cond(a), s[..., 0] / s[..., -1],
721 single_decimal=5, double_decimal=11)
722 assert_almost_equal(
723 linalg.cond(a, 2), s[..., 0] / s[..., -1],
724 single_decimal=5, double_decimal=11)
725 assert_almost_equal(
726 linalg.cond(a, -2), s[..., -1] / s[..., 0],
727 single_decimal=5, double_decimal=11)
728
729 # Other norms
730 cinv = np.linalg.inv(c)
731 assert_almost_equal(
732 linalg.cond(a, 1),
733 abs(c).sum(-2).max(-1) * abs(cinv).sum(-2).max(-1),
734 single_decimal=5, double_decimal=11)
735 assert_almost_equal(
736 linalg.cond(a, -1),
737 abs(c).sum(-2).min(-1) * abs(cinv).sum(-2).min(-1),
738 single_decimal=5, double_decimal=11)
739 assert_almost_equal(
740 linalg.cond(a, np.inf),
741 abs(c).sum(-1).max(-1) * abs(cinv).sum(-1).max(-1),
742 single_decimal=5, double_decimal=11)
743 assert_almost_equal(
744 linalg.cond(a, -np.inf),
745 abs(c).sum(-1).min(-1) * abs(cinv).sum(-1).min(-1),
746 single_decimal=5, double_decimal=11)
747 assert_almost_equal(
748 linalg.cond(a, 'fro'),
749 np.sqrt((abs(c)**2).sum(-1).sum(-1)
750 * (abs(cinv)**2).sum(-1).sum(-1)),
751 single_decimal=5, double_decimal=11)
752
753
754class TestCond(CondCases):

Callers

nothing calls this directly

Calls 7

asarrayFunction · 0.90
assert_raisesFunction · 0.90
assert_almost_equalFunction · 0.90
absFunction · 0.85
maxMethod · 0.45
sumMethod · 0.45
minMethod · 0.45

Tested by

no test coverage detected