# File lib/linalg/dmatrix/cholesky.rb, line 25
      def cholesky   # :yields: u
         raise DimensionError unless square?
         uplo = Char.new "U"
         n = XInteger.new vsize
         a = self.clone
         lda = n
         info = XInteger.new
         
         Lapack.dpotrf(uplo,
                       n,
                       a,
                       lda,
                       info)

         raise Diverged unless info.value == 0
         
         a.zero_lower
         
         if block_given?
            yield a
         else
            a
         end
      end