Nuclear norms

Header file

Implementation

The following routines compute the sum of the singular values. This is equivalent to both the KyFan norm with \(k=n\) and the Schatten norm with \(p=1\). Note that the nuclear norm is dual to the two-norm, which is the Schatten norm with \(p=\infty\).

C++ API

Base<F> NuclearNorm(const Matrix<F> &A)
Base<F> NuclearNorm(const AbstractDistMatrix<F> &A)
Base<F> SymmetricNuclearNorm(UpperOrLower uplo, const Matrix<F> &A)
Base<F> SymmetricNuclearNorm(UpperOrLower uplo, const AbstractDistMatrix<F> &A)
Base<F> HermitianNuclearNorm(UpperOrLower uplo, const Matrix<F> &A)
Base<F> HermitianNuclearNorm(UpperOrLower uplo, const AbstractDistMatrix<F> &A)

C API

ElError ElNuclearNorm_s(ElConstMatrix_s A, float* norm)
ElError ElNuclearNorm_d(ElConstMatrix_d A, double* norm)
ElError ElNuclearNorm_c(ElConstMatrix_c A, float* norm)
ElError ElNuclearNorm_z(ElConstMatrix_z A, double* norm)
ElError ElNuclearNormDist_s(ElConstDistMatrix_s A, float* norm)
ElError ElNuclearNormDist_d(ElConstDistMatrix_d A, double* norm)
ElError ElNuclearNormDist_c(ElConstDistMatrix_c A, float* norm)
ElError ElNuclearNormDist_z(ElConstDistMatrix_z A, double* norm)
ElError ElSymmetricNuclearNorm_s(ElUpperOrLower uplo, ElConstMatrix_s A, float* norm)
ElError ElSymmetricNuclearNorm_d(ElUpperOrLower uplo, ElConstMatrix_d A, double* norm)
ElError ElSymmetricNuclearNorm_c(ElUpperOrLower uplo, ElConstMatrix_c A, float* norm)
ElError ElSymmetricNuclearNorm_z(ElUpperOrLower uplo, ElConstMatrix_z A, double* norm)
ElError ElSymmetricNuclearNormDist_s(ElUpperOrLower uplo, ElConstDistMatrix_s A, float* norm)
ElError ElSymmetricNuclearNormDist_d(ElUpperOrLower uplo, ElConstDistMatrix_d A, double* norm)
ElError ElSymmetricNuclearNormDist_c(ElUpperOrLower uplo, ElConstDistMatrix_c A, float* norm)
ElError ElSymmetricNuclearNormDist_z(ElUpperOrLower uplo, ElConstDistMatrix_z A, double* norm)
ElError ElHermitianNuclearNorm_c(ElUpperOrLower uplo, ElConstMatrix_c A, float* norm)
ElError ElHermitianNuclearNorm_z(ElUpperOrLower uplo, ElConstMatrix_z A, double* norm)
ElError ElHermitianNuclearNormDist_c(ElUpperOrLower uplo, ElConstDistMatrix_c A, float* norm)
ElError ElHermitianNuclearNormDist_z(ElUpperOrLower uplo, ElConstDistMatrix_z A, double* norm)

Python API

TODO