@@ -43,22 +43,23 @@ This wording is relative to <paper num="N5001"/>.
4343<blockquote >
4444<p >
4545-2- The generation algorithm returns <math ><msub ><mi >Y</mi ><mrow ><mi >i</mi ></mrow ></msub ></math >, the value stored in
46- the <math ><mi >i</mi ></math >th element of <math ><mi >Y</mi ></math > after applying the transition algorithm.
46+ the <math ><msup ><mi >i</mi ><mtext >th</mtext ></msup ></math > element of <math ><mi >Y</mi ></math > after applying the
47+ transition algorithm.
4748<p />
4849-3- The state transition is performed as if by the following algorithm:
4950</p >
5051<blockquote ><pre >
5152<math ><mi >i</mi ><mo >=</mo ><mi >i</mi ><mo >+</mo ><mn >1</mn ></math >
5253<tt >if (<math ><mi >i</mi ></math > == <math ><mi >n</mi ></math >) {</tt >
5354 <math ><mi >Y</mi ><mo >=</mo ></math ><tt >Philox</tt >(<math ><mi >K</mi ></math >, <math ><mi >X</mi ></math >) <i >// see below</i >
54- <math ><mi >Z</mi ><mo >=</mo ><mi >Z</mi ><mo >+</mo ><mn >1</mn ></math > <ins ><i >// this updates <math ><mi >X</mi ></math ></i ></ins >
55+ <math ><mi >Z</mi ><mo >=</mo ><mi >Z</mi ><mo >+</mo ><mn >1</mn ></math > <ins ><i >// this updates <math ><mi >X</mi ></math ></i ></ins >
5556 <math ><mi >i</mi ><mo >=</mo ><mn >0</mn ></math >
5657}
5758</pre ></blockquote >
5859<p >
5960-4- The <tt >Philox</tt > function maps the length-<math ><mi >n</mi ></math >/2 sequence <math ><mi >K</mi ></math >
6061and the length-<math ><mi >n</mi ></math > sequence <math ><mi >X</mi ></math > into a length-<math ><mi >n</mi ></math > output
61- sequence <math ><mi >Y</mi ></math >. Philox applies an <math ><mi >r</mi ></math >-round substitution-permutation network to
62+ sequence <del >< math ><mi >Y</mi ></math ></ del >. Philox applies an <math ><mi >r</mi ></math >-round substitution-permutation network to
6263the values in <math ><mi >X</mi ></math >. <del >A single round of the generation algorithm performs the following steps:</del >
6364<ins >That is, there are intermediate values <math ><msup ><mi >X</mi ><mrow ><mo >(</mo ><mn >0</mn ><mo >)</mo ></mrow ></msup ></math >,
6465<math ><msup ><mi >X</mi ><mrow ><mo >(</mo ><mn >1</mn ><mo >)</mo ></mrow ></msup ></math >, … ,
@@ -79,19 +80,19 @@ in case of the first round) is permuted to obtain the intermediate state <math><
7980<ins >An intermediate state <math ><msup ><mi >V</mi ><mrow ><mo >(</mo ><mi >q</mi ><mo >)</mo ></mrow ></msup ></math > is obtained
8081by permuting the previous output,
8182<math ><msubsup ><mi >V</mi ><mi >j</mi ><mrow ><mo >(</mo ><mi >q</mi ><mo >)</mo ></mrow ></msubsup ><mo >:=</mo ><msubsup ><mi >X</mi ><mrow ><msub ><mi >f</mi ><mrow ><mi >n</mi ></mrow ></msub ><mo >(</mo ><mi >j</mi ><mo >)</mo ></mrow ><mrow ><mo >(</mo ><mi >q</mi ><mo >-</mo ><mn >1</mn ><mo >)</mo ></mrow ></msubsup ></math >,</ins >
82- where <math ><mi >j</mi ><mo >=</mo ><mn >0</mn ><mo >,</mo ><mo >… </mo ><mo >,</mo ><mi >n</mi ><mo >−</mo ><mn >1</mn ></math > and
83+ where <math ><mi >j</mi ><mo >=</mo ><mn >0</mn ><mo >,</mo ><mo >… </mo ><mo >,</mo ><mi >n</mi ><mo >−</mo ><mn >1</mn ></math >< ins >,</ ins > and
8384<math ><msub ><mi >f</mi ><mrow ><mi >n</mi ></mrow ></msub ><mo >(</mo ><mi >j</mi ><mo >)</mo ></math > is defined in Table 124.
8485</p >
8586</li >
8687<li ><p >(4.2) — <del >The following computations are applied to the elements of the <math ><mi >V</mi ></math > sequence:</del >
8788<ins >The next output <math ><msup ><mi >X</mi ><mrow ><mo >(</mo ><mi >q</mi ><mo >)</mo ></mrow ></msup ></math > is computed from the elements of the
8889<math ><msup ><mi >V</mi ><mrow ><mo >(</mo ><mi >q</mi ><mo >)</mo ></mrow ></msup ></math > as follows. For <math ><mi >k</mi ><mo >=</mo ><mn >0</mn ><mo >,</mo ><mo >… </mo ><mo >,</mo ><mi >n</mi ><mo >/</mo ><mn >2</mn ><mo >-</mo ><mn >1</mn ><mo >,</mo ></math ></ins ></p >
8990<ol style =" list-style-type: none" >
90- <li ><p ><ins >(4.2.?) — </ins ><math ><msub ><mi >X</mi ><mrow ><mn >2</mn ><mi >k</mi ><mo >+</mo ><mn >0</mn ></mrow ></msub ></math > = mulhi(<math ><msub ><mi >V</mi ><mrow ><mn >2</mn ><mi >k</mi ></mrow ></msub ></math >,<math ><msub ><mi >M</mi ><mi >k</mi ></msub ></math >,<i >w</i >) xor <math ><msubsup ><mi style =" font-style: italic" >key</mi ><mi >k</mi ><mi >q</mi ></msubsup ></math > xor <math ><msub ><mi >V</mi ><mrow ><mn >2</mn ><mi >k</mi ><mo >+</mo ><mn >1</mn ></mrow ></msub ></math ><ins >, and</ins ></p ></li >
91- <li ><p ><ins >(4.2.?) — </ ins ><math ><msub ><mi >X</mi ><mrow ><mn >2</mn ><mi >k</mi ><mo >+</mo ><mn >1</mn ></mrow ></msub ></math > = mullo(<math ><msub ><mi >V</mi ><mrow ><mn >2</mn ><mi >k</mi ></mrow ></msub ></math >,<math ><msub ><mi >M</mi ><mi >k</mi ></msub ></math >,<i >w</i >)<ins >,</ ins ></p ></li >
91+ <li><p><ins>(4.2.?) — <math><msubsup><mi>X</mi><mrow><mn>2</mn><mi>k</mi><mo>+</mo><mn>0</mn></mrow><mrow><mo>(</mo><mi>q</mi><mo>)</mo></mrow></msubsup></math> = mulhi(<math><msubsup><mi>V</mi><mrow><mn>2</mn><mi>k</mi></mrow><mrow><mo>(</mo><mi>q</mi><mo>)</mo></mrow></msubsup></math>,<math><msub><mi>M</mi><mi>k</mi></msub></math>,<i>w</i>) xor <math><msubsup><mi>K</mi><mi>k</mi><mrow><mo>(</mo><mi>q</mi><mo>)</mo></mrow></msubsup></math> xor <math><msubsup><mi>V</mi><mrow><mn>2</mn><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>q</mi><mo>)</mo></mrow></msubsup></math>, and</ins><del><math><msub><mi>X</mi><mrow><mn>2</mn><mi>k</mi><mo>+</mo><mn>0</mn></mrow></msub></math> = mulhi(<math><msub><mi>V</mi><mrow><mn>2</mn><mi>k</mi></mrow></msub></math>,<math><msub><mi>M</mi><mi>k</mi></msub></math>,<i>w</i>) xor <math><msubsup><mi style="font-style: italic">key</mi><mi>k</mi><mi>q</mi></msubsup></math> xor <math><msub><mi>V</mi><mrow><mn>2</mn><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub></math></del></p></li>
92+ <li ><p ><ins >(4.2.?) — < math >< msubsup >< mi >X</ mi >< mrow >< mn >2</ mn >< mi >k</ mi >< mo >+</ mo >< mn >1</ mn ></ mrow >< mrow >< mo >(</ mo >< mi >q</ mi >< mo >)</ mo ></ mrow ></ msubsup ></ math > = mullo(< math >< msubsup >< mi >V</ mi >< mrow >< mn >2</ mn >< mi >k</ mi ></ mrow >< mrow >< mo >(</ mo >< mi >q</ mi >< mo >)</ mo ></ mrow ></ msubsup ></ math >,< math >< msub >< mi >M</ mi >< mi >k</ mi ></ msub ></ math >,< i >w</ i >),</ ins ><del >< math ><msub ><mi >X</mi ><mrow ><mn >2</mn ><mi >k</mi ><mo >+</mo ><mn >1</mn ></mrow ></msub ></math > = mullo(<math ><msub ><mi >V</mi ><mrow ><mn >2</mn ><mi >k</mi ></mrow ></msub ></math >,<math ><msub ><mi >M</mi ><mi >k</mi ></msub ></math >,<i >w</i >)</ del ></p ></li >
9293</ol >
9394<p >
94- where:
95+ where< del >:</ del >
9596</p >
9697<ol style =" list-style-type: none" >
9798<li ><p >(4.2.1) — mullo(<math ><mi >a</mi ><mo >,</mo ><mi >b</mi ><mo >,</mo ><mi >w</mi ></math >) is the low half of the modular multiplication of
0 commit comments