Kite's thoughts on pergens: Difference between revisions

Wikispaces>TallKite
**Imported revision 624970849 - Original comment: **
Wikispaces>TallKite
**Imported revision 625003811 - Original comment: **
Line 1: Line 1:
<h2>IMPORTED REVISION FROM WIKISPACES</h2>
<h2>IMPORTED REVISION FROM WIKISPACES</h2>
This is an imported revision from Wikispaces. The revision metadata is included below for reference:<br>
This is an imported revision from Wikispaces. The revision metadata is included below for reference:<br>
: This revision was by author [[User:TallKite|TallKite]] and made on <tt>2018-01-17 04:20:44 UTC</tt>.<br>
: This revision was by author [[User:TallKite|TallKite]] and made on <tt>2018-01-17 14:30:39 UTC</tt>.<br>
: The original revision id was <tt>624970849</tt>.<br>
: The original revision id was <tt>625003811</tt>.<br>
: The revision comment was: <tt></tt><br>
: The revision comment was: <tt></tt><br>
The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.<br>
The revision contents are below, presented both in the original Wikispaces Wikitext format, and in HTML exactly as Wikispaces rendered it.<br>
Line 322: Line 322:
==Searching for pergens==  
==Searching for pergens==  


To list all valid pergens is not a trivial task, like listing all valid edos or all valid MOS scales. Not all combinations of octave fractions and multigen fractions make a valid pergen. The search for rank-2 pergens can be done by looping through all possible square mappings [(x, y), (0, z)], and using the formula (P8/x, (n·z - y, x) / xz). While x is always positive and z is always nonzero, y can take on any value. For any x and z, y can be constrained to produce a viable cents value for 3/1. Let T be the tempered twefth 3/1. The mapping says T = y·P + z·G = y·P8/x + z·G. Thus y = x·(T/P8 - z·G/P8). We adopt the convention that G is less than half an octave. We constrain T to the range that supports heptatonic notation, in which the 5th is between 7\13 and 3\5. This corresponds to 13b-edo and 5-edo. Thus T is between 20/13 and 8/5 of an octave. We assume that if the octave is stretched, the ranges of T and G will be stretched along with it. The outer ranges of y can now be computed, using the floor function to round down to the nearest integer, and the ceiling function to round up:
To list all valid pergens is not a trivial task, like listing all valid edos or all valid MOS scales. Not all combinations of octave fractions and multigen fractions make a valid pergen. The search for rank-2 pergens can be done by looping through all possible square mappings [(x, y), (0, z)], and using the formula (P8/x, (i·z - y, x) / xz). While x is always positive and z is always nonzero, y can take on any value. For any x and z, y can be constrained to produce a viable cents value for 3/1. Let T be the tempered twefth 3/1. The mapping says T = y·P + z·G = y·P8/x + z·G. Thus y = x·(T/P8 - z·G/P8). We adopt the convention that G is less than half an octave. We constrain T so that the 5th is between 600¢ and 800¢, which certainly includes anything that sounds like a 5th. Thus T is between 3/2 and 5/3 of an octave. We assume that if the octave is stretched, the ranges of T and G will be stretched along with it. The outer ranges of y can now be computed, using the floor function to round down to the nearest integer, and the ceiling function to round up:


If z &gt; 0, then y is at least ceiling (x·(20/13 - z/2)) and at most floor (x·8/5)
If z &gt; 0, then y is at least ceiling (x·(3/2 - z/2)) and at most floor (x·5/3)
If z &lt; 0, then y is at least ceiling (x·20/13) and at most floor (x·(8/5 - z/2))
If z &lt; 0, then y is at least ceiling (x·3/2) and at most floor (x·(5/3 - z/2))


Next we loop through all combinations of x and z in such a way that larger values of x and z come last:
Next we loop through all combinations of x and z in such a way that larger values of x and z come last:
Line 338: Line 338:
);
);


The makeMapping function uses the two parameters as x and z, and loops through all valid values of y. Every value of n from -x to x-1 is tested, and the one that minimizes the multigen's splitting fraction and cents is chosen. This combination of x, y, z and n makes a valid pergen. This pergen is added to the list, unless it's a duplicate. The pergens are almost but not quite in the proper order, they will need to be sorted.
The makeMapping function uses the two parameters as x and z, and loops through all valid values of y. Every value of i from -x to x is tested, and the one that minimizes the multigen's splitting fraction and cents is chosen. This combination of x, y, z and i makes a valid pergen. If the pergen is of the form (P8/m, P4), it's converted to (P8/m, P5). This pergen is added to the list, unless it's a duplicate. The pergens are almost but not quite in the proper order, they will need to be sorted.


In the [[pergen#Further%20Discussion-Supplemental%20materials|Supplemental materials]] section, a program is linked to that performs these calculations and lists all pergens. It also lists suggested enharmonics.
In the [[pergen#Further%20Discussion-Supplemental%20materials|Supplemental materials]] section, a program is linked to that performs these calculations and lists all pergens. It also lists suggested enharmonics. Experimenting with allowing y and i to range further does not produce any additional pergens.
 
It's possible that allowing y and/or n to range further might produce muscally useful pergens. Further study is needed.


==Extremely large multigens==  
==Extremely large multigens==  
Line 621: Line 619:
A square mapping [(x, y), (0, z)] creates the pergen (P8/x, (i·z - y, x) / xz), with x &gt; 0, z ≠ 0, and |i| &lt;= x
A square mapping [(x, y), (0, z)] creates the pergen (P8/x, (i·z - y, x) / xz), with x &gt; 0, z ≠ 0, and |i| &lt;= x


To prove: if |z| = 1, n = 1
If z = 1, let i = y - x, and the pergen = (P8/x, P5)
If z = 1, let i = y - x, and the pergen = (P8/x, P5)
If z = -1, let i = 2x - y, and the pergen = (P8/x, P4) = (P8/x, P5)
If z = -1, let i = 2x - y, and the pergen = (P8/x, P4) = (P8/x, P5)
Therefore if |z| = 1, n = 1
Therefore if |z| = 1, n = 1
Since P5 = P12 - P8 = (y-x)·P + z·G, n = GCD (y,z)
A pergen (P8/m, (a,b)/n) arises from a square mapping [(m, m-am/b), (0, n/b)]
m = x
ka = iz - y
kb = x
kn = xz
k = GCD (iz - y, x)
m = kb, therefore k = m/b
x = m
z = kn/x = kn/kb = n/b
y = iz - ka = iz - am/b
P8 = mP, P12 = mP - (am/b)P + (n/b)·(G + iP)
(a,b) = amP + bmP - amP + nG + inP = bmP + inP + nG
(P8/m, (i·n/b - m + am/b, m) / mn/b), M/n = (i·n/m - b + a, b) / n), i = m·(b/n)
To prove: inverse of unreducing is also unreducing
Does unreducing a pergen twice result in the original pergen?
(P8/m, (a,b)/n) unreduced is (P8/m, (n-am, -bm) / mn) = (P8/m, (a',b')/n')
(P8/m, (a',b')/n') unreduced is (P8/m, (n'-a'm, -b'm) / mn') = (P8/m, (mn-(n-am)m, bmm) / mmn) = (P8/m, (a,b)/n)


To prove: n is always a multiple of b, and n = |b| if and only if n = 1
To prove: n is always a multiple of b, and n = |b| if and only if n = 1
b = x/k and n = xz/k, where k = sign (z) · GCD (iz-y, x)
b = x/k and n = xz/k, where k = sign (z) · GCD (iz-y, x)
The GCD is defined here as always positive: GCD (-3,6) = GCD (3,-6) = GCD (-3, -6) = 3
The GCD is defined here as always positive: GCD (-3,6) = GCD (3,-6) = GCD (-3, -6) = 3
n = zb = |z|·|b|
n = zb, and since n &gt; 0, n = |z|·|b|
Therefore multigens like M9/3 or M3/5 never occur, because they always reduce to something simpler
if n = |b|, then |z| = n/|b| = 1, and from the earlier proof, n = 1
(P8/m, M9/3) = ???
if n = 1, |z|·|b| = 1, therefore |b| = 1, and n = |b|
Therefore multigens like M9/3 or M3/5 never occur
Therefore a and b must be coprime, otherwise M/n could be simplified by GCD (a,b)
Therefore a and b must be coprime, otherwise M/n could be simplified by GCD (a,b)


Line 677: Line 653:
If m = |b|, the pergen is explicitly false
If m = |b|, the pergen is explicitly false
Therefore assume m &gt; |b| and unreduce
Therefore assume m &gt; |b| and unreduce
(P8/m, (a,b)/n) unreduced is (P8/m, (n-am, -bm) / mn) = (P8/m, M'/n')
(P8/m, (a,b)/n) unreduced is (P8/m, (n-am, -bm) / mn)
Simplify by dividing M' and n' by b to get (P8/m, (n/b - a(m/b), -m) / m(n/b))
Simplify by dividing by b to get (P8/m, (n/b - a(m/b), -m) / m(n/b)) = (P8/m, (a',b')/n')
b' = -m, therefore m = |b'|, and the unreduced pergen is explicitly false
b' = -m, therefore m = |b'|, and the unreduced pergen is explicitly false
Therefore the original pergen is a false double
Therefore the original pergen is a false double
Line 2,316: Line 2,292:
&lt;!-- ws:start:WikiTextHeadingRule:51:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id="toc5"&gt;&lt;a name="Further Discussion-Searching for pergens"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:51 --&gt;Searching for pergens&lt;/h2&gt;
&lt;!-- ws:start:WikiTextHeadingRule:51:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id="toc5"&gt;&lt;a name="Further Discussion-Searching for pergens"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:51 --&gt;Searching for pergens&lt;/h2&gt;
  &lt;br /&gt;
  &lt;br /&gt;
To list all valid pergens is not a trivial task, like listing all valid edos or all valid MOS scales. Not all combinations of octave fractions and multigen fractions make a valid pergen. The search for rank-2 pergens can be done by looping through all possible square mappings [(x, y), (0, z)], and using the formula (P8/x, (n·z - y, x) / xz). While x is always positive and z is always nonzero, y can take on any value. For any x and z, y can be constrained to produce a viable cents value for 3/1. Let T be the tempered twefth 3/1. The mapping says T = y·P + z·G = y·P8/x + z·G. Thus y = x·(T/P8 - z·G/P8). We adopt the convention that G is less than half an octave. We constrain T to the range that supports heptatonic notation, in which the 5th is between 7\13 and 3\5. This corresponds to 13b-edo and 5-edo. Thus T is between 20/13 and 8/5 of an octave. We assume that if the octave is stretched, the ranges of T and G will be stretched along with it. The outer ranges of y can now be computed, using the floor function to round down to the nearest integer, and the ceiling function to round up:&lt;br /&gt;
To list all valid pergens is not a trivial task, like listing all valid edos or all valid MOS scales. Not all combinations of octave fractions and multigen fractions make a valid pergen. The search for rank-2 pergens can be done by looping through all possible square mappings [(x, y), (0, z)], and using the formula (P8/x, (i·z - y, x) / xz). While x is always positive and z is always nonzero, y can take on any value. For any x and z, y can be constrained to produce a viable cents value for 3/1. Let T be the tempered twefth 3/1. The mapping says T = y·P + z·G = y·P8/x + z·G. Thus y = x·(T/P8 - z·G/P8). We adopt the convention that G is less than half an octave. We constrain T so that the 5th is between 600¢ and 800¢, which certainly includes anything that sounds like a 5th. Thus T is between 3/2 and 5/3 of an octave. We assume that if the octave is stretched, the ranges of T and G will be stretched along with it. The outer ranges of y can now be computed, using the floor function to round down to the nearest integer, and the ceiling function to round up:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If z &amp;gt; 0, then y is at least ceiling (x·(20/13 - z/2)) and at most floor (x·8/5)&lt;br /&gt;
If z &amp;gt; 0, then y is at least ceiling (x·(3/2 - z/2)) and at most floor (x·5/3)&lt;br /&gt;
If z &amp;lt; 0, then y is at least ceiling (x·20/13) and at most floor (x·(8/5 - z/2))&lt;br /&gt;
If z &amp;lt; 0, then y is at least ceiling (x·3/2) and at most floor (x·(5/3 - z/2))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we loop through all combinations of x and z in such a way that larger values of x and z come last:&lt;br /&gt;
Next we loop through all combinations of x and z in such a way that larger values of x and z come last:&lt;br /&gt;
Line 2,325: Line 2,301:
&lt;ul class="quotelist"&gt;&lt;li&gt;j = 1; loop (i - 1,&lt;ul class="quotelist"&gt;&lt;li&gt;makeMapping (i, j); makeMapping (i, -j);&lt;/li&gt;&lt;li&gt;makeMapping (j, i); makeMapping (j, -i);&lt;/li&gt;&lt;li&gt;j += 1;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;);&lt;/li&gt;&lt;li&gt;makeMapping (i, i); makeMapping (i, -i);&lt;/li&gt;&lt;li&gt;i += 1;&lt;/li&gt;&lt;/ul&gt;);&lt;br /&gt;
&lt;ul class="quotelist"&gt;&lt;li&gt;j = 1; loop (i - 1,&lt;ul class="quotelist"&gt;&lt;li&gt;makeMapping (i, j); makeMapping (i, -j);&lt;/li&gt;&lt;li&gt;makeMapping (j, i); makeMapping (j, -i);&lt;/li&gt;&lt;li&gt;j += 1;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;);&lt;/li&gt;&lt;li&gt;makeMapping (i, i); makeMapping (i, -i);&lt;/li&gt;&lt;li&gt;i += 1;&lt;/li&gt;&lt;/ul&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The makeMapping function uses the two parameters as x and z, and loops through all valid values of y. Every value of n from -x to x-1 is tested, and the one that minimizes the multigen's splitting fraction and cents is chosen. This combination of x, y, z and n makes a valid pergen. This pergen is added to the list, unless it's a duplicate. The pergens are almost but not quite in the proper order, they will need to be sorted.&lt;br /&gt;
The makeMapping function uses the two parameters as x and z, and loops through all valid values of y. Every value of i from -x to x is tested, and the one that minimizes the multigen's splitting fraction and cents is chosen. This combination of x, y, z and i makes a valid pergen. If the pergen is of the form (P8/m, P4), it's converted to (P8/m, P5). This pergen is added to the list, unless it's a duplicate. The pergens are almost but not quite in the proper order, they will need to be sorted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the &lt;a class="wiki_link" href="/pergen#Further%20Discussion-Supplemental%20materials"&gt;Supplemental materials&lt;/a&gt; section, a program is linked to that performs these calculations and lists all pergens. It also lists suggested enharmonics.&lt;br /&gt;
In the &lt;a class="wiki_link" href="/pergen#Further%20Discussion-Supplemental%20materials"&gt;Supplemental materials&lt;/a&gt; section, a program is linked to that performs these calculations and lists all pergens. It also lists suggested enharmonics. Experimenting with allowing y and i to range further does not produce any additional pergens.&lt;br /&gt;
&lt;br /&gt;
It's possible that allowing y and/or n to range further might produce muscally useful pergens. Further study is needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- ws:start:WikiTextHeadingRule:53:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id="toc6"&gt;&lt;a name="Further Discussion-Extremely large multigens"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:53 --&gt;Extremely large multigens&lt;/h2&gt;
&lt;!-- ws:start:WikiTextHeadingRule:53:&amp;lt;h2&amp;gt; --&gt;&lt;h2 id="toc6"&gt;&lt;a name="Further Discussion-Extremely large multigens"&gt;&lt;/a&gt;&lt;!-- ws:end:WikiTextHeadingRule:53 --&gt;Extremely large multigens&lt;/h2&gt;
Line 3,265: Line 3,239:
  &lt;br /&gt;
  &lt;br /&gt;
This PDF is a rank-2 notation guide that shows the full lattice for the first 15 pergens, up through the third-splits block.&lt;br /&gt;
This PDF is a rank-2 notation guide that shows the full lattice for the first 15 pergens, up through the third-splits block.&lt;br /&gt;
&lt;!-- ws:start:WikiTextUrlRule:4003:http://www.tallkite.com/misc_files/pergens.pdf --&gt;&lt;a class="wiki_link_ext" href="http://www.tallkite.com/misc_files/pergens.pdf" rel="nofollow"&gt;http://www.tallkite.com/misc_files/pergens.pdf&lt;/a&gt;&lt;!-- ws:end:WikiTextUrlRule:4003 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextUrlRule:3979:http://www.tallkite.com/misc_files/pergens.pdf --&gt;&lt;a class="wiki_link_ext" href="http://www.tallkite.com/misc_files/pergens.pdf" rel="nofollow"&gt;http://www.tallkite.com/misc_files/pergens.pdf&lt;/a&gt;&lt;!-- ws:end:WikiTextUrlRule:3979 --&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alt-pergenLister lists out thousands of pergens, and suggests periods, generators and enharmonics for each one. It can also list only those pergens supported by a specific edo. Written in Jesusonic, runs inside Reaper.&lt;br /&gt;
Alt-pergenLister lists out thousands of pergens, and suggests periods, generators and enharmonics for each one. It can also list only those pergens supported by a specific edo. Written in Jesusonic, runs inside Reaper.&lt;br /&gt;
&lt;!-- ws:start:WikiTextUrlRule:4004:http://www.tallkite.com/misc_files/alt-pergensLister.zip --&gt;&lt;a class="wiki_link_ext" href="http://www.tallkite.com/misc_files/alt-pergensLister.zip" rel="nofollow"&gt;http://www.tallkite.com/misc_files/alt-pergensLister.zip&lt;/a&gt;&lt;!-- ws:end:WikiTextUrlRule:4004 --&gt;&lt;br /&gt;
&lt;!-- ws:start:WikiTextUrlRule:3980:http://www.tallkite.com/misc_files/alt-pergensLister.zip --&gt;&lt;a class="wiki_link_ext" href="http://www.tallkite.com/misc_files/alt-pergensLister.zip" rel="nofollow"&gt;http://www.tallkite.com/misc_files/alt-pergensLister.zip&lt;/a&gt;&lt;!-- ws:end:WikiTextUrlRule:3980 --&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Screenshot of the first 38 pergens:&lt;br /&gt;
Screenshot of the first 38 pergens:&lt;br /&gt;
Line 3,278: Line 3,252:
A square mapping [(x, y), (0, z)] creates the pergen (P8/x, (i·z - y, x) / xz), with x &amp;gt; 0, z ≠ 0, and |i| &amp;lt;= x&lt;br /&gt;
A square mapping [(x, y), (0, z)] creates the pergen (P8/x, (i·z - y, x) / xz), with x &amp;gt; 0, z ≠ 0, and |i| &amp;lt;= x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prove: if |z| = 1, n = 1&lt;br /&gt;
If z = 1, let i = y - x, and the pergen = (P8/x, P5)&lt;br /&gt;
If z = 1, let i = y - x, and the pergen = (P8/x, P5)&lt;br /&gt;
If z = -1, let i = 2x - y, and the pergen = (P8/x, P4) = (P8/x, P5)&lt;br /&gt;
If z = -1, let i = 2x - y, and the pergen = (P8/x, P4) = (P8/x, P5)&lt;br /&gt;
Therefore if |z| = 1, n = 1&lt;br /&gt;
Therefore if |z| = 1, n = 1&lt;br /&gt;
Since P5 = P12 - P8 = (y-x)·P + z·G, n = GCD (y,z)&lt;br /&gt;
A pergen (P8/m, (a,b)/n) arises from a square mapping [(m, m-am/b), (0, n/b)]&lt;br /&gt;
&lt;br /&gt;
m = x&lt;br /&gt;
ka = iz - y&lt;br /&gt;
kb = x&lt;br /&gt;
kn = xz&lt;br /&gt;
k = GCD (iz - y, x)&lt;br /&gt;
m = kb, therefore k = m/b&lt;br /&gt;
&lt;br /&gt;
x = m&lt;br /&gt;
z = kn/x = kn/kb = n/b&lt;br /&gt;
y = iz - ka = iz - am/b&lt;br /&gt;
&lt;br /&gt;
P8 = mP, P12 = mP - (am/b)P + (n/b)·(G + iP)&lt;br /&gt;
(a,b) = amP + bmP - amP + nG + inP = bmP + inP + nG&lt;br /&gt;
(P8/m, (i·n/b - m + am/b, m) / mn/b), M/n = (i·n/m - b + a, b) / n), i = m·(b/n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prove: inverse of unreducing is also unreducing&lt;br /&gt;
Does unreducing a pergen twice result in the original pergen?&lt;br /&gt;
(P8/m, (a,b)/n) unreduced is (P8/m, (n-am, -bm) / mn) = (P8/m, (a',b')/n')&lt;br /&gt;
(P8/m, (a',b')/n') unreduced is (P8/m, (n'-a'm, -b'm) / mn') = (P8/m, (mn-(n-am)m, bmm) / mmn) = (P8/m, (a,b)/n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To prove: n is always a multiple of b, and n = |b| if and only if n = 1&lt;br /&gt;
To prove: n is always a multiple of b, and n = |b| if and only if n = 1&lt;br /&gt;
b = x/k and n = xz/k, where k = sign (z) · GCD (iz-y, x)&lt;br /&gt;
b = x/k and n = xz/k, where k = sign (z) · GCD (iz-y, x)&lt;br /&gt;
The GCD is defined here as always positive: GCD (-3,6) = GCD (3,-6) = GCD (-3, -6) = 3&lt;br /&gt;
The GCD is defined here as always positive: GCD (-3,6) = GCD (3,-6) = GCD (-3, -6) = 3&lt;br /&gt;
n = zb = |z|·|b|&lt;br /&gt;
n = zb, and since n &amp;gt; 0, n = |z|·|b|&lt;br /&gt;
Therefore multigens like M9/3 or M3/5 never occur, because they always reduce to something simpler&lt;br /&gt;
if n = |b|, then |z| = n/|b| = 1, and from the earlier proof, n = 1&lt;br /&gt;
(P8/m, M9/3) = ???&lt;br /&gt;
if n = 1, |z|·|b| = 1, therefore |b| = 1, and n = |b|&lt;br /&gt;
Therefore multigens like M9/3 or M3/5 never occur&lt;br /&gt;
Therefore a and b must be coprime, otherwise M/n could be simplified by GCD (a,b)&lt;br /&gt;
Therefore a and b must be coprime, otherwise M/n could be simplified by GCD (a,b)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Line 3,334: Line 3,286:
If m = |b|, the pergen is explicitly false&lt;br /&gt;
If m = |b|, the pergen is explicitly false&lt;br /&gt;
Therefore assume m &amp;gt; |b| and unreduce&lt;br /&gt;
Therefore assume m &amp;gt; |b| and unreduce&lt;br /&gt;
(P8/m, (a,b)/n) unreduced is (P8/m, (n-am, -bm) / mn) = (P8/m, M'/n')&lt;br /&gt;
(P8/m, (a,b)/n) unreduced is (P8/m, (n-am, -bm) / mn)&lt;br /&gt;
Simplify by dividing M' and n' by b to get (P8/m, (n/b - a(m/b), -m) / m(n/b))&lt;br /&gt;
Simplify by dividing by b to get (P8/m, (n/b - a(m/b), -m) / m(n/b)) = (P8/m, (a',b')/n')&lt;br /&gt;
b' = -m, therefore m = |b'|, and the unreduced pergen is explicitly false&lt;br /&gt;
b' = -m, therefore m = |b'|, and the unreduced pergen is explicitly false&lt;br /&gt;
Therefore the original pergen is a false double&lt;br /&gt;
Therefore the original pergen is a false double&lt;br /&gt;