MCPcopy Index your code
hub / github.com/numpy/numpy / do

Method do

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

Source from the content-addressed store, hash-verified

776 # cond(x, p) for p in (None, 2, -2)
777
778 def do(self, a, b, tags):
779 c = asarray(a) # a might be a matrix
780 if 'size-0' in tags:
781 assert_raises(LinAlgError, linalg.cond, c)
782 return
783
784 # +-2 norms
785 s = linalg.svd(c, compute_uv=False)
786 assert_almost_equal(
787 linalg.cond(a), s[..., 0] / s[..., -1],
788 single_decimal=5, double_decimal=11)
789 assert_almost_equal(
790 linalg.cond(a, 2), s[..., 0] / s[..., -1],
791 single_decimal=5, double_decimal=11)
792 assert_almost_equal(
793 linalg.cond(a, -2), s[..., -1] / s[..., 0],
794 single_decimal=5, double_decimal=11)
795
796 # Other norms
797 cinv = np.linalg.inv(c)
798 assert_almost_equal(
799 linalg.cond(a, 1),
800 abs(c).sum(-2).max(-1) * abs(cinv).sum(-2).max(-1),
801 single_decimal=5, double_decimal=11)
802 assert_almost_equal(
803 linalg.cond(a, -1),
804 abs(c).sum(-2).min(-1) * abs(cinv).sum(-2).min(-1),
805 single_decimal=5, double_decimal=11)
806 assert_almost_equal(
807 linalg.cond(a, np.inf),
808 abs(c).sum(-1).max(-1) * abs(cinv).sum(-1).max(-1),
809 single_decimal=5, double_decimal=11)
810 assert_almost_equal(
811 linalg.cond(a, -np.inf),
812 abs(c).sum(-1).min(-1) * abs(cinv).sum(-1).min(-1),
813 single_decimal=5, double_decimal=11)
814 assert_almost_equal(
815 linalg.cond(a, 'fro'),
816 np.sqrt((abs(c)**2).sum(-1).sum(-1)
817 * (abs(cinv)**2).sum(-1).sum(-1)),
818 single_decimal=5, double_decimal=11)
819
820
821class TestCond(CondCases):

Callers

nothing calls this directly

Calls 6

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

Tested by

no test coverage detected