X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Fdoubly_nonnegative.py;h=5e10e1aebaad4c17de9e129681a57bb736e72886;hb=7af2b9d146a6bf2fb8acc3c342983de577b417ce;hp=9dcae61856e6e9d5bda7f689cadf905de27290ac;hpb=fe9ce8d587b741f3094af4a6c98c7b41811318af;p=sage.d.git diff --git a/mjo/cone/doubly_nonnegative.py b/mjo/cone/doubly_nonnegative.py index 9dcae61..5e10e1a 100644 --- a/mjo/cone/doubly_nonnegative.py +++ b/mjo/cone/doubly_nonnegative.py @@ -14,9 +14,8 @@ It is represented typically by either `\mathcal{D}^{n}` or from sage.all import * from mjo.cone.symmetric_psd import (factor_psd, - is_symmetric_psd, random_symmetric_psd) -from mjo.matrix_vector import isomorphism +from mjo.basis_repr import basis_repr def is_doubly_nonnegative(A): @@ -63,7 +62,7 @@ def is_doubly_nonnegative(A): # It's nonnegative, so all we need to do is check that it's # symmetric positive-semidefinite. - return is_symmetric_psd(A) + return A.is_positive_semidefinite() @@ -354,7 +353,7 @@ def is_extreme_doubly_nonnegative(A): # Short circuit, we know the zero matrix is extreme. return True - if not is_symmetric_psd(A): + if not A.is_positive_semidefinite(): return False # Step 1.5, appeal to Theorem 3.1 in reference #1 to short @@ -383,7 +382,7 @@ def is_extreme_doubly_nonnegative(A): # can't compute the dimension of a set of matrices anyway, so we # convert them all to vectors and just ask for the dimension of the # resulting vector space. - (phi, phi_inverse) = isomorphism(A.matrix_space()) + (phi, phi_inverse) = basis_repr(A.matrix_space()) vectors = map(phi,spanning_set) V = span(vectors, A.base_ring()) @@ -530,7 +529,7 @@ def random_extreme_doubly_nonnegative(V, accept_zero=True, rank=None): """ - if not is_admissible_extreme_rank(rank, V.dimension()): + if rank is not None and not is_admissible_extreme_rank(rank, V.dimension()): msg = 'Rank %d not possible in dimension %d.' raise ValueError(msg % (rank, V.dimension()))