<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>~/ntl-10.5.0test/doc/HNF.cpp.html</title>
<meta name="Generator" content="Vim/8.0">
<meta name="plugin-version" content="vim7.4_v2">
<meta name="syntax" content="cpp">
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">
<meta name="colorscheme" content="macvim">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
* { font-size: 1em; }
.String { color: #4a708b; }
.PreProc { color: #1874cd; }
.Comment { color: #0000ee; font-style: italic; }
.Type { color: #008b00; font-weight: bold; }
-->
</style>
<script type='text/javascript'>
<!--
-->
</script>
</head>
<body>
<pre id='vimCodeElement'>
<span class="Comment">/*</span><span class="Comment">*************************************************************************\</span>
<span class="Comment">MODULE: HNF</span>
<span class="Comment">SUMMARY:</span>
<span class="Comment">A routine for computing Hermite Normal Forms</span>
<span class="Comment">\*************************************************************************</span><span class="Comment">*/</span>
<span class="PreProc">#include </span><span class="String"><NTL/mat_ZZ.h></span>
<span class="Type">void</span> HNF(mat_ZZ& W, <span class="Type">const</span> mat_ZZ& A, <span class="Type">const</span> ZZ& D);
<span class="Comment">// The input matrix A is an n x m matrix of rank m (so n >= m), and D</span>
<span class="Comment">// is a multiple of the determinant of the lattice L spanned by the</span>
<span class="Comment">// rows of A. W is computed as the Hermite Normal Form of A; that is,</span>
<span class="Comment">// W is the unique m x m matrix whose rows span L, such that</span>
<span class="Comment">// - W is lower triangular,</span>
<span class="Comment">// - the diagonal entries are positive,</span>
<span class="Comment">// - any entry below the diagonal is a non-negative number</span>
<span class="Comment">// strictly less than the diagonal entry in its column.</span>
<span class="Comment">// Currently, this is implemented using the algorithm of [P. Domich,</span>
<span class="Comment">// R. Kannan and L. Trotter, Math. Oper. Research 12:50-59, 1987].</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->