File 2874-Clarify-default-algorithm.patch of Package erlang

From 2287f07d142f9f37c3afec524990f87a3cb3b593 Mon Sep 17 00:00:00 2001
From: Raimo Niskanen <raimo@erlang.org>
Date: Wed, 9 Dec 2020 14:39:19 +0100
Subject: [PATCH 4/6] Clarify "default algorithm"

---
 lib/stdlib/doc/src/rand.xml | 75 ++++++++++++++++++++++++++++---------
 1 file changed, 58 insertions(+), 17 deletions(-)

diff --git a/lib/stdlib/doc/src/rand.xml b/lib/stdlib/doc/src/rand.xml
index 9e3c628920..bae50d2582 100644
--- a/lib/stdlib/doc/src/rand.xml
+++ b/lib/stdlib/doc/src/rand.xml
@@ -57,7 +57,10 @@
       for calculating new states.
     </p>
 
-    <p>The following algorithms are provided:</p>
+    <p>
+      <marker id="algorithms"/>
+      The following algorithms are provided:
+    </p>
 
     <taglist>
       <tag><c>exsss</c></tag>
@@ -79,8 +82,11 @@
 	</p>
 	<p>
 	  Alas, this combination is about 10% slower than <c>exrop</c>,
-	  but is despite that the default algorithm thanks to its
-	  statistical qualities.
+	  but is despite that the
+          <seeerl marker="#default-algorithm">
+            <em>default algorithm</em>
+          </seeerl>
+          thanks to its statistical qualities.
 	</p>
       </item>
       <tag><c>exro928ss</c></tag>
@@ -93,10 +99,13 @@
 	  <url href="http://vigna.di.unimi.it/ftp/papers/ScrambledLinear.pdf">
 	    Scrambled Linear Pseudorandom Number Generators
 	  </url>
-	  that on a 64 bit Erlang system executes only about 40% slower than
-	  the default <c>exsss</c> algorithm but with much longer period
-	  and better statistical properties, and on the flip side
-	  a larger state.
+	  that on a 64 bit Erlang system executes only
+          about 40% slower than the
+          <seeerl marker="#default-algorithm">
+            <em>default</em> <c>exsss</c> <em>algorithm</em>
+          </seeerl>
+          but with much longer period and better statistical properties,
+          but on the flip side a larger state.
 	</p>
 	<p>
 	  Many thanks to Sebastiano Vigna for his help with
@@ -118,7 +127,10 @@
         <p>Xorshift116+, 58 bits precision and period of 2^116-1</p>
         <p>Jump function: equivalent to 2^64 calls</p>
 	<p>
-	  This is a corrected version of the previous default algorithm,
+	  This is a corrected version of the previous
+          <seeerl marker="#default-algorithm">
+            <em>default algorithm</em>,
+          </seeerl>
 	  that now has been superseded by Xoroshiro116+ (<c>exrop</c>).
 	  Since there is no native 58 bit rotate instruction this
 	  algorithm executes a little (say &lt; 15%) faster than <c>exrop</c>.
@@ -129,11 +141,20 @@
     </taglist>
 
     <p>
-      The default algorithm is <c>exsss</c> (Xorshift116**).
+      <marker id="default-algorithm"/>
+      The current <em>default algorithm</em> is
+      <seeerl marker="#algorithms">
+      <c>exsss</c> (Xorshift116**).
+      </seeerl>
       If a specific algorithm is
       required, ensure to always use <seemfa marker="#seed/1">
       <c>seed/1</c></seemfa> to initialize the state.
     </p>
+    <p>
+      Which algorithm that is the default may change between
+      Erlang/OTP releases, and is selected to be one with high
+      speed, small state and "good enough" statistical properties.
+    </p>
 
     <p>
       Undocumented (old) algorithms are deprecated but still implemented
@@ -183,15 +204,23 @@
       <seemfa marker="#uniform/1"><c>uniform/1</c></seemfa> or
       <seemfa marker="#uniform_real/0"><c>uniform_real/0</c></seemfa> without
       setting a seed first, <seemfa marker="#seed/1"><c>seed/1</c></seemfa>
-      is called automatically with the default algorithm and creates a
-      non-constant seed.</p>
+      is called automatically with the
+      <seeerl marker="#default-algorithm">
+        <em>default algorithm</em>
+      </seeerl>
+      and creates a non-constant seed.</p>
 
     <p>The functions with explicit state never use the process dictionary.</p>
 
     <p><em>Examples:</em></p>
 
-    <p>Simple use; creates and seeds the default algorithm
-      with a non-constant seed if not already done:</p>
+    <p>
+      Simple use; creates and seeds the
+      <seeerl marker="#default-algorithm">
+        <em>default algorithm</em>
+      </seeerl>
+      with a non-constant seed if not already done:
+    </p>
 
     <pre>
 R0 = rand:uniform(),
@@ -473,7 +502,10 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre>
           time-dependent data if <c><anno>AlgOrStateOrExpState</anno></c>
 	  is an algorithm.
           <c><anno>Alg</anno>&nbsp;=&nbsp;default</c>
-          is an alias for the default algorithm.
+          is an alias for the
+          <seeerl marker="#default-algorithm">
+            <em>default algorithm</em>.
+          </seeerl>
 	</p>
         <p>Otherwise recreates the exported seed in the process dictionary,
           and returns the state. See also
@@ -490,7 +522,10 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre>
           Seeds random number generation with the specified algorithm and
           integers in the process dictionary and returns the state.
           <c><anno>Alg</anno>&nbsp;=&nbsp;default</c>
-          is an alias for the default algorithm.
+          is an alias for the
+          <seeerl marker="#default-algorithm">
+            <em>default algorithm</em>.
+          </seeerl>
         </p>
       </desc>
     </func>
@@ -505,7 +540,10 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre>
           time-dependent data if <c><anno>AlgOrStateOrExpState</anno></c>
 	  is an algorithm.
           <c><anno>Alg</anno>&nbsp;=&nbsp;default</c>
-          is an alias for the default algorithm.
+          is an alias for the
+          <seeerl marker="#default-algorithm">
+            <em>default algorithm</em>.
+          </seeerl>
 	</p>
         <p>Otherwise recreates the exported seed and returns the state.
           See also <seemfa marker="#export_seed/0">
@@ -522,7 +560,10 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre>
           Seeds random number generation with the specified algorithm and
           integers and returns the state.
           <c><anno>Alg</anno>&nbsp;=&nbsp;default</c>
-          is an alias for the default algorithm.
+          is an alias for the
+          <seeerl marker="#default-algorithm">
+            <em>default algorithm</em>.
+          </seeerl>
         </p>
       </desc>
     </func>
-- 
2.26.2

openSUSE Build Service is sponsored by