<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://xenreference.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox_interval</id>
	<title>Module:Infobox interval - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://xenreference.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox_interval"/>
	<link rel="alternate" type="text/html" href="https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;action=history"/>
	<updated>2026-06-05T15:26:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=859&amp;oldid=prev</id>
		<title>Vector at 06:50, 16 December 2025</title>
		<link rel="alternate" type="text/html" href="https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=859&amp;oldid=prev"/>
		<updated>2025-12-16T06:50:47Z</updated>

		<summary type="html">&lt;p&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:50, 16 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-l151&quot;&gt;Line 151:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 151:&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 was a subsequence of 4+ zeros&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 was a subsequence of 4+ zeros&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;			table.insert(infobox_data, {&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;			table.insert(infobox_data, {&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;				&quot;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Subgroup monzos and vals&lt;/del&gt;|Subgroup monzo]]&quot;,&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;				&quot;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Interval space&lt;/ins&gt;|Subgroup monzo]]&quot;,&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;				rat.as_subgroup_ket(ratio, frame),&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;				rat.as_subgroup_ket(ratio, frame),&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;			})&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;			})&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-l160&quot;&gt;Line 160:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 160:&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;			})&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;			})&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;			table.insert(infobox_data, {&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;			table.insert(infobox_data, {&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;				&quot;[[Monzo]]&quot;,&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;				&quot;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Interval space|&lt;/ins&gt;Monzo]]&quot;,&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;				ket,&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;				ket,&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;			})&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;			})&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-l172&quot;&gt;Line 172:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 172:&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;		-- irrational ket is provided:&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;		-- irrational ket is provided:&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;		table.insert(infobox_data, {&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;		table.insert(infobox_data, {&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;			&quot;[[Monzo]]&quot;,&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;			&quot;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Interval space|&lt;/ins&gt;Monzo]]&quot;,&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;			frame:expandTemplate({&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;			frame:expandTemplate({&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;				title = &amp;quot;Monzo&amp;quot;,&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;				title = &amp;quot;Monzo&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vector</name></author>
	</entry>
	<entry>
		<id>https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=857&amp;oldid=prev</id>
		<title>Vector at 06:47, 16 December 2025</title>
		<link rel="alternate" type="text/html" href="https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=857&amp;oldid=prev"/>
		<updated>2025-12-16T06:47:20Z</updated>

		<summary type="html">&lt;p&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:47, 16 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-l220&quot;&gt;Line 220:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 220:&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;	if rational and regular then&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;	if rational and regular then&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;		table.insert(infobox_data, {&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;		table.insert(infobox_data, {&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;			&quot;Harmonic distance (log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &#039;&#039;nd&#039;&#039;)&quot;,&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;			&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{adv|&lt;/ins&gt;Harmonic distance (log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &#039;&#039;nd&#039;&#039;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&quot;,&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;			utils._round(rat.tenney_height(ratio), 6),&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;&quot;{{adv|&quot; .. &lt;/ins&gt;utils._round(rat.tenney_height(ratio), 6) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.. &quot;}}&quot;&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;div&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;		})&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;		table.insert(infobox_data, {&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;		table.insert(infobox_data, {&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;			&quot;Wilson norm (sopfr(&#039;&#039;nd&#039;&#039;))&quot;,&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;			&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{adv|&lt;/ins&gt;Wilson norm (sopfr(&#039;&#039;nd&#039;&#039;))&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&quot;,&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;			utils._round(rat.wilson_height(ratio), 6),&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;&quot;{{adv|&quot; .. &lt;/ins&gt;utils._round(rat.wilson_height(ratio), 6) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.. &quot;}}&quot;&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;div&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;		})&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&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&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vector</name></author>
	</entry>
	<entry>
		<id>https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=856&amp;oldid=prev</id>
		<title>Vector at 06:45, 16 December 2025</title>
		<link rel="alternate" type="text/html" href="https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=856&amp;oldid=prev"/>
		<updated>2025-12-16T06:45:29Z</updated>

		<summary type="html">&lt;p&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:45, 16 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-l222&quot;&gt;Line 222:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 222:&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;quot;Harmonic distance (log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &amp;#039;&amp;#039;nd&amp;#039;&amp;#039;)&amp;quot;,&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;quot;Harmonic distance (log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &amp;#039;&amp;#039;nd&amp;#039;&amp;#039;)&amp;quot;,&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;			utils._round(rat.tenney_height(ratio), 6),&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;			utils._round(rat.tenney_height(ratio), 6),&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;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		})&lt;/del&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;		table.insert(infobox_data, {&lt;/del&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;			&quot;Integer limit (max(&#039;&#039;n&#039;&#039;, &#039;&#039;d&#039;&#039;))&quot;,&lt;/del&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;			utils._round(2^rat.weil_height(ratio), 6),&lt;/del&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;&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;		})&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;		})&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;		table.insert(infobox_data, {&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;		table.insert(infobox_data, {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vector</name></author>
	</entry>
	<entry>
		<id>https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=855&amp;oldid=prev</id>
		<title>Vector at 06:44, 16 December 2025</title>
		<link rel="alternate" type="text/html" href="https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=855&amp;oldid=prev"/>
		<updated>2025-12-16T06:44:50Z</updated>

		<summary type="html">&lt;p&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:44, 16 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-l225&quot;&gt;Line 225:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 225:&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;		table.insert(infobox_data, {&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;		table.insert(infobox_data, {&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;			&amp;quot;Integer limit (max(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;))&amp;quot;,&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;quot;Integer limit (max(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;))&amp;quot;,&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;			utils._round(rat.weil_height(ratio), 6),&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;			utils._round(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2^&lt;/ins&gt;rat.weil_height(ratio), 6),&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;		})&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;		})&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;		table.insert(infobox_data, {&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;		table.insert(infobox_data, {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vector</name></author>
	</entry>
	<entry>
		<id>https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=853&amp;oldid=prev</id>
		<title>Vector at 06:41, 16 December 2025</title>
		<link rel="alternate" type="text/html" href="https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=853&amp;oldid=prev"/>
		<updated>2025-12-16T06:41:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;amp;diff=853&amp;amp;oldid=852&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Vector</name></author>
	</entry>
	<entry>
		<id>https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=852&amp;oldid=prev</id>
		<title>Vector: Created page with &quot;local p = {} local he = require(&quot;Module:Harmonic entropy&quot;) local infobox = require(&quot;Module:Infobox&quot;) local rat = require(&quot;Module:Rational&quot;) local utils = require(&quot;Module:Utils&quot;) local yesno = require(&quot;Module:Yesno&quot;)  -- check whether the input is a non-empty string local function value_provided(s) 	return type(s) == &quot;string&quot; and #s &gt; 0 end  function p.infobox_interval(frame) 	local debug_mode = yesno(frame.args[&quot;debug&quot;])  	local page_name = frame:preprocess(&quot;{{PAGENAME}}...&quot;</title>
		<link rel="alternate" type="text/html" href="https://xenreference.com/wiki/index.php?title=Module:Infobox_interval&amp;diff=852&amp;oldid=prev"/>
		<updated>2025-12-16T06:34:52Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local he = require(&amp;quot;Module:Harmonic entropy&amp;quot;) local infobox = require(&amp;quot;Module:Infobox&amp;quot;) local rat = require(&amp;quot;Module:Rational&amp;quot;) local utils = require(&amp;quot;Module:Utils&amp;quot;) local yesno = require(&amp;quot;Module:Yesno&amp;quot;)  -- check whether the input is a non-empty string local function value_provided(s) 	return type(s) == &amp;quot;string&amp;quot; and #s &amp;gt; 0 end  function p.infobox_interval(frame) 	local debug_mode = yesno(frame.args[&amp;quot;debug&amp;quot;])  	local page_name = frame:preprocess(&amp;quot;{{PAGENAME}}...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local he = require(&amp;quot;Module:Harmonic entropy&amp;quot;)&lt;br /&gt;
local infobox = require(&amp;quot;Module:Infobox&amp;quot;)&lt;br /&gt;
local rat = require(&amp;quot;Module:Rational&amp;quot;)&lt;br /&gt;
local utils = require(&amp;quot;Module:Utils&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- check whether the input is a non-empty string&lt;br /&gt;
local function value_provided(s)&lt;br /&gt;
	return type(s) == &amp;quot;string&amp;quot; and #s &amp;gt; 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.infobox_interval(frame)&lt;br /&gt;
	local debug_mode = yesno(frame.args[&amp;quot;debug&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
	local page_name = frame:preprocess(&amp;quot;{{PAGENAME}}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local rational = false&lt;br /&gt;
	local small = false -- numerator and denominator can be represented as Lua numbers, or irrational&lt;br /&gt;
	local regular = false -- finite and greater than zero&lt;br /&gt;
&lt;br /&gt;
	local ratio = nil&lt;br /&gt;
	local cents = nil&lt;br /&gt;
	local ket = nil&lt;br /&gt;
	local ratio_string = nil&lt;br /&gt;
&lt;br /&gt;
	local infobox_data = {}&lt;br /&gt;
	local cats = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- intervals with relatively small powers&lt;br /&gt;
	if value_provided(frame.args[&amp;quot;Ratio&amp;quot;]) then&lt;br /&gt;
		ratio = rat.parse(frame.args[&amp;quot;Ratio&amp;quot;])&lt;br /&gt;
		if ratio ~= nil then&lt;br /&gt;
			rational = true&lt;br /&gt;
			small = true&lt;br /&gt;
			regular = not ratio.nan and not ratio.inf and not ratio.zero and ratio.sign &amp;gt; 0&lt;br /&gt;
			cents = rat.cents(ratio)&lt;br /&gt;
			ket = rat.as_ket(ratio, frame)&lt;br /&gt;
			ratio_string = rat.as_ratio(ratio)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- intervals with large powers&lt;br /&gt;
	if ratio == nil and value_provided(frame.args[&amp;quot;Ket&amp;quot;]) then&lt;br /&gt;
		ratio = rat.from_ket(frame.args[&amp;quot;Ket&amp;quot;])&lt;br /&gt;
		if ratio ~= nil then&lt;br /&gt;
			rational = true&lt;br /&gt;
			small = false&lt;br /&gt;
			regular = true&lt;br /&gt;
			cents = rat.cents(ratio)&lt;br /&gt;
			ket = rat.as_ket(ratio, frame)&lt;br /&gt;
			-- display Ratio unless it is page name, in which case it is probably a fallback -- what does this mean?&lt;br /&gt;
			if frame.args[&amp;quot;Ratio&amp;quot;] ~= page_name then&lt;br /&gt;
				ratio_string = frame.args[&amp;quot;Ratio&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif ratio ~= nil and value_provided(frame.args[&amp;quot;Ket&amp;quot;]) then&lt;br /&gt;
		cats = cats .. &amp;quot;[[Category:Todo:remove explicit ket notation]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- irrational intervals&lt;br /&gt;
	if ratio == nil and value_provided(frame.args[&amp;quot;Cents&amp;quot;]) then&lt;br /&gt;
		cents = tonumber(frame.args[&amp;quot;Cents&amp;quot;])&lt;br /&gt;
		if cents ~= nil then&lt;br /&gt;
			rational = false&lt;br /&gt;
			small = true&lt;br /&gt;
			regular = true&lt;br /&gt;
			if value_provided(frame.args[&amp;quot;Ket&amp;quot;]) then&lt;br /&gt;
				ket = frame.args[&amp;quot;Ket&amp;quot;]&lt;br /&gt;
			end&lt;br /&gt;
			-- Ratio is LaTeX unless it is page name, in which case it is probably a fallback -- what does this mean?&lt;br /&gt;
			if frame.args[&amp;quot;Ratio&amp;quot;] ~= page_name then&lt;br /&gt;
				ratio_string = frame.args[&amp;quot;Ratio&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Todo:add interval ratio]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif ratio ~= nil and value_provided(frame.args[&amp;quot;Cents&amp;quot;]) then&lt;br /&gt;
		cats = cats .. &amp;quot;[[Category:Todo:remove explicit cents]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not (regular or rational) then&lt;br /&gt;
		cats = cats .. &amp;quot;[[Category:Todo:initialise interval]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- categorize by rationality and prime limit&lt;br /&gt;
	if regular then&lt;br /&gt;
		if rational then&lt;br /&gt;
			local prime_limit = 2&lt;br /&gt;
			if not rat.eq(ratio, 1) then&lt;br /&gt;
				prime_limit = rat.max_prime(ratio)&lt;br /&gt;
			end&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Rational intervals]]&amp;quot; .. &amp;quot;[[Category:&amp;quot; .. prime_limit .. &amp;quot;-limit intervals]]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Irrational intervals]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local special_properties = {}&lt;br /&gt;
	if rational then&lt;br /&gt;
		if small and rat.is_superparticular(ratio) then&lt;br /&gt;
			if rat.is_square_superparticular(ratio) then&lt;br /&gt;
				table.insert(special_properties, &amp;quot;[[Square superparticular|square superparticular]]&amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(special_properties, &amp;quot;[[Superparticular interval|superparticular]]&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Superparticular ratios]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if rat.is_reduced(ratio, 2, not small) then&lt;br /&gt;
			table.insert(special_properties, &amp;quot;[[Octave reduction|reduced]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		if rat.is_harmonic(ratio) then&lt;br /&gt;
			num, den = rat.as_pair (ratio)&lt;br /&gt;
			table.insert(special_properties, &amp;quot;[[harmonic]]&amp;quot;)&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Harmonics|&amp;quot; .. string.rep(&amp;quot;#&amp;quot;, string.len(num)) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			if rat.is_prime(ratio) then&lt;br /&gt;
				table.insert(special_properties, &amp;quot;[[prime harmonic]]&amp;quot;)&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Prime harmonics|&amp;quot; .. string.rep(&amp;quot;#&amp;quot;, string.len(num)) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			if rat.is_highly_composite(ratio) then&lt;br /&gt;
				table.insert(special_properties, &amp;quot;[[highly composite harmonic]]&amp;quot;)&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Highly composite harmonics|&amp;quot; .. string.rep(&amp;quot;#&amp;quot;, string.len(num)) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		elseif rat.is_harmonic(ratio, true, not small) then&lt;br /&gt;
			table.insert(special_properties, &amp;quot;[[Harmonic|reduced harmonic]]&amp;quot;)&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Octave-reduced harmonics]]&amp;quot;&lt;br /&gt;
		elseif rat.is_subharmonic(ratio, true, not small) then&lt;br /&gt;
			table.insert(special_properties, &amp;quot;[[Subharmonic|reduced subharmonic]]&amp;quot;)&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Octave-reduced subharmonics]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	elseif regular then&lt;br /&gt;
		if cents &amp;gt;= 0 and cents &amp;lt; 1200 then&lt;br /&gt;
			table.insert(special_properties, &amp;quot;[[Octave reduction|reduced]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if value_provided(ratio_string) then&lt;br /&gt;
		if rational then&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;Ratio&amp;quot;,&lt;br /&gt;
				ratio_string,&lt;br /&gt;
			})&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;Expression&amp;quot;,&lt;br /&gt;
				&amp;quot;&amp;lt;math&amp;gt;&amp;quot; .. ratio_string .. &amp;quot;&amp;lt;/math&amp;gt;&amp;quot;,&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if regular and rational then&lt;br /&gt;
		if ket:match(&amp;quot;&amp;lt;sup&amp;gt;&amp;quot;) then&lt;br /&gt;
			-- there was a subsequence of 4+ zeros&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;[[Subgroup monzos and vals|Subgroup monzo]]&amp;quot;,&lt;br /&gt;
				rat.as_subgroup_ket(ratio, frame),&lt;br /&gt;
			})&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;Factorization&amp;quot;,&lt;br /&gt;
				rat.factorisation(ratio),&lt;br /&gt;
			})&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;[[Monzo]]&amp;quot;,&lt;br /&gt;
				ket,&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	elseif rational then&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;Factorization&amp;quot;,&lt;br /&gt;
			rat.factorisation(ratio),&lt;br /&gt;
		})&lt;br /&gt;
	elseif value_provided(ket) then&lt;br /&gt;
		-- irrational ket is provided:&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;[[Monzo]]&amp;quot;,&lt;br /&gt;
			frame:expandTemplate({&lt;br /&gt;
				title = &amp;quot;Monzo&amp;quot;,&lt;br /&gt;
				args = { ket },&lt;br /&gt;
			}),&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	if regular then&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;Size in [[cent]]s&amp;quot;,&lt;br /&gt;
			utils._round(cents, 7) .. &amp;quot;¢&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local name = frame.args[&amp;quot;Name&amp;quot;]&lt;br /&gt;
	if value_provided(name) then&lt;br /&gt;
		local caption = &amp;quot;Name&amp;quot;&lt;br /&gt;
		if name:match(&amp;quot;,&amp;quot;) then&lt;br /&gt;
			caption = &amp;quot;Names&amp;quot;&lt;br /&gt;
			-- removing manual line breaks&lt;br /&gt;
			local matches&lt;br /&gt;
			name, matches = name:gsub(&amp;quot;&amp;lt;br%s*/?&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
			if matches &amp;gt; 0 then&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Todo:remove manual line breaks]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			-- removing whitespaces after commas&lt;br /&gt;
			name = name:gsub(&amp;quot;,%s+&amp;quot;, &amp;quot;,&amp;quot;)&lt;br /&gt;
			-- placing line breaks after commas&lt;br /&gt;
			name = name:gsub(&amp;quot;,&amp;quot;, &amp;quot;,&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			caption,&lt;br /&gt;
			name,&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		cats = cats .. &amp;quot;[[Category:Todo:add interval name]]&amp;quot;&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;Name(s)&amp;quot;,&lt;br /&gt;
			&amp;quot;&amp;lt;abbr title=\&amp;quot;missing value for parameter &amp;#039;Name&amp;#039;\&amp;quot;&amp;gt;&amp;#039;&amp;#039;missing&amp;#039;&amp;#039;&amp;lt;/abbr&amp;gt;&amp;lt;sup&amp;gt;[[Template:Infobox Interval| ?&amp;amp;nbsp;]]&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local colour_name = frame.args[&amp;quot;Color name&amp;quot;]&lt;br /&gt;
	if value_provided(colour_name) then&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;[[Kite&amp;#039;s color notation|Color name]]&amp;quot;,&lt;br /&gt;
			colour_name,&lt;br /&gt;
		})&lt;br /&gt;
	elseif regular and rational then&lt;br /&gt;
		cats = cats .. &amp;quot;[[Category:Todo:add color name]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local FJS_name = frame.args[&amp;quot;FJS name&amp;quot;]&lt;br /&gt;
	if not value_provided(FJS_name) and rational and regular then&lt;br /&gt;
		FJS_name = rat.as_FJS(ratio)&lt;br /&gt;
	elseif value_provided(FJS_name) then&lt;br /&gt;
		local matches&lt;br /&gt;
		FJS_name = FJS_name:gsub(&amp;quot;%s&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		FJS_name, matches = FJS_name:gsub(&amp;quot;&amp;lt;br%s*/?&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		if matches &amp;gt; 0 then&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Todo:remove manual line breaks]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		FJS_name, matches = FJS_name:gsub(&amp;quot;&amp;lt;sup&amp;gt;(.*)&amp;lt;/sup&amp;gt;&amp;quot;, &amp;quot;^{%1}&amp;quot;)&lt;br /&gt;
		if matches &amp;gt; 0 then&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Todo:replace sup and sub with LaTeX]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		FJS_name, matches = FJS_name:gsub(&amp;quot;&amp;lt;sub&amp;gt;(.*)&amp;lt;/sub&amp;gt;&amp;quot;, &amp;quot;_{%1}&amp;quot;)&lt;br /&gt;
		if matches &amp;gt; 0 then&lt;br /&gt;
			cats = cats .. &amp;quot;[[Category:Todo:replace sup and sub with LaTeX]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if value_provided(FJS_name) then&lt;br /&gt;
		FJS_name = FJS_name:gsub(&amp;quot;^(%w+)&amp;quot;, &amp;quot;\\text{%1}&amp;quot;)&lt;br /&gt;
		FJS_name = FJS_name:gsub(&amp;quot;(%-%d+)&amp;quot;, &amp;quot;{%1}&amp;quot;)&lt;br /&gt;
		if #FJS_name &amp;lt;= 200 then&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;[[Functional Just System|FJS name]]&amp;quot;,&lt;br /&gt;
				&amp;quot;&amp;lt;math&amp;gt;&amp;quot; .. FJS_name .. &amp;quot;&amp;lt;/math&amp;gt;&amp;quot;,&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #special_properties &amp;gt; 0 then&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;Special properties&amp;quot;,&lt;br /&gt;
			table.concat(special_properties, &amp;quot;,&amp;lt;br&amp;gt;&amp;quot;),&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- interval complexity&lt;br /&gt;
	if rational and regular then&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;[[Tenney norm]] (log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; &amp;#039;&amp;#039;nd&amp;#039;&amp;#039;)&amp;quot;,&lt;br /&gt;
			utils._round(rat.tenney_height(ratio), 6),&lt;br /&gt;
		})&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;[[Weil norm]] (log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; max(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;))&amp;quot;,&lt;br /&gt;
			utils._round(rat.weil_height(ratio), 6),&lt;br /&gt;
		})&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;[[Wilson norm]] (sopfr(&amp;#039;&amp;#039;nd&amp;#039;&amp;#039;))&amp;quot;,&lt;br /&gt;
			utils._round(rat.wilson_height(ratio), 6),&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local harmonic_entropy = frame.args[&amp;quot;Harmonic entropy&amp;quot;]&lt;br /&gt;
	if regular and value_provided(harmonic_entropy) then&lt;br /&gt;
		harmonic_entropy_switch = harmonic_entropy:match(&amp;quot;^[Yy][Ee][Ss]$&amp;quot;)&lt;br /&gt;
		if harmonic_entropy_switch then&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;[[Harmonic entropy]]&amp;lt;br&amp;gt;(Shannon, &amp;lt;math&amp;gt;\\sqrt{nd}&amp;lt;/math&amp;gt;)&amp;quot;,&lt;br /&gt;
				&amp;quot;~&amp;quot; .. utils._round(he.harmonic_entropy(cents), 6) .. &amp;quot; bits&amp;quot;,&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local is_comma = value_provided(frame.args[&amp;quot;Comma&amp;quot;])&lt;br /&gt;
	local comma = nil&lt;br /&gt;
	if is_comma and regular and cents &amp;gt; 0 then&lt;br /&gt;
		-- rational powers are not considered commas&lt;br /&gt;
		if not (rational and rat.is_power(ratio)) then&lt;br /&gt;
			if cents &amp;lt;= 3.5 then&lt;br /&gt;
				comma = &amp;quot;[[Unnoticeable comma|unnoticeable]]&amp;quot;&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Unnoticeable commas]]&amp;quot;&lt;br /&gt;
			elseif cents &amp;lt;= 30 then&lt;br /&gt;
				comma = &amp;quot;[[Small comma|small]]&amp;quot;&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Small commas]]&amp;quot;&lt;br /&gt;
			elseif cents &amp;lt;= 100 then&lt;br /&gt;
				comma = &amp;quot;[[Medium comma|medium]]&amp;quot;&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Medium commas]]&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				comma = &amp;quot;[[Large comma|large]]&amp;quot;&lt;br /&gt;
				cats = cats .. &amp;quot;[[Category:Large commas]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if comma then&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;[[Comma|Comma size]]&amp;quot;,&lt;br /&gt;
			comma,&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	if comma and rational then&lt;br /&gt;
		local S_expressions = rat.find_S_expression(ratio)&lt;br /&gt;
		if #S_expressions &amp;gt; 0 then&lt;br /&gt;
			local caption = &amp;quot;[[S-expression]]&amp;quot;&lt;br /&gt;
			if #S_expressions &amp;gt; 1 then&lt;br /&gt;
				caption = caption .. &amp;quot;s&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				caption,&lt;br /&gt;
				table.concat(S_expressions, &amp;quot;,&amp;lt;br&amp;gt;&amp;quot;),&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local sound = frame.args[&amp;quot;Sound&amp;quot;]&lt;br /&gt;
	if value_provided(sound) then&lt;br /&gt;
		cats = cats .. &amp;quot;[[Category:Pages with internal sound examples]]&amp;quot;&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;[[File:&amp;quot; .. sound .. &amp;quot;|270px]]&amp;lt;br&amp;gt;&amp;lt;span style=\&amp;quot;font-size: 75%;\&amp;quot;&amp;gt;[[:File:&amp;quot; .. sound .. &amp;quot;|&amp;lt;nowiki&amp;gt;[sound info]&amp;lt;/nowiki&amp;gt;]]&amp;lt;/span&amp;gt;&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
	elseif debug_mode and debug_mode ~= &amp;quot;hide&amp;quot; and regular then&lt;br /&gt;
		local hz = 2 ^ (math.log(440) / math.log(2) + cents / 1200)&lt;br /&gt;
		-- is it within hearing range?&lt;br /&gt;
		if hz &amp;gt;= 20 and hz &amp;lt;= 20000 then&lt;br /&gt;
			local html_id = &amp;quot;interval_&amp;quot; .. tostring(math.floor(cents))&lt;br /&gt;
			table.insert(infobox_data, {&lt;br /&gt;
				&amp;quot;&amp;lt;div style=\&amp;quot;display: flex; justify-content: space-around;\&amp;quot;&amp;gt;&amp;lt;div style=\&amp;quot;width: 270px; text-align: center;\&amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
					.. frame:expandTemplate({&lt;br /&gt;
						title = &amp;quot;User:Plumtree/Interval Sound&amp;quot;,&lt;br /&gt;
						args = {&lt;br /&gt;
							Frequency = tostring(hz),&lt;br /&gt;
							Center = &amp;quot;true&amp;quot;,&lt;br /&gt;
							Label = &amp;quot;Audio demonstration&amp;quot;,&lt;br /&gt;
							Attributes = &amp;quot;id=\&amp;quot;&amp;quot; .. html_id .. &amp;quot;\&amp;quot;&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					})&lt;br /&gt;
					.. &amp;quot;&amp;lt;div class=\&amp;quot;sequence-audio-timbre-selector\&amp;quot; data-target=\&amp;quot;&amp;quot;&lt;br /&gt;
					.. html_id&lt;br /&gt;
					.. &amp;quot;\&amp;quot; data-key=\&amp;quot;interval-audio\&amp;quot; data-default=\&amp;quot;semisine\&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
					.. &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if value_provided(frame.args[&amp;quot;Calc&amp;quot;]) or (regular and rational) then&lt;br /&gt;
		local query = frame.args[&amp;quot;Calc&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
		if not value_provided(query) then&lt;br /&gt;
			if small then&lt;br /&gt;
				query = ratio_string&lt;br /&gt;
			else&lt;br /&gt;
				query = &amp;quot;|&amp;quot; .. rat.as_ket(ratio, nil, false, true) .. &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		query = mw.uri.encode(query)&lt;br /&gt;
		table.insert(infobox_data, {&lt;br /&gt;
			&amp;quot;&amp;lt;span style=\&amp;quot;font-size: 75%;\&amp;quot;&amp;gt;[https://www.yacavone.net/xen-calc/?q=&amp;quot; .. query .. &amp;quot; Open this interval in &amp;#039;&amp;#039;xen-calc&amp;#039;&amp;#039;]&amp;lt;/span&amp;gt;&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = infobox.build(&amp;quot;&amp;lt;u&amp;gt;Interval&amp;amp;nbsp;information&amp;lt;/u&amp;gt;&amp;quot;, infobox_data)&lt;br /&gt;
	&lt;br /&gt;
	if not debug_mode then&lt;br /&gt;
		result = result .. cats&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return frame:preprocess(result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Vector</name></author>
	</entry>
</feed>