<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.xen.wiki/index.php?action=history&amp;feed=atom&amp;title=Normal_forms</id>
	<title>Normal forms - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.xen.wiki/index.php?action=history&amp;feed=atom&amp;title=Normal_forms"/>
	<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;action=history"/>
	<updated>2026-06-13T20:20:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=229738&amp;oldid=prev</id>
		<title>FloraC: /* Normal forms for commas */ adopt template. Tenney height -&gt; Tenney norm</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=229738&amp;oldid=prev"/>
		<updated>2026-05-06T08:31:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Normal forms for commas: &lt;/span&gt; adopt template. Tenney height -&amp;gt; Tenney norm&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:31, 6 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l188&quot;&gt;Line 188:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 188:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal form ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal form ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;minimal form&#039;&#039;, or &#039;&#039;reduced form&#039;&#039; shows the simplest comma list sufficient to define the temperament, where the commas are rated by a complexity measure such as the [[Tenney &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;height&lt;/del&gt;]], in which case it is called the &#039;&#039;Tenney-minimal form&#039;&#039;. It is obvious why this form is useful, but unfortunately, it is not easy to find since it is equivalent to the &#039;&#039;shortest basis problem&#039;&#039;, an NP-hard problem. The [[LLL reduction]] algorithm gives a good approximation. Otherwise, it is typically solved heuristically by hand.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;minimal form&#039;&#039;, or &#039;&#039;reduced form&#039;&#039; shows the simplest comma list sufficient to define the temperament, where the commas are rated by a complexity measure such as the [[Tenney &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;norm&lt;/ins&gt;]], in which case it is called the &#039;&#039;Tenney-minimal form&#039;&#039;. It is obvious why this form is useful, but unfortunately, it is not easy to find since it is equivalent to the &#039;&#039;shortest basis problem&#039;&#039;, an NP-hard problem. The [[LLL reduction]] algorithm gives a good approximation. Otherwise, it is typically solved heuristically by hand.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/del&gt;Note&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;: &lt;/del&gt;This is the form shown in the &quot;comma lists&quot; of each temperament on this wiki.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{&lt;/ins&gt;Note&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &lt;/ins&gt;This is the form shown in the &quot;comma lists&quot; of each temperament on this wiki. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Antitransposed defactored Hermite form ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Antitransposed defactored Hermite form ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FloraC</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=229711&amp;oldid=prev</id>
		<title>Haidilao: Changed a wrong calculation (13 is correct which was written as -13)</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=229711&amp;oldid=prev"/>
		<updated>2026-05-06T03:01:54Z</updated>

		<summary type="html">&lt;p&gt;Changed a wrong calculation (13 is correct which was written as -13)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:01, 6 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We may write a list of vals (mapping) as a {{nowrap|(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;)}}-shaped matrix (read &amp;quot;k by d&amp;quot;, i.e. with &amp;#039;&amp;#039;k&amp;#039;&amp;#039; rows and &amp;#039;&amp;#039;d&amp;#039;&amp;#039; columns), where the rows of the matrix are the vals (maps), and &amp;#039;&amp;#039;d&amp;#039;&amp;#039; is the dimensionality of the system&amp;lt;ref group=&amp;quot;note&amp;quot;&amp;gt;Calling the {{w|prime-counting function}}, written π(&amp;#039;&amp;#039;x&amp;#039;&amp;#039;), on the prime limit will give us this number. For examples, {{nowrap| π(2) {{=}} 1 }}, {{nowrap| π(3) {{=}} 2 }}, {{nowrap| π(5) {{=}} 3 }}, {{nowrap| π(7) {{=}} 4 }}, {{nowrap| π(11) {{=}} 5 }}, etc. &amp;lt;/ref&amp;gt;. To get the &amp;#039;&amp;#039;&amp;#039;defactored Hermite form&amp;#039;&amp;#039;&amp;#039;, we do the following:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We may write a list of vals (mapping) as a {{nowrap|(&amp;#039;&amp;#039;k&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;)}}-shaped matrix (read &amp;quot;k by d&amp;quot;, i.e. with &amp;#039;&amp;#039;k&amp;#039;&amp;#039; rows and &amp;#039;&amp;#039;d&amp;#039;&amp;#039; columns), where the rows of the matrix are the vals (maps), and &amp;#039;&amp;#039;d&amp;#039;&amp;#039; is the dimensionality of the system&amp;lt;ref group=&amp;quot;note&amp;quot;&amp;gt;Calling the {{w|prime-counting function}}, written π(&amp;#039;&amp;#039;x&amp;#039;&amp;#039;), on the prime limit will give us this number. For examples, {{nowrap| π(2) {{=}} 1 }}, {{nowrap| π(3) {{=}} 2 }}, {{nowrap| π(5) {{=}} 3 }}, {{nowrap| π(7) {{=}} 4 }}, {{nowrap| π(11) {{=}} 5 }}, etc. &amp;lt;/ref&amp;gt;. To get the &amp;#039;&amp;#039;&amp;#039;defactored Hermite form&amp;#039;&amp;#039;&amp;#039;, we do the following:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# First, defactor it (a.k.a. make sure it is [[saturated]]).&amp;lt;ref group=&quot;note&quot;&amp;gt;Historically, this step was not explicitly recognized as necessary for normal forms. The vast majority of normal forms catalogued on the wiki are not contorted/enfactored in the first place, but specifically defining this canonical form to include this requirement is an important step toward ensuring that, which will prevent redundant temperaments from being catalogued. In various domains, normal forms are often required to be unique, however, canonical forms are required to be unique even more often that normal forms are; according to [[Wikipedia: Canonical form]], &#039;the distinction between &quot;canonical&quot; and &quot;normal&quot; forms varies from subfield to subfield. In most fields, a canonical form specifies a unique representation for every object, while a normal form simply specifies its form, without the requirement of uniqueness.&#039; This is the rationale behind defining &#039;&#039;canonical&#039;&#039; as opposed to merely &#039;&#039;normal&#039;&#039;. To be more specific, The HNF does provide a unique representation of &#039;&#039;matrices&#039;&#039;, i.e. from a perspective of pure mathematics, and so you will certainly find throughout mathematical literature that HNF is described as providing a unique representation, and this is correct. However, when applied to the RTT domain, i.e. to &#039;&#039;mappings&#039;&#039;, the HNF sometimes fails to identify equivalent mappings as such. And the critical flaw with HNF is its failure to defactor matrices – meaning that a contorted mapping matrix has a different Hermite normal form than a non-contorted one with the same kernel – and this is because dividing rows is not a permitted elementary row operation when computing the HNF. See: [https://math.stackexchange.com/a/685922]. The canonical form as described here &#039;&#039;does&#039;&#039; defactor matrices, and therefore it delivers a truly canonical result.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# First, defactor it (a.k.a. make sure it is [[saturated]]).&amp;lt;ref group=&quot;note&quot;&amp;gt;Historically, this step was not explicitly recognized as necessary for normal forms. The vast majority of normal forms catalogued on the wiki are not contorted/enfactored in the first place, but specifically defining this canonical form to include this requirement is an important step toward ensuring that, which will prevent redundant temperaments from being catalogued. In various domains, normal forms are often required to be unique, however, canonical forms are required to be unique even more often that normal forms are; according to [[Wikipedia: Canonical form]], &#039;the distinction between &quot;canonical&quot; and &quot;normal&quot; forms varies from subfield to subfield. In most fields, a canonical form specifies a unique representation for every object, while a normal form simply specifies its form, without the requirement of uniqueness.&#039; This is the rationale behind defining &#039;&#039;canonical&#039;&#039; as opposed to merely &#039;&#039;normal&#039;&#039;. To be more specific, The HNF does provide a unique representation of &#039;&#039;matrices&#039;&#039;, i.e. from a perspective of pure mathematics, and so you will certainly find throughout mathematical literature that HNF is described as providing a unique representation, and this is correct. However, when applied to the RTT domain, i.e. to &#039;&#039;mappings&#039;&#039;, the HNF sometimes fails to identify equivalent mappings as such. And the critical flaw with HNF is its failure to defactor matrices – meaning that a contorted mapping matrix has a different Hermite normal form than a non-contorted one with the same kernel – and this is because dividing rows is not a permitted elementary row operation when computing the HNF. See: [https://math.stackexchange.com/a/685922]. The canonical form as described here &#039;&#039;does&#039;&#039; defactor matrices, and therefore it delivers a truly canonical result.&amp;lt;br &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There is also a rarely mentioned Hermite Canonical Form, or HCF, described here: [http://home.iitk.ac.in/~rksr/html/03CANONICALFACTORIZATIONS.htm], which sort of combines the HNF&#039;s constraint and the [[Matrix echelon forms #RREF|RREF]]&#039;s reduced constraint (all pivots equal 1, all other entries in pivot columns are 0, both above and below the pivot), but this is not useful because due to its constraint that all pivots be 1, it does not preserve periods that are genuinely unit fractions of an octave (at first glance, when a pivot is not equal to 1, it might trigger you to think that the mapping is enfactored. But temperaments can legitimately have generators that divide primes evenly, such as 5-limit blackwood, {{rket| {{map| 5 8 0 }} {{map| 0 0 1 }} }}, which divides the octave into 5 parts. So any form that enforces pivots all be 1&#039;s, such as HCF and RREF, would fail this criteria.) It also does not qualify as an echelon form, which becomes apparent only when you use it on [[rank-deficient]] matrices, because it does not require the rows of all zeros to be at the bottom; instead it (bizarrely, though maybe it is related to how the SNF requires all pivots exactly along the main diagonal) requires the rows to be sorted so that all the pivots fall on the main diagonal.&amp;lt;/ref&amp;gt;. Note that if the matrix was not [[full-rank]], this will result in the elimination of some rows&amp;lt;ref group=&quot;note&quot;&amp;gt;Note that canonicalizing a mapping does not remove trailing &#039;&#039;dimensions&#039;&#039; with only zeros.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There is also a rarely mentioned Hermite Canonical Form, or HCF, described here: [http://home.iitk.ac.in/~rksr/html/03CANONICALFACTORIZATIONS.htm], which sort of combines the HNF&#039;s constraint and the [[Matrix echelon forms#RREF|RREF]]&#039;s reduced constraint (all pivots equal 1, all other entries in pivot columns are 0, both above and below the pivot), but this is not useful because due to its constraint that all pivots be 1, it does not preserve periods that are genuinely unit fractions of an octave (at first glance, when a pivot is not equal to 1, it might trigger you to think that the mapping is enfactored. But temperaments can legitimately have generators that divide primes evenly, such as 5-limit blackwood, {{rket|{{map| 5 8 0 }} {{map| 0 0 1 }}}}, which divides the octave into 5 parts. So any form that enforces pivots all be 1&#039;s, such as HCF and RREF, would fail this criteria.) It also does not qualify as an echelon form, which becomes apparent only when you use it on [[rank-deficient]] matrices, because it does not require the rows of all zeros to be at the bottom; instead it (bizarrely, though maybe it is related to how the SNF requires all pivots exactly along the main diagonal) requires the rows to be sorted so that all the pivots fall on the main diagonal.&amp;lt;/ref&amp;gt;. Note that if the matrix was not [[full-rank]], this will result in the elimination of some rows&amp;lt;ref group=&quot;note&quot;&amp;gt;Note that canonicalizing a mapping does not remove trailing &#039;&#039;dimensions&#039;&#039; with only zeros.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the case of a mapping, this would take the form of an extra column of all zeros to the right of any non-zero entries, or in other words, an unmapped prime higher than other mapped prime. For example you could have {{rket| {{map| 1 0 -4 0 }} {{map| 0 1 4 0 }} }} which is just 5-limit meantone but represented in the 7-limit even though prime 7 is not used.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the case of a mapping, this would take the form of an extra column of all zeros to the right of any non-zero entries, or in other words, an unmapped prime higher than other mapped prime. For example you could have {{rket| {{map| 1 0 -4 0 }} {{map| 0 1 4 0 }} }} which is just 5-limit meantone but represented in the 7-limit even though prime 7 is not used.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;And for a comma basis the form this would take is rotated 90 degrees: a row of all zeros below all other nonzero entries, e.g. [{{vector| 4 -4 1 0 }}].&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;And for a comma basis the form this would take is rotated 90 degrees: a row of all zeros below all other nonzero entries, e.g. [{{vector| 4 -4 1 0 }}].&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l236&quot;&gt;Line 236:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 236:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;math&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\left[ \begin{array} {rrr}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\left[ \begin{array} {rrr}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1 &amp;amp; 0 &amp;amp; -10 &amp;amp; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/del&gt;13 \\&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;1 &amp;amp; 0 &amp;amp; -10 &amp;amp; 13 \\&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0 &amp;amp; 1 &amp;amp; -4 &amp;amp; 4 \\&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0 &amp;amp; 1 &amp;amp; -4 &amp;amp; 4 \\&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\end{array} \right]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\end{array} \right]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l247&quot;&gt;Line 247:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 247:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\left[ \begin{array} {rrr}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\left[ \begin{array} {rrr}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\style{background-color: #F2B2B4; padding: 5px;}{1} &amp;amp; \style{background-color: #F2B2B4; padding: 5px;}{0} &amp;amp; \style{background-color: #F2B2B4; padding: 5px;}{-10} &amp;amp; \style{background-color: #FFF200; padding: 5px;}{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/del&gt;13} \\&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\style{background-color: #F2B2B4; padding: 5px;}{1} &amp;amp; \style{background-color: #F2B2B4; padding: 5px;}{0} &amp;amp; \style{background-color: #F2B2B4; padding: 5px;}{-10} &amp;amp; \style{background-color: #FFF200; padding: 5px;}{13} \\&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\style{background-color: #C6DC67; padding: 5px;}{0} &amp;amp; \style{background-color: #C6DC67; padding: 5px;}{1} &amp;amp; \style{background-color: #FFF200; padding: 5px;}{-4} &amp;amp; \style{background-color: #46C5DD; padding: 5px;}{4} \\&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\style{background-color: #C6DC67; padding: 5px;}{0} &amp;amp; \style{background-color: #C6DC67; padding: 5px;}{1} &amp;amp; \style{background-color: #FFF200; padding: 5px;}{-4} &amp;amp; \style{background-color: #46C5DD; padding: 5px;}{4} \\&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\end{array} \right]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;\end{array} \right]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Haidilao</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=218820&amp;oldid=prev</id>
		<title>FloraC: Change of name of my wiki article</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=218820&amp;oldid=prev"/>
		<updated>2025-12-11T13:40:01Z</updated>

		<summary type="html">&lt;p&gt;Change of name of my wiki article&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:40, 11 December 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot;&gt;Line 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Even though by using the HNF the defactored Hermite form ensures that the {{w|pivot element|pivot}} (first nonzero entry) of each mapping row is a positive &amp;#039;&amp;#039;number&amp;#039;&amp;#039;, this does not necessarily mean that the corresponding generators are all positive &amp;#039;&amp;#039;in pitch&amp;#039;&amp;#039;. For example, the defactored Hermite form of porcupine is the matrix {{rket| {{map| 1 2 3 }} {{map| 0 3 5 }} }}. The second column of this matrix tells us it takes 2 of the first generator and 3 of the second generator to reach its approximation of 3/1. But as we can tell from the first column of this matrix, it takes only 1 of the first generator and nothing else to reach its approximation of 2/1. Therefore, if we move by 2 of the first generator, we are already at this temperament&amp;#039;s approximation of 4/1, and so if we still need to move by 3 of the second generator to reach its approximation of 3/1, then the second generator must be negative. Indeed, it is about 163 cents &amp;#039;&amp;#039;downward&amp;#039;&amp;#039; in pitch. Negative generators like this can be surprising and confusing, and so &amp;#039;&amp;#039;positive-generator forms&amp;#039;&amp;#039; were developed to address this concern.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Even though by using the HNF the defactored Hermite form ensures that the {{w|pivot element|pivot}} (first nonzero entry) of each mapping row is a positive &amp;#039;&amp;#039;number&amp;#039;&amp;#039;, this does not necessarily mean that the corresponding generators are all positive &amp;#039;&amp;#039;in pitch&amp;#039;&amp;#039;. For example, the defactored Hermite form of porcupine is the matrix {{rket| {{map| 1 2 3 }} {{map| 0 3 5 }} }}. The second column of this matrix tells us it takes 2 of the first generator and 3 of the second generator to reach its approximation of 3/1. But as we can tell from the first column of this matrix, it takes only 1 of the first generator and nothing else to reach its approximation of 2/1. Therefore, if we move by 2 of the first generator, we are already at this temperament&amp;#039;s approximation of 4/1, and so if we still need to move by 3 of the second generator to reach its approximation of 3/1, then the second generator must be negative. Indeed, it is about 163 cents &amp;#039;&amp;#039;downward&amp;#039;&amp;#039; in pitch. Negative generators like this can be surprising and confusing, and so &amp;#039;&amp;#039;positive-generator forms&amp;#039;&amp;#039; were developed to address this concern.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To obtain one of these forms, we first need to know whether each generator is positive or negative in pitch. This is conventionally found through the [[Frobenius generator]]s of the temperament, where we find the [[pseudoinverse]] of the mapping &#039;&#039;V&#039;&#039;, which we notate &#039;&#039;V&#039;&#039;&amp;lt;sup&amp;gt;+&amp;lt;/sup&amp;gt;, and multiply this from the left by the just tuning map, {{nowrap| &#039;&#039;J&#039;&#039; {{=}} {{val| 1 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;3 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;5 … log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&#039;&#039;p&#039;&#039; }} }}. Otherwise normed tunings technically do the same. [[Flora Canou]]&#039;s [https://github.com/FloraCanou/temperament_evaluator Temperament Evaluator] has adopted a faster method called &#039;&#039;fast approximate tuning&#039;&#039; (&#039;&#039;FX tuning&#039;&#039;), which short-circuits the question of optimization and focuses on the abstract property of how a temperament splits intervals&amp;lt;ref&amp;gt;[https://github.com/FloraCanou/temperament_evaluator/wiki/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Performance-of-&lt;/del&gt;FX-tuning Github | &#039;&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Performance of &lt;/del&gt;FX tuning&#039;&#039; · FloraCanou/temperament_evaluator Wiki]&amp;lt;/ref&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To obtain one of these forms, we first need to know whether each generator is positive or negative in pitch. This is conventionally found through the [[Frobenius generator]]s of the temperament, where we find the [[pseudoinverse]] of the mapping &#039;&#039;V&#039;&#039;, which we notate &#039;&#039;V&#039;&#039;&amp;lt;sup&amp;gt;+&amp;lt;/sup&amp;gt;, and multiply this from the left by the just tuning map, {{nowrap| &#039;&#039;J&#039;&#039; {{=}} {{val| 1 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;3 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;5 … log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&#039;&#039;p&#039;&#039; }} }}. Otherwise normed tunings technically do the same. [[Flora Canou]]&#039;s [https://github.com/FloraCanou/temperament_evaluator Temperament Evaluator] has adopted a faster method called &#039;&#039;fast approximate tuning&#039;&#039; (&#039;&#039;FX tuning&#039;&#039;), which short-circuits the question of optimization and focuses on the abstract property of how a temperament splits intervals&amp;lt;ref&amp;gt;[https://github.com/FloraCanou/temperament_evaluator/wiki/FX-tuning Github | &#039;&#039;FX tuning&#039;&#039; · FloraCanou/temperament_evaluator Wiki]&amp;lt;/ref&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FloraC</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=218569&amp;oldid=prev</id>
		<title>FloraC: Clarify. Adopt Template: Note. + link</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=218569&amp;oldid=prev"/>
		<updated>2025-12-04T07:36:23Z</updated>

		<summary type="html">&lt;p&gt;Clarify. Adopt Template: Note. + link&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:36, 4 December 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot;&gt;Line 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 47:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another form, called &amp;lt;code&amp;gt;&quot;shift&quot;&amp;lt;/code&amp;gt;, also makes sure the generators are positive, but it maniplates the mapping to period-shift the negative generators instead, except when the temperament&#039;s generator is (-&#039;&#039;p&#039;&#039;)-sheared where &#039;&#039;p&#039;&#039; is the number of periods per equave, in which case it uses the &amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; routine. This form may be more musically useful as the prime harmonics are more often in positive numbers of generator steps.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another form, called &amp;lt;code&amp;gt;&quot;shift&quot;&amp;lt;/code&amp;gt;, also makes sure the generators are positive, but it maniplates the mapping to period-shift the negative generators instead, except when the temperament&#039;s generator is (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;c&#039;&#039; &lt;/ins&gt;- &#039;&#039;p&#039;&#039;)-sheared where &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;c&#039;&#039; is the cot (number of generators to reach the prime in question) and &lt;/ins&gt;&#039;&#039;p&#039;&#039; is the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ploid (&lt;/ins&gt;number of periods per equave&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;, in which case it uses the &amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; routine. This form may be more musically useful as the prime harmonics are more often in positive numbers of generator steps.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/del&gt;Note&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:&#039;&#039;&#039; &lt;/del&gt;Most mappings (though not the &quot;[[mapping to lattice]]&quot;) listed on temperament data pages of this wiki are in the &amp;lt;code&amp;gt;&quot;shift&quot;&amp;lt;/code&amp;gt; form, though some are still in &amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; form.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{&lt;/ins&gt;Note&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| &lt;/ins&gt;Most mappings (though not the &quot;[[mapping to lattice]]&quot;) listed on temperament data pages of this wiki are in the &amp;lt;code&amp;gt;&quot;shift&quot;&amp;lt;/code&amp;gt; form, though some are still in &amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; form. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The generators in defactored Hermite form of septimal meantone is positive already, so its positive-generator forms are the same as its defactored Hermite form, {{mapping| 1 0 -4 -13 | 0 1 4 10 }}, corresponding to generators of ~2/1 and ~3/1. An example of positive-generator form that is different from the defactored Hermite form is the porcupine temperament, elaborated below.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The generators in defactored Hermite form of septimal meantone is positive already, so its positive-generator forms are the same as its defactored Hermite form, {{mapping| 1 0 -4 -13 | 0 1 4 10 }}, corresponding to generators of ~2/1 and ~3/1. An example of positive-generator form that is different from the defactored Hermite form is the porcupine temperament, elaborated below.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l161&quot;&gt;Line 161:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal-generator form ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal-generator form ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;minimal-generator form&#039;&#039; (or &#039;&#039;&#039;mingen form&#039;&#039;&#039;) is a form specific to rank-2 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;temperaments&lt;/del&gt;, where the generator is positive and no greater than half the period.&amp;lt;ref group=&quot;note&quot;&amp;gt;This is somewhat like octave reduction combined with octave inversion, because you can&#039;t just add or subtract half octaves until it&#039;s between 0 and 600 cents; you have to add or subtract octaves until it&#039;s between −600 and +600 cents, then multiply by −1 if it&#039;s negative.&amp;lt;/ref&amp;gt;&amp;lt;ref group=&quot;note&quot;&amp;gt;You could always find a smaller and smaller generator by going negative, so this assumes positive generators.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;minimal-generator form&#039;&#039; (or &#039;&#039;&#039;mingen form&#039;&#039;&#039;) is a form specific to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;rank-2 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;temperament]]s&lt;/ins&gt;, where the generator is positive and no greater than half the period.&amp;lt;ref group=&quot;note&quot;&amp;gt;This is somewhat like octave reduction combined with octave inversion, because you can&#039;t just add or subtract half octaves until it&#039;s between 0 and 600 cents; you have to add or subtract octaves until it&#039;s between −600 and +600 cents, then multiply by −1 if it&#039;s negative.&amp;lt;/ref&amp;gt;&amp;lt;ref group=&quot;note&quot;&amp;gt;You could always find a smaller and smaller generator by going negative, so this assumes positive generators.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Graham Breed]]&#039;s [http://x31eq.com/temper/ &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;temperament finder&lt;/del&gt;] uses this form for all rank-2 temperaments. Septimal meantone in minimal-generator form is {{mapping| 1 2 4 7 | 0 -1 -4 -10 }}, corresponding to generators of ~2/1 and ~4/3. [[Kite Giedraitis]]&#039;s [[pergen]] also uses this form, except for when the generator is a perfect fifth.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Graham Breed]]&#039;s [http://x31eq.com/temper/ &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Temperament Finder&lt;/ins&gt;] uses this form for all rank-2 temperaments. Septimal meantone in minimal-generator form is {{mapping| 1 2 4 7 | 0 -1 -4 -10 }}, corresponding to generators of ~2/1 and ~4/3. [[Kite Giedraitis]]&#039;s [[pergen]] also uses this form, except for when the generator is a perfect fifth.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Beyond rank-2, the mingen form of a temperament is no longer unique. You can always get smaller and smaller generators. This is why on Graham Breed&amp;#039;s temperament finding tool, beyond rank-2 he simply uses the Hermite Normal Form.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Beyond rank-2, the mingen form of a temperament is no longer unique. You can always get smaller and smaller generators. This is why on Graham Breed&amp;#039;s temperament finding tool, beyond rank-2 he simply uses the Hermite Normal Form.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FloraC</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=217434&amp;oldid=prev</id>
		<title>Sintel: /* Hermite normal form */ typo</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=217434&amp;oldid=prev"/>
		<updated>2025-11-21T16:36:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Hermite normal form: &lt;/span&gt; typo&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:36, 21 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;Hermite normal form&amp;#039;&amp;#039;&amp;#039;, or HNF for short, is an important normal form that is defined for integer matrices in the mathematical field of linear algebra. An integer matrix is simply a 2D array of integers, and so we can easily think of lists of vals or commas as integer matrices and therefore leverage HNF in regular temperament theory.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;Hermite normal form&amp;#039;&amp;#039;&amp;#039;, or HNF for short, is an important normal form that is defined for integer matrices in the mathematical field of linear algebra. An integer matrix is simply a 2D array of integers, and so we can easily think of lists of vals or commas as integer matrices and therefore leverage HNF in regular temperament theory.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Hermite normal form is unique. Besides that, it is also the integer analogue of the reduced &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;echelong &lt;/del&gt;form, so it can be used to solve systems of equations in the integers by Gaussian elimination.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Hermite normal form is unique. Besides that, it is also the integer analogue of the reduced &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;echelon &lt;/ins&gt;form, so it can be used to solve systems of equations in the integers by Gaussian elimination.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are slightly different definitions of HNF in use, and if you are using a computer program to compute it, you should take care that the same normal monzo or val list is finally achieved. The definition used by the Wikipedia article on Hermite form, probably the most standard, works as follows. An &amp;#039;&amp;#039;n&amp;#039;&amp;#039;×&amp;#039;&amp;#039;m&amp;#039;&amp;#039; integer matrix &amp;#039;&amp;#039;H&amp;#039;&amp;#039; is in (row-wise) HNF if it satisfies the following conditions:  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are slightly different definitions of HNF in use, and if you are using a computer program to compute it, you should take care that the same normal monzo or val list is finally achieved. The definition used by the Wikipedia article on Hermite form, probably the most standard, works as follows. An &amp;#039;&amp;#039;n&amp;#039;&amp;#039;×&amp;#039;&amp;#039;m&amp;#039;&amp;#039; integer matrix &amp;#039;&amp;#039;H&amp;#039;&amp;#039; is in (row-wise) HNF if it satisfies the following conditions:  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sintel</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=217408&amp;oldid=prev</id>
		<title>FloraC: More accurate describe the &quot;shift&quot; form since the algorithm is working as intended now</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=217408&amp;oldid=prev"/>
		<updated>2025-11-20T15:14:12Z</updated>

		<summary type="html">&lt;p&gt;More accurate describe the &amp;quot;shift&amp;quot; form since the algorithm is working as intended now&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:14, 20 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot;&gt;Line 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 47:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another form, called &amp;lt;code&amp;gt;&quot;shift&quot;&amp;lt;/code&amp;gt;, also makes sure the generators are positive, but it maniplates the mapping to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;equave&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reduce &lt;/del&gt;the negative generators instead, except when the temperament is (-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;)-sheared, in which case it uses the &amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; routine. This form may be more musically useful as the prime harmonics are more often in positive numbers of generator steps.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another form, called &amp;lt;code&amp;gt;&quot;shift&quot;&amp;lt;/code&amp;gt;, also makes sure the generators are positive, but it maniplates the mapping to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;period&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;shift &lt;/ins&gt;the negative generators instead, except when the temperament&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;s generator &lt;/ins&gt;is (-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;p&#039;&#039;&lt;/ins&gt;)-sheared &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;where &#039;&#039;p&#039;&#039; is the number of periods per equave&lt;/ins&gt;, in which case it uses the &amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; routine. This form may be more musically useful as the prime harmonics are more often in positive numbers of generator steps.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Most mappings (though not the &quot;[[mapping to lattice]]&quot;) listed on temperament data pages of this wiki are in the &amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; form.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Most mappings (though not the &quot;[[mapping to lattice]]&quot;) listed on temperament data pages of this wiki are in the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&quot;shift&quot;&amp;lt;/code&amp;gt; form, though some are still in &lt;/ins&gt;&amp;lt;code&amp;gt;&quot;flip&quot;&amp;lt;/code&amp;gt; form.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The generators in defactored Hermite form of septimal meantone is positive already, so its positive-generator forms are the same as its defactored Hermite form, {{mapping| 1 0 -4 -13 | 0 1 4 10 }}, corresponding to generators of ~2/1 and ~3/1. An example of positive-generator form that is different from the defactored Hermite form is the porcupine temperament, elaborated below.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The generators in defactored Hermite form of septimal meantone is positive already, so its positive-generator forms are the same as its defactored Hermite form, {{mapping| 1 0 -4 -13 | 0 1 4 10 }}, corresponding to generators of ~2/1 and ~3/1. An example of positive-generator form that is different from the defactored Hermite form is the porcupine temperament, elaborated below.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l152&quot;&gt;Line 152:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 152:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Equave-reduced-generator form ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Equave-reduced-generator form ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;equave-reduced-generator form&#039;&#039; has the matrix modified from the defactored Hermite normal form so that each generator is equave-reduced, where the [[equave]] can be found as the formal prime represented by the first &#039;&#039;column&#039;&#039; of the matrix, which is usually the octave. For more information, see [[Octave reduction #Generalization]]. This form is closely related to [[ploidacot]]s, so it may be casually called the &#039;&#039;ploidacot form&#039;&#039;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;equave-reduced-generator form&#039;&#039; has the matrix modified from the defactored Hermite normal form so that each generator is equave-reduced, where the [[equave]] can be found as the formal prime represented by the first &#039;&#039;column&#039;&#039; of the matrix, which is usually the octave. For more information, see [[Octave reduction #Generalization]]. This form is closely related to [[ploidacot]]s, so it may be casually called the &#039;&#039;ploidacot form&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. It is implemented in the Temperament Evaluator as &amp;lt;code&amp;gt;&quot;reduce&quot;&amp;lt;/code&amp;gt;&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Consider the case of septimal meantone. As we know, its defactored Hermite normal form is {{rket| {{map| 1 0 -4 -13 }} {{map| 0 1 4 10 }} }} which corresponds to generators of ~2/1 and ~3/1. In this case, as is typical, the formal prime represented by the first column of the matrix is 2, and so the equave is the octave. Therefore, all generators must be octave-reduced. But our second generator is ~3/1, which is not octave-reduced. We must alter the mapping in such a way that this row represents a generator of ~3/2 instead. We can do that here by adding the second row of the mapping to the first: {{rket| {{map| 1 1 0 -3 }} {{map| 0 1 4 10 }} }}. So that is septimal meantone&amp;#039;s equave-reduced-generator form, corresponding to generators of ~2/1 and ~3/2.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Consider the case of septimal meantone. As we know, its defactored Hermite normal form is {{rket| {{map| 1 0 -4 -13 }} {{map| 0 1 4 10 }} }} which corresponds to generators of ~2/1 and ~3/1. In this case, as is typical, the formal prime represented by the first column of the matrix is 2, and so the equave is the octave. Therefore, all generators must be octave-reduced. But our second generator is ~3/1, which is not octave-reduced. We must alter the mapping in such a way that this row represents a generator of ~3/2 instead. We can do that here by adding the second row of the mapping to the first: {{rket| {{map| 1 1 0 -3 }} {{map| 0 1 4 10 }} }}. So that is septimal meantone&amp;#039;s equave-reduced-generator form, corresponding to generators of ~2/1 and ~3/2.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l158&quot;&gt;Line 158:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 158:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Probably the most reliable way to achieve equave-reduced-generator form in general, however, is not to work with a [[generator preimage]] such as ~3/1 and ~3/2. Instead the Frobenius generators may be used, as described in the positive-generator form section just above, and reduction can be accomplished by calling modulo on their cents. For a general discussion of how to manipulate the sizes of generators in this way, see [[Generator size manipulation]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Probably the most reliable way to achieve equave-reduced-generator form in general, however, is not to work with a [[generator preimage]] such as ~3/1 and ~3/2. Instead the Frobenius generators may be used, as described in the positive-generator form section just above, and reduction can be accomplished by calling modulo on their cents. For a general discussion of how to manipulate the sizes of generators in this way, see [[Generator size manipulation]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This form is implemented in the Temperament Evaluator as &amp;lt;code&amp;gt;&quot;reduce&quot;&amp;lt;/code&amp;gt;, which also makes an exception for when the temperament is (-1)-sheared. &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A &lt;/ins&gt;&#039;&#039;positive-equave-reduced-generator form&#039;&#039; is similar to the equave-reduced-generator form, but starts from &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/ins&gt;positive-generator form instead of the defactored Hermite normal form.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The &lt;/del&gt;&#039;&#039;positive-equave-reduced-generator form&#039;&#039; is similar to the equave-reduced-generator form, but starts from &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/del&gt;positive-generator form instead of the defactored Hermite normal form.  &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal-generator form ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal-generator form ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FloraC</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=216467&amp;oldid=prev</id>
		<title>Dummy index: /* Antitransposed defactored Hermite form */</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=216467&amp;oldid=prev"/>
		<updated>2025-11-08T06:23:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Antitransposed defactored Hermite form&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:23, 8 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l267&quot;&gt;Line 267:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 267:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;And there is our canonical comma basis.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;And there is our canonical comma basis.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The set of elements of the original list generates a finitely generated free abelian subgroup of the positive rationals under multiplication, and therefore of any &#039;&#039;p&#039;&#039;-limit group it lives inside. The list in normal form contains a minimal set of ratios, in an ordering of nondecreasing prime limit which is parsimonious in its use of higher limits. For example, if we put [81/80, 126/125] into normal form we obtain [80/81, 57344/59049]. The first interval is 5-limit, which is as small as possible. The second is 7-limit, which must be the case because the group these two generate is 7-limit. However, it uses only 2, 3 and 7 in its prime factorization, parsimoniously rejecting 5 as the next highest prime limit.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The set of elements of the original list generates a finitely generated free abelian subgroup of the positive rationals under multiplication, and therefore of any &#039;&#039;p&#039;&#039;-limit group it lives inside. The list in normal form contains a minimal set of ratios, in an ordering of nondecreasing prime limit which is parsimonious in its use of higher limits. For example, if we put [81/80, 126/125] into normal form we obtain [80/81, 57344/59049]. The first interval is 5-limit, which is as small as possible. The second is 7-limit, which must be the case because the group these two generate is 7-limit. However, it uses only 2, 3 and 7 in its prime factorization, parsimoniously rejecting 5 as the next highest prime limit&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Such comma list that ordered in ascending prime limits was called [http://lumma.org/tuning/gws/commaseq.htm comma sequence]&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that the antitransposed defactored Hermite form of the comma list involves the list being defactored (e.g. torsion to be removed). For example, both [25/27, 35/36] and [25/27, 49/48] characterize beep. But the latter has torsion (i.e. is enfactored), so the former is beep&amp;#039;s antitransposed defactored Hermite form.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that the antitransposed defactored Hermite form of the comma list involves the list being defactored (e.g. torsion to be removed). For example, both [25/27, 35/36] and [25/27, 49/48] characterize beep. But the latter has torsion (i.e. is enfactored), so the former is beep&amp;#039;s antitransposed defactored Hermite form.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dummy index</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=204748&amp;oldid=prev</id>
		<title>FloraC: /* Normal forms for mappings */ final touch</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=204748&amp;oldid=prev"/>
		<updated>2025-07-18T16:14:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Normal forms for mappings: &lt;/span&gt; final touch&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:14, 18 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l41&quot;&gt;Line 41:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Positive-generator forms ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Positive-generator forms ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Even though by using the HNF the defactored Hermite form ensures that the pivot (first nonzero entry) of each mapping row is a positive &#039;&#039;number&#039;&#039;, this does not necessarily mean that the corresponding generators are all positive &#039;&#039;in pitch&#039;&#039;. For example, the defactored Hermite form of porcupine is the matrix {{rket| {{map| 1 2 3 }} {{map| 0 3 5 }} }}. The second column of this matrix tells us it takes 2 of the first generator and 3 of the second generator to reach its approximation of 3/1. But as we can tell from the first column of this matrix, it takes only 1 of the first generator and nothing else to reach its approximation of 2/1. Therefore, if we move by 2 of the first generator, we are already at this temperament&#039;s approximation of 4/1, and so if we still need to move by 3 of the second generator to reach its approximation of 3/1, then the second generator must be negative. Indeed, it is about 163 cents &#039;&#039;downward&#039;&#039; in pitch. Negative generators like this can be surprising and confusing, and so &#039;&#039;positive-generator forms&#039;&#039; were developed to address this concern.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Even though by using the HNF the defactored Hermite form ensures that the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{w|&lt;/ins&gt;pivot &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;element|pivot}} &lt;/ins&gt;(first nonzero entry) of each mapping row is a positive &#039;&#039;number&#039;&#039;, this does not necessarily mean that the corresponding generators are all positive &#039;&#039;in pitch&#039;&#039;. For example, the defactored Hermite form of porcupine is the matrix {{rket| {{map| 1 2 3 }} {{map| 0 3 5 }} }}. The second column of this matrix tells us it takes 2 of the first generator and 3 of the second generator to reach its approximation of 3/1. But as we can tell from the first column of this matrix, it takes only 1 of the first generator and nothing else to reach its approximation of 2/1. Therefore, if we move by 2 of the first generator, we are already at this temperament&#039;s approximation of 4/1, and so if we still need to move by 3 of the second generator to reach its approximation of 3/1, then the second generator must be negative. Indeed, it is about 163 cents &#039;&#039;downward&#039;&#039; in pitch. Negative generators like this can be surprising and confusing, and so &#039;&#039;positive-generator forms&#039;&#039; were developed to address this concern.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To obtain one of these forms, we first need to know whether each generator is positive or negative in pitch. This is conventionally found through the [[Frobenius generator]]s of the temperament, where we find the [[pseudoinverse]] of the mapping &amp;#039;&amp;#039;V&amp;#039;&amp;#039;, which we notate &amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;+&amp;lt;/sup&amp;gt;, and multiply this from the left by the just tuning map, {{nowrap| &amp;#039;&amp;#039;J&amp;#039;&amp;#039; {{=}} {{val| 1 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;3 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;5 … log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;p&amp;#039;&amp;#039; }} }}. Otherwise normed tunings technically do the same. [[Flora Canou]]&amp;#039;s [https://github.com/FloraCanou/temperament_evaluator Temperament Evaluator] has adopted a faster method called &amp;#039;&amp;#039;fast approximate tuning&amp;#039;&amp;#039; (&amp;#039;&amp;#039;FX tuning&amp;#039;&amp;#039;), which short-circuits the question of optimization and focuses on the abstract property of how a temperament splits intervals&amp;lt;ref&amp;gt;[https://github.com/FloraCanou/temperament_evaluator/wiki/Performance-of-FX-tuning Github | &amp;#039;&amp;#039;Performance of FX tuning&amp;#039;&amp;#039; · FloraCanou/temperament_evaluator Wiki]&amp;lt;/ref&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To obtain one of these forms, we first need to know whether each generator is positive or negative in pitch. This is conventionally found through the [[Frobenius generator]]s of the temperament, where we find the [[pseudoinverse]] of the mapping &amp;#039;&amp;#039;V&amp;#039;&amp;#039;, which we notate &amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;+&amp;lt;/sup&amp;gt;, and multiply this from the left by the just tuning map, {{nowrap| &amp;#039;&amp;#039;J&amp;#039;&amp;#039; {{=}} {{val| 1 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;3 log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;5 … log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;p&amp;#039;&amp;#039; }} }}. Otherwise normed tunings technically do the same. [[Flora Canou]]&amp;#039;s [https://github.com/FloraCanou/temperament_evaluator Temperament Evaluator] has adopted a faster method called &amp;#039;&amp;#039;fast approximate tuning&amp;#039;&amp;#039; (&amp;#039;&amp;#039;FX tuning&amp;#039;&amp;#039;), which short-circuits the question of optimization and focuses on the abstract property of how a temperament splits intervals&amp;lt;ref&amp;gt;[https://github.com/FloraCanou/temperament_evaluator/wiki/Performance-of-FX-tuning Github | &amp;#039;&amp;#039;Performance of FX tuning&amp;#039;&amp;#039; · FloraCanou/temperament_evaluator Wiki]&amp;lt;/ref&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot;&gt;Line 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 47:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The first positive-generator form, called &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; in the Temperament Evaluator, changes the signs of every entry in a row if the corresponding generator is negative.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another form, called &amp;lt;code&amp;gt;shift&amp;lt;/code&amp;gt;, also makes sure the generators are positive, but it maniplates the mapping to equave-reduce the negative generators instead, except when the temperament is (-1)-sheared, in which case it uses the &amp;lt;code&amp;gt;flip&amp;lt;/code&amp;gt; routine. This form may be more musically useful as the prime harmonics are more often in positive numbers of generator steps.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another form, called &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;shift&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;&amp;lt;/code&amp;gt;, also makes sure the generators are positive, but it maniplates the mapping to equave-reduce the negative generators instead, except when the temperament is (-1)-sheared, in which case it uses the &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;flip&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;&lt;/ins&gt;&amp;lt;/code&amp;gt; routine. This form may be more musically useful as the prime harmonics are more often in positive numbers of generator steps.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; Most mappings (though not the &amp;quot;[[mapping to lattice]]&amp;quot;) listed on temperament data pages of this wiki are in the &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; form.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; Most mappings (though not the &amp;quot;[[mapping to lattice]]&amp;quot;) listed on temperament data pages of this wiki are in the &amp;lt;code&amp;gt;&amp;quot;flip&amp;quot;&amp;lt;/code&amp;gt; form.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FloraC</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=204747&amp;oldid=prev</id>
		<title>FloraC: Address Kite&#039;s pergen</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=204747&amp;oldid=prev"/>
		<updated>2025-07-18T15:57:33Z</updated>

		<summary type="html">&lt;p&gt;Address Kite&amp;#039;s pergen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:57, 18 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l165&quot;&gt;Line 165:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 165:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;#039;&amp;#039;minimal-generator form&amp;#039;&amp;#039; (or &amp;#039;&amp;#039;&amp;#039;mingen form&amp;#039;&amp;#039;&amp;#039;) is a form specific to rank-2 temperaments, where the generator is positive and no greater than half the period.&amp;lt;ref group=&amp;quot;note&amp;quot;&amp;gt;This is somewhat like octave reduction combined with octave inversion, because you can&amp;#039;t just add or subtract half octaves until it&amp;#039;s between 0 and 600 cents; you have to add or subtract octaves until it&amp;#039;s between −600 and +600 cents, then multiply by −1 if it&amp;#039;s negative.&amp;lt;/ref&amp;gt;&amp;lt;ref group=&amp;quot;note&amp;quot;&amp;gt;You could always find a smaller and smaller generator by going negative, so this assumes positive generators.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &amp;#039;&amp;#039;minimal-generator form&amp;#039;&amp;#039; (or &amp;#039;&amp;#039;&amp;#039;mingen form&amp;#039;&amp;#039;&amp;#039;) is a form specific to rank-2 temperaments, where the generator is positive and no greater than half the period.&amp;lt;ref group=&amp;quot;note&amp;quot;&amp;gt;This is somewhat like octave reduction combined with octave inversion, because you can&amp;#039;t just add or subtract half octaves until it&amp;#039;s between 0 and 600 cents; you have to add or subtract octaves until it&amp;#039;s between −600 and +600 cents, then multiply by −1 if it&amp;#039;s negative.&amp;lt;/ref&amp;gt;&amp;lt;ref group=&amp;quot;note&amp;quot;&amp;gt;You could always find a smaller and smaller generator by going negative, so this assumes positive generators.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Graham Breed]]&#039;s [http://x31eq.com/temper/ temperament finder] uses this form for all rank-2 temperaments. Septimal meantone in minimal-generator form is {{mapping| 1 2 4 7 | 0 -1 -4 -10 }}, corresponding to generators of ~2/1 and ~4/3.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Graham Breed]]&#039;s [http://x31eq.com/temper/ temperament finder] uses this form for all rank-2 temperaments. Septimal meantone in minimal-generator form is {{mapping| 1 2 4 7 | 0 -1 -4 -10 }}, corresponding to generators of ~2/1 and ~4/3&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. [[Kite Giedraitis]]&#039;s [[pergen]] also uses this form, except for when the generator is a perfect fifth&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Beyond rank-2, the mingen form of a temperament is no longer unique. You can always get smaller and smaller generators. This is why on Graham Breed&amp;#039;s temperament finding tool, beyond rank-2 he simply uses the Hermite Normal Form.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Beyond rank-2, the mingen form of a temperament is no longer unique. You can always get smaller and smaller generators. This is why on Graham Breed&amp;#039;s temperament finding tool, beyond rank-2 he simply uses the Hermite Normal Form.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l283&quot;&gt;Line 283:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 283:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Integer reduced row echelon form (IRREF) ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Integer reduced row echelon form (IRREF) ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another important normal form for integer matrices is what &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;Kite Giedraitis&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;has dubbed the IRREF, the &#039;&#039;integer reduced row echelon form&#039;&#039;. It is the {{w|Row echelon form|reduced row echelon form}} but with integer entries, found by multiplying each row of the matrix by the least common multiple of all denominators in that row. It differs from the Hermite normal form in that each pivot is the only nonzero entry in its column. For a monzo list, it has the advantage of limiting the appearance of the &#039;&#039;N&#039;&#039; highest primes to only one comma each (where &#039;&#039;N&#039;&#039; is the codimension), isolating each prime&#039;s effect on the [[pergen]], but has the disadvantage that the commas tend to have high odd limits, and the comma list may have torsion.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another important normal form for integer matrices is what Kite Giedraitis has dubbed the IRREF, the &#039;&#039;integer reduced row echelon form&#039;&#039;. It is the {{w|Row echelon form|reduced row echelon form}} but with integer entries, found by multiplying each row of the matrix by the least common multiple of all denominators in that row. It differs from the Hermite normal form in that each pivot is the only nonzero entry in its column. For a monzo list, it has the advantage of limiting the appearance of the &#039;&#039;N&#039;&#039; highest primes to only one comma each (where &#039;&#039;N&#039;&#039; is the codimension), isolating each prime&#039;s effect on the [[pergen]], but has the disadvantage that the commas tend to have high odd limits, and the comma list may have torsion.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Sometimes the IRREF is identical to the HNF. For more information, see [[IRREF]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Sometimes the IRREF is identical to the HNF. For more information, see [[IRREF]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FloraC</name></author>
	</entry>
	<entry>
		<id>https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=204746&amp;oldid=prev</id>
		<title>FloraC: /* Normal forms for commas */ similar style improvements</title>
		<link rel="alternate" type="text/html" href="https://en.xen.wiki/index.php?title=Normal_forms&amp;diff=204746&amp;oldid=prev"/>
		<updated>2025-07-18T15:52:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Normal forms for commas: &lt;/span&gt; similar style improvements&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:52, 18 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l190&quot;&gt;Line 190:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 190:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal form ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimal form ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039;minimal form&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039;, or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039;reduced form&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039; shows the simplest comma list sufficient to define the temperament, where the commas are rated by a complexity measure such as the [[Tenney height]], in which case it is called the &#039;&#039;Tenney-minimal form&#039;&#039;. It is obvious why this form is useful, but unfortunately, it is not easy to find since it is equivalent to the &#039;&#039;shortest basis problem&#039;&#039;, an NP-hard problem. The [[LLL reduction]] algorithm gives a good approximation. Otherwise, it is typically solved heuristically by hand.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &#039;&#039;minimal form&#039;&#039;, or &#039;&#039;reduced form&#039;&#039; shows the simplest comma list sufficient to define the temperament, where the commas are rated by a complexity measure such as the [[Tenney height]], in which case it is called the &#039;&#039;Tenney-minimal form&#039;&#039;. It is obvious why this form is useful, but unfortunately, it is not easy to find since it is equivalent to the &#039;&#039;shortest basis problem&#039;&#039;, an NP-hard problem. The [[LLL reduction]] algorithm gives a good approximation. Otherwise, it is typically solved heuristically by hand.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;: This is the form shown in the &amp;quot;comma lists&amp;quot; of each temperament on this wiki.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;: This is the form shown in the &amp;quot;comma lists&amp;quot; of each temperament on this wiki.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l271&quot;&gt;Line 271:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 271:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that the antitransposed defactored Hermite form of the comma list involves the list being defactored (e.g. torsion to be removed). For example, both [25/27, 35/36] and [25/27, 49/48] characterize beep. But the latter has torsion (i.e. is enfactored), so the former is beep&amp;#039;s antitransposed defactored Hermite form.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that the antitransposed defactored Hermite form of the comma list involves the list being defactored (e.g. torsion to be removed). For example, both [25/27, 35/36] and [25/27, 49/48] characterize beep. But the latter has torsion (i.e. is enfactored), so the former is beep&amp;#039;s antitransposed defactored Hermite form.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Normal interval lists can also be used to characterize the [[just intonation subgroups]] on which subgroup temperaments are defined and using which subgroup scales may be constructed. On the pages [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chromatic pairs]], [[subgroup &lt;/del&gt;temperaments]] and [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;just &lt;/del&gt;intonation subgroup]]s can be found many examples; the subgroup lists are given in a form where generators of the subgroup are separated by periods so as to flag the fact that the list defines a subgroup. An example would be the Barbados subgroup, 2.3.13/5.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Normal interval lists can also be used to characterize the [[just intonation subgroups]] on which subgroup temperaments are defined and using which subgroup scales may be constructed. On the pages [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Subgroup &lt;/ins&gt;temperaments]] and [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Just &lt;/ins&gt;intonation subgroup]]s can be found many examples; the subgroup lists are given in a form where generators of the subgroup are separated by periods so as to flag the fact that the list defines a subgroup. An example would be the Barbados subgroup, 2.3.13/5.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Positive ratio form ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Positive&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;ratio form ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Similar to [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Normal lists &lt;/del&gt;#Positive generator form|the situation with mappings]], even though by using the HNF the antitransposed defactored Hermite form ensures that the first nonzero entry of each comma&#039;s [[prime-count vector]] is a positive &#039;&#039;number&#039;&#039;, this does not necessarily mean that the corresponding commas are all positive &#039;&#039;in pitch&#039;&#039;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Similar to [[#Positive&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;generator form|the situation with mappings]], even though by using the HNF the antitransposed defactored Hermite form ensures that the first nonzero entry of each comma&#039;s [[prime-count vector]] is a positive &#039;&#039;number&#039;&#039;, this does not necessarily mean that the corresponding commas are all positive &#039;&#039;in pitch&#039;&#039;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For example, the antitransposed defactored Hermite form of meantone&#039;s comma basis is [{{vector| 4 -4 1 }}]. HNF has ensured that the first number is positive. But the vector {{vector|4 -4 1}} represents the ratio 80/81, which is less than unity; it is still the meantone comma, but it is the meantone comma &#039;&#039;downward&#039;&#039; in pitch.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For example, the antitransposed defactored Hermite form of meantone&#039;s comma basis is [{{vector| 4 -4 1 }}]. HNF has ensured that the first number is positive. But the vector {{vector| 4 -4 1 }} represents the ratio 80/81, which is less than unity; it is still the meantone comma, but it is the meantone comma &#039;&#039;downward&#039;&#039; in pitch.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Having negative commas like this can be surprising or confusing, and so the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039;positive ratio form&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039; addresses this concern. To correct any negative comma, simply replace it with its reciprocal. In vector form, this can be done by changing the signs on every number; meantone can be put into positive ratio form as [{{vector| -4 4 -1 }}].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Having negative commas like this can be surprising or confusing, and so the &#039;&#039;positive&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;ratio form&#039;&#039; addresses this concern. To correct any negative comma, simply replace it with its reciprocal. In vector form, this can be done by changing the signs on every number; meantone can be put into positive ratio form as [{{vector| -4 4 -1 }}].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The positive ratio form of septimal meantone is [81/80, 59049/57344].  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The positive ratio form of septimal meantone is [81/80, 59049/57344].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Integer reduced row echelon form (IRREF) ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Integer reduced row echelon form (IRREF) ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another important normal form for integer matrices is what [[Kite Giedraitis]] has dubbed the IRREF, the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039;integer reduced row echelon form&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039;. It is the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Wikipedia: &lt;/del&gt;Row echelon form|reduced row echelon form&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;but with integer entries, found by multiplying each row of the matrix by the least common multiple of all denominators in that row. It differs from the Hermite normal form in that each pivot is the only nonzero entry in its column. For a monzo list, it has the advantage of limiting the appearance of the &#039;&#039;N&#039;&#039; highest primes to only one comma each (where &#039;&#039;N&#039;&#039; is the codimension), isolating each prime&#039;s effect on the [[pergen]], but has the disadvantage that the commas tend to have high odd limits, and the comma list may have torsion.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another important normal form for integer matrices is what [[Kite Giedraitis]] has dubbed the IRREF, the &#039;&#039;integer reduced row echelon form&#039;&#039;. It is the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{w|&lt;/ins&gt;Row echelon form|reduced row echelon form&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/ins&gt;but with integer entries, found by multiplying each row of the matrix by the least common multiple of all denominators in that row. It differs from the Hermite normal form in that each pivot is the only nonzero entry in its column. For a monzo list, it has the advantage of limiting the appearance of the &#039;&#039;N&#039;&#039; highest primes to only one comma each (where &#039;&#039;N&#039;&#039; is the codimension), isolating each prime&#039;s effect on the [[pergen]], but has the disadvantage that the commas tend to have high odd limits, and the comma list may have torsion.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Sometimes the IRREF is identical to the HNF. For more information, see [[IRREF]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Sometimes the IRREF is identical to the HNF. For more information, see [[IRREF]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FloraC</name></author>
	</entry>
</feed>