def eigvalsh(a, b=nil, vals_range:nil, uplo:'U', turbo:false)
    eigh(a, b, vals_only: true, vals_range: vals_range, uplo: uplo, turbo: turbo).first
  end
def eigvalsh(a, b=nil, vals_range:nil, uplo:'U', turbo:false)
    eigh(a, b, vals_only: true, vals_range: vals_range, uplo: uplo, turbo: turbo).first
  end
Obtains the eigenvalues by solving an ordinary or generalized eigenvalue problem
 for a square symmetric / Hermitian matrix.

 @param a [Numo::NArray] square symmetric/hermitian matrix
   (>= 2-dimensinal NArray)
 @param b [Numo::NArray] (optional) square symmetric matrix (>= 2-dimensinal NArray)
   If nil, identity matrix is assumed.
 @param vals_range [Range] (optional)
   The range of indices of the eigenvalues (in ascending order) to be returned.
   If nil or 0...N (N is the size of the matrix a), all eigenvalues are returned.
 @param uplo [String or Symbol] (optional, default='U')
   Access upper ('U') or lower ('L') triangle.
 @return [Numo::NArray] eigenvalues