Source file src/math/rand/v2/regress_test.go

     1  // Copyright 2014 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Test that random number sequences generated by a specific seed
     6  // do not change from version to version.
     7  //
     8  // Do NOT make changes to the golden outputs. If bugs need to be fixed
     9  // in the underlying code, find ways to fix them that do not affect the
    10  // outputs.
    11  
    12  package rand_test
    13  
    14  import (
    15  	"bytes"
    16  	"flag"
    17  	"fmt"
    18  	"go/format"
    19  	"io"
    20  	. "math/rand/v2"
    21  	"os"
    22  	"reflect"
    23  	"strings"
    24  	"testing"
    25  )
    26  
    27  var update = flag.Bool("update", false, "update golden results for regression test")
    28  
    29  func TestRegress(t *testing.T) {
    30  	var int32s = []int32{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1}
    31  	var uint32s = []uint32{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1, 1<<32 - 2, 1<<32 - 1}
    32  	var int64s = []int64{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1, 1000000000000000000, 1 << 60, 1<<63 - 2, 1<<63 - 1}
    33  	var uint64s = []uint64{1, 10, 32, 1 << 20, 1<<20 + 1, 1000000000, 1 << 30, 1<<31 - 2, 1<<31 - 1, 1000000000000000000, 1 << 60, 1<<63 - 2, 1<<63 - 1, 1<<64 - 2, 1<<64 - 1}
    34  	var permSizes = []int{0, 1, 5, 8, 9, 10, 16}
    35  
    36  	n := reflect.TypeOf(New(NewPCG(1, 2))).NumMethod()
    37  	p := 0
    38  	var buf bytes.Buffer
    39  	if *update {
    40  		fmt.Fprintf(&buf, "var regressGolden = []any{\n")
    41  	}
    42  	for i := 0; i < n; i++ {
    43  		if *update && i > 0 {
    44  			fmt.Fprintf(&buf, "\n")
    45  		}
    46  		r := New(NewPCG(1, 2))
    47  		rv := reflect.ValueOf(r)
    48  		m := rv.Type().Method(i)
    49  		mv := rv.Method(i)
    50  		mt := mv.Type()
    51  		if mt.NumOut() == 0 {
    52  			continue
    53  		}
    54  		for repeat := 0; repeat < 20; repeat++ {
    55  			var args []reflect.Value
    56  			var argstr string
    57  			if mt.NumIn() == 1 {
    58  				var x any
    59  				switch mt.In(0).Kind() {
    60  				default:
    61  					t.Fatalf("unexpected argument type for r.%s", m.Name)
    62  
    63  				case reflect.Int:
    64  					if m.Name == "Perm" {
    65  						x = permSizes[repeat%len(permSizes)]
    66  						break
    67  					}
    68  					big := int64s[repeat%len(int64s)]
    69  					if int64(int(big)) != big {
    70  						// On 32-bit machine.
    71  						// Consume an Int64 like on a 64-bit machine,
    72  						// to keep the golden data the same on different architectures.
    73  						r.Int64N(big)
    74  						if *update {
    75  							t.Fatalf("must run -update on 64-bit machine")
    76  						}
    77  						p++
    78  						continue
    79  					}
    80  					x = int(big)
    81  
    82  				case reflect.Uint:
    83  					if m.Name == "Uint" {
    84  						continue
    85  					}
    86  					big := uint64s[repeat%len(uint64s)]
    87  					if uint64(uint(big)) != big {
    88  						r.Uint64N(big) // what would happen on 64-bit machine, to keep stream in sync
    89  						if *update {
    90  							t.Fatalf("must run -update on 64-bit machine")
    91  						}
    92  						p++
    93  						continue
    94  					}
    95  					x = uint(big)
    96  
    97  				case reflect.Int32:
    98  					x = int32s[repeat%len(int32s)]
    99  
   100  				case reflect.Int64:
   101  					x = int64s[repeat%len(int64s)]
   102  
   103  				case reflect.Uint32:
   104  					x = uint32s[repeat%len(uint32s)]
   105  
   106  				case reflect.Uint64:
   107  					x = uint64s[repeat%len(uint64s)]
   108  				}
   109  				argstr = fmt.Sprint(x)
   110  				args = append(args, reflect.ValueOf(x))
   111  			}
   112  
   113  			var out any
   114  			out = mv.Call(args)[0].Interface()
   115  			if m.Name == "Int" || m.Name == "IntN" {
   116  				out = int64(out.(int))
   117  			}
   118  			if m.Name == "Uint" || m.Name == "UintN" {
   119  				out = uint64(out.(uint))
   120  			}
   121  			if *update {
   122  				var val string
   123  				big := int64(1 << 60)
   124  				if int64(int(big)) != big && (m.Name == "Int" || m.Name == "IntN" || m.Name == "Uint" || m.Name == "UintN") {
   125  					// 32-bit machine cannot print 64-bit results
   126  					val = "truncated"
   127  				} else if reflect.TypeOf(out).Kind() == reflect.Slice {
   128  					val = fmt.Sprintf("%#v", out)
   129  				} else {
   130  					val = fmt.Sprintf("%T(%v)", out, out)
   131  				}
   132  				fmt.Fprintf(&buf, "\t%s, // %s(%s)\n", val, m.Name, argstr)
   133  			} else if p >= len(regressGolden) {
   134  				t.Errorf("r.%s(%s) = %v, missing golden value", m.Name, argstr, out)
   135  			} else {
   136  				want := regressGolden[p]
   137  				if m.Name == "Int" {
   138  					want = int64(int(uint(want.(int64)) << 1 >> 1))
   139  				}
   140  				if m.Name == "Uint" {
   141  					want = uint64(uint(want.(uint64)))
   142  				}
   143  				if !reflect.DeepEqual(out, want) {
   144  					t.Errorf("r.%s(%s) = %v, want %v", m.Name, argstr, out, want)
   145  				}
   146  			}
   147  			p++
   148  		}
   149  	}
   150  	if *update {
   151  		replace(t, "regress_test.go", buf.Bytes())
   152  	}
   153  }
   154  
   155  func TestUpdateExample(t *testing.T) {
   156  	if !*update {
   157  		t.Skip("-update not given")
   158  	}
   159  
   160  	oldStdout := os.Stdout
   161  	defer func() {
   162  		os.Stdout = oldStdout
   163  	}()
   164  
   165  	r, w, err := os.Pipe()
   166  	if err != nil {
   167  		t.Fatal(err)
   168  	}
   169  	defer r.Close()
   170  	defer w.Close()
   171  
   172  	go func() {
   173  		os.Stdout = w
   174  		Example_rand()
   175  		os.Stdout = oldStdout
   176  		w.Close()
   177  	}()
   178  	out, err := io.ReadAll(r)
   179  	if err != nil {
   180  		t.Fatal(err)
   181  	}
   182  
   183  	var buf bytes.Buffer
   184  	fmt.Fprintf(&buf, "\t// Output:\n")
   185  	for _, line := range strings.Split(string(out), "\n") {
   186  		if line != "" {
   187  			fmt.Fprintf(&buf, "\t// %s\n", line)
   188  		}
   189  	}
   190  
   191  	replace(t, "example_test.go", buf.Bytes())
   192  
   193  	// Exit so that Example_rand cannot fail.
   194  	fmt.Printf("UPDATED; ignore non-zero exit status\n")
   195  	os.Exit(1)
   196  }
   197  
   198  // replace substitutes the definition text from new into the content of file.
   199  // The text in new is of the form
   200  //
   201  //	var whatever = T{
   202  //		...
   203  //	}
   204  //
   205  // Replace searches file for an exact match for the text of the first line,
   206  // finds the closing brace, and then substitutes new for what used to be in the file.
   207  // This lets us update the regressGolden table during go test -update.
   208  func replace(t *testing.T, file string, new []byte) {
   209  	first, _, _ := bytes.Cut(new, []byte("\n"))
   210  	first = append(append([]byte("\n"), first...), '\n')
   211  	data, err := os.ReadFile(file)
   212  	if err != nil {
   213  		t.Fatal(err)
   214  	}
   215  	i := bytes.Index(data, first)
   216  	if i < 0 {
   217  		t.Fatalf("cannot find %q in %s", first, file)
   218  	}
   219  	j := bytes.Index(data[i+1:], []byte("\n}\n"))
   220  	if j < 0 {
   221  		t.Fatalf("cannot find end in %s", file)
   222  	}
   223  	data = append(append(data[:i+1:i+1], new...), data[i+1+j+1:]...)
   224  	data, err = format.Source(data)
   225  	if err != nil {
   226  		t.Fatal(err)
   227  	}
   228  	if err := os.WriteFile(file, data, 0666); err != nil {
   229  		t.Fatal(err)
   230  	}
   231  }
   232  
   233  var regressGolden = []any{
   234  	float64(0.5931317151369719),   // ExpFloat64()
   235  	float64(0.0680034588807843),   // ExpFloat64()
   236  	float64(0.036496967459790364), // ExpFloat64()
   237  	float64(2.460335459645379),    // ExpFloat64()
   238  	float64(1.5792300208419903),   // ExpFloat64()
   239  	float64(0.9149501499404387),   // ExpFloat64()
   240  	float64(0.43463410545541104),  // ExpFloat64()
   241  	float64(0.5513632046504593),   // ExpFloat64()
   242  	float64(0.7426404617374481),   // ExpFloat64()
   243  	float64(1.2334925132631804),   // ExpFloat64()
   244  	float64(0.892529142200442),    // ExpFloat64()
   245  	float64(0.21508763681487764),  // ExpFloat64()
   246  	float64(1.0208588200798545),   // ExpFloat64()
   247  	float64(0.7650739736831382),   // ExpFloat64()
   248  	float64(0.7772788529257701),   // ExpFloat64()
   249  	float64(1.102732861281323),    // ExpFloat64()
   250  	float64(0.6982243043885805),   // ExpFloat64()
   251  	float64(0.4981788638202421),   // ExpFloat64()
   252  	float64(0.15806532306947937),  // ExpFloat64()
   253  	float64(0.9419163802459202),   // ExpFloat64()
   254  
   255  	float32(0.95955694),  // Float32()
   256  	float32(0.8076733),   // Float32()
   257  	float32(0.8135684),   // Float32()
   258  	float32(0.92872405),  // Float32()
   259  	float32(0.97472525),  // Float32()
   260  	float32(0.5485458),   // Float32()
   261  	float32(0.97740936),  // Float32()
   262  	float32(0.042272687), // Float32()
   263  	float32(0.99663067),  // Float32()
   264  	float32(0.035181105), // Float32()
   265  	float32(0.45059562),  // Float32()
   266  	float32(0.86597633),  // Float32()
   267  	float32(0.8954844),   // Float32()
   268  	float32(0.090798736), // Float32()
   269  	float32(0.46218646),  // Float32()
   270  	float32(0.5955118),   // Float32()
   271  	float32(0.08985227),  // Float32()
   272  	float32(0.19820237),  // Float32()
   273  	float32(0.7443699),   // Float32()
   274  	float32(0.56461),     // Float32()
   275  
   276  	float64(0.6764556596678251),  // Float64()
   277  	float64(0.4613862177205994),  // Float64()
   278  	float64(0.5085473976760264),  // Float64()
   279  	float64(0.4297927436037299),  // Float64()
   280  	float64(0.797802349388613),   // Float64()
   281  	float64(0.3883664855410056),  // Float64()
   282  	float64(0.8192750264193612),  // Float64()
   283  	float64(0.3381816951746133),  // Float64()
   284  	float64(0.9730458047755973),  // Float64()
   285  	float64(0.281449117585586),   // Float64()
   286  	float64(0.6047654075331631),  // Float64()
   287  	float64(0.9278107175107462),  // Float64()
   288  	float64(0.16387541502137226), // Float64()
   289  	float64(0.7263900707339023),  // Float64()
   290  	float64(0.6974917552729882),  // Float64()
   291  	float64(0.7640946923790318),  // Float64()
   292  	float64(0.7188183661358182),  // Float64()
   293  	float64(0.5856191500346635),  // Float64()
   294  	float64(0.9549597149363428),  // Float64()
   295  	float64(0.5168804691962643),  // Float64()
   296  
   297  	int64(4969059760275911952), // Int()
   298  	int64(2147869220224756844), // Int()
   299  	int64(5246770554000605320), // Int()
   300  	int64(5471241176507662746), // Int()
   301  	int64(4321634407747778896), // Int()
   302  	int64(760102831717374652),  // Int()
   303  	int64(9221744211007427193), // Int()
   304  	int64(8289669384274456462), // Int()
   305  	int64(2449715415482412441), // Int()
   306  	int64(3389241988064777392), // Int()
   307  	int64(2986830195847294191), // Int()
   308  	int64(8204908297817606218), // Int()
   309  	int64(8134976985547166651), // Int()
   310  	int64(2240328155279531677), // Int()
   311  	int64(7311121042813227358), // Int()
   312  	int64(5231057920893523323), // Int()
   313  	int64(4257872588489500903), // Int()
   314  	int64(158397175702351138),  // Int()
   315  	int64(1350674201389090105), // Int()
   316  	int64(6093522341581845358), // Int()
   317  
   318  	int32(1652216515), // Int32()
   319  	int32(1323786710), // Int32()
   320  	int32(1684546306), // Int32()
   321  	int32(1710678126), // Int32()
   322  	int32(503104460),  // Int32()
   323  	int32(88487615),   // Int32()
   324  	int32(1073552320), // Int32()
   325  	int32(965044529),  // Int32()
   326  	int32(285184408),  // Int32()
   327  	int32(394559696),  // Int32()
   328  	int32(1421454622), // Int32()
   329  	int32(955177040),  // Int32()
   330  	int32(2020777787), // Int32()
   331  	int32(260808523),  // Int32()
   332  	int32(851126509),  // Int32()
   333  	int32(1682717115), // Int32()
   334  	int32(1569423431), // Int32()
   335  	int32(1092181682), // Int32()
   336  	int32(157239171),  // Int32()
   337  	int32(709379364),  // Int32()
   338  
   339  	int32(0),          // Int32N(1)
   340  	int32(6),          // Int32N(10)
   341  	int32(8),          // Int32N(32)
   342  	int32(704922),     // Int32N(1048576)
   343  	int32(245656),     // Int32N(1048577)
   344  	int32(41205257),   // Int32N(1000000000)
   345  	int32(43831929),   // Int32N(1073741824)
   346  	int32(965044528),  // Int32N(2147483646)
   347  	int32(285184408),  // Int32N(2147483647)
   348  	int32(0),          // Int32N(1)
   349  	int32(6),          // Int32N(10)
   350  	int32(10),         // Int32N(32)
   351  	int32(283579),     // Int32N(1048576)
   352  	int32(127348),     // Int32N(1048577)
   353  	int32(396336665),  // Int32N(1000000000)
   354  	int32(911873403),  // Int32N(1073741824)
   355  	int32(1569423430), // Int32N(2147483646)
   356  	int32(1092181681), // Int32N(2147483647)
   357  	int32(0),          // Int32N(1)
   358  	int32(3),          // Int32N(10)
   359  
   360  	int64(4969059760275911952), // Int64()
   361  	int64(2147869220224756844), // Int64()
   362  	int64(5246770554000605320), // Int64()
   363  	int64(5471241176507662746), // Int64()
   364  	int64(4321634407747778896), // Int64()
   365  	int64(760102831717374652),  // Int64()
   366  	int64(9221744211007427193), // Int64()
   367  	int64(8289669384274456462), // Int64()
   368  	int64(2449715415482412441), // Int64()
   369  	int64(3389241988064777392), // Int64()
   370  	int64(2986830195847294191), // Int64()
   371  	int64(8204908297817606218), // Int64()
   372  	int64(8134976985547166651), // Int64()
   373  	int64(2240328155279531677), // Int64()
   374  	int64(7311121042813227358), // Int64()
   375  	int64(5231057920893523323), // Int64()
   376  	int64(4257872588489500903), // Int64()
   377  	int64(158397175702351138),  // Int64()
   378  	int64(1350674201389090105), // Int64()
   379  	int64(6093522341581845358), // Int64()
   380  
   381  	int64(0),                   // Int64N(1)
   382  	int64(6),                   // Int64N(10)
   383  	int64(8),                   // Int64N(32)
   384  	int64(704922),              // Int64N(1048576)
   385  	int64(245656),              // Int64N(1048577)
   386  	int64(41205257),            // Int64N(1000000000)
   387  	int64(43831929),            // Int64N(1073741824)
   388  	int64(965044528),           // Int64N(2147483646)
   389  	int64(285184408),           // Int64N(2147483647)
   390  	int64(183731176326946086),  // Int64N(1000000000000000000)
   391  	int64(680987186633600239),  // Int64N(1152921504606846976)
   392  	int64(4102454148908803108), // Int64N(9223372036854775806)
   393  	int64(8679174511200971228), // Int64N(9223372036854775807)
   394  	int64(0),                   // Int64N(1)
   395  	int64(3),                   // Int64N(10)
   396  	int64(27),                  // Int64N(32)
   397  	int64(665831),              // Int64N(1048576)
   398  	int64(533292),              // Int64N(1048577)
   399  	int64(73220195),            // Int64N(1000000000)
   400  	int64(686060398),           // Int64N(1073741824)
   401  
   402  	int64(0),                   // IntN(1)
   403  	int64(6),                   // IntN(10)
   404  	int64(8),                   // IntN(32)
   405  	int64(704922),              // IntN(1048576)
   406  	int64(245656),              // IntN(1048577)
   407  	int64(41205257),            // IntN(1000000000)
   408  	int64(43831929),            // IntN(1073741824)
   409  	int64(965044528),           // IntN(2147483646)
   410  	int64(285184408),           // IntN(2147483647)
   411  	int64(183731176326946086),  // IntN(1000000000000000000)
   412  	int64(680987186633600239),  // IntN(1152921504606846976)
   413  	int64(4102454148908803108), // IntN(9223372036854775806)
   414  	int64(8679174511200971228), // IntN(9223372036854775807)
   415  	int64(0),                   // IntN(1)
   416  	int64(3),                   // IntN(10)
   417  	int64(27),                  // IntN(32)
   418  	int64(665831),              // IntN(1048576)
   419  	int64(533292),              // IntN(1048577)
   420  	int64(73220195),            // IntN(1000000000)
   421  	int64(686060398),           // IntN(1073741824)
   422  
   423  	float64(0.37944549835531083),  // NormFloat64()
   424  	float64(0.07473804659119399),  // NormFloat64()
   425  	float64(0.20006841200604142),  // NormFloat64()
   426  	float64(-1.1253144115495104),  // NormFloat64()
   427  	float64(-0.4005883316435388),  // NormFloat64()
   428  	float64(-3.0853771402394736),  // NormFloat64()
   429  	float64(1.932330243076978),    // NormFloat64()
   430  	float64(1.726131393719264),    // NormFloat64()
   431  	float64(-0.11707238034168332), // NormFloat64()
   432  	float64(-0.9303318111676635),  // NormFloat64()
   433  	float64(-0.04750789419852852), // NormFloat64()
   434  	float64(0.22248301107582735),  // NormFloat64()
   435  	float64(-1.83630520614272),    // NormFloat64()
   436  	float64(0.7259521217919809),   // NormFloat64()
   437  	float64(0.8806882871913041),   // NormFloat64()
   438  	float64(-1.5022903484270484),  // NormFloat64()
   439  	float64(0.5972577266810571),   // NormFloat64()
   440  	float64(1.5631937339973658),   // NormFloat64()
   441  	float64(-0.3841235370075905),  // NormFloat64()
   442  	float64(-0.2967295854430667),  // NormFloat64()
   443  
   444  	[]int{},                             // Perm(0)
   445  	[]int{0},                            // Perm(1)
   446  	[]int{1, 4, 2, 0, 3},                // Perm(5)
   447  	[]int{4, 3, 6, 1, 5, 2, 7, 0},       // Perm(8)
   448  	[]int{6, 5, 1, 8, 7, 2, 0, 3, 4},    // Perm(9)
   449  	[]int{9, 4, 2, 5, 6, 8, 1, 7, 0, 3}, // Perm(10)
   450  	[]int{5, 9, 3, 1, 4, 2, 10, 7, 15, 11, 0, 14, 13, 8, 6, 12}, // Perm(16)
   451  	[]int{},                             // Perm(0)
   452  	[]int{0},                            // Perm(1)
   453  	[]int{4, 2, 1, 3, 0},                // Perm(5)
   454  	[]int{0, 2, 3, 1, 5, 4, 6, 7},       // Perm(8)
   455  	[]int{2, 0, 8, 3, 4, 7, 6, 5, 1},    // Perm(9)
   456  	[]int{0, 6, 5, 3, 8, 4, 1, 2, 9, 7}, // Perm(10)
   457  	[]int{9, 14, 4, 11, 13, 8, 0, 6, 2, 12, 3, 7, 1, 10, 5, 15}, // Perm(16)
   458  	[]int{},                             // Perm(0)
   459  	[]int{0},                            // Perm(1)
   460  	[]int{2, 4, 0, 3, 1},                // Perm(5)
   461  	[]int{3, 2, 1, 0, 7, 5, 4, 6},       // Perm(8)
   462  	[]int{1, 3, 4, 5, 0, 2, 7, 8, 6},    // Perm(9)
   463  	[]int{1, 8, 4, 7, 2, 6, 5, 9, 0, 3}, // Perm(10)
   464  
   465  	uint64(14192431797130687760), // Uint()
   466  	uint64(11371241257079532652), // Uint()
   467  	uint64(14470142590855381128), // Uint()
   468  	uint64(14694613213362438554), // Uint()
   469  	uint64(4321634407747778896),  // Uint()
   470  	uint64(760102831717374652),   // Uint()
   471  	uint64(9221744211007427193),  // Uint()
   472  	uint64(8289669384274456462),  // Uint()
   473  	uint64(2449715415482412441),  // Uint()
   474  	uint64(3389241988064777392),  // Uint()
   475  	uint64(12210202232702069999), // Uint()
   476  	uint64(8204908297817606218),  // Uint()
   477  	uint64(17358349022401942459), // Uint()
   478  	uint64(2240328155279531677),  // Uint()
   479  	uint64(7311121042813227358),  // Uint()
   480  	uint64(14454429957748299131), // Uint()
   481  	uint64(13481244625344276711), // Uint()
   482  	uint64(9381769212557126946),  // Uint()
   483  	uint64(1350674201389090105),  // Uint()
   484  	uint64(6093522341581845358),  // Uint()
   485  
   486  	uint32(3304433030), // Uint32()
   487  	uint32(2647573421), // Uint32()
   488  	uint32(3369092613), // Uint32()
   489  	uint32(3421356252), // Uint32()
   490  	uint32(1006208920), // Uint32()
   491  	uint32(176975231),  // Uint32()
   492  	uint32(2147104640), // Uint32()
   493  	uint32(1930089058), // Uint32()
   494  	uint32(570368816),  // Uint32()
   495  	uint32(789119393),  // Uint32()
   496  	uint32(2842909244), // Uint32()
   497  	uint32(1910354080), // Uint32()
   498  	uint32(4041555575), // Uint32()
   499  	uint32(521617046),  // Uint32()
   500  	uint32(1702253018), // Uint32()
   501  	uint32(3365434230), // Uint32()
   502  	uint32(3138846863), // Uint32()
   503  	uint32(2184363364), // Uint32()
   504  	uint32(314478343),  // Uint32()
   505  	uint32(1418758728), // Uint32()
   506  
   507  	uint32(0),          // Uint32N(1)
   508  	uint32(6),          // Uint32N(10)
   509  	uint32(8),          // Uint32N(32)
   510  	uint32(704922),     // Uint32N(1048576)
   511  	uint32(245656),     // Uint32N(1048577)
   512  	uint32(41205257),   // Uint32N(1000000000)
   513  	uint32(43831929),   // Uint32N(1073741824)
   514  	uint32(965044528),  // Uint32N(2147483646)
   515  	uint32(285184408),  // Uint32N(2147483647)
   516  	uint32(789119393),  // Uint32N(4294967294)
   517  	uint32(2842909244), // Uint32N(4294967295)
   518  	uint32(0),          // Uint32N(1)
   519  	uint32(9),          // Uint32N(10)
   520  	uint32(29),         // Uint32N(32)
   521  	uint32(266590),     // Uint32N(1048576)
   522  	uint32(821640),     // Uint32N(1048577)
   523  	uint32(730819735),  // Uint32N(1000000000)
   524  	uint32(522841378),  // Uint32N(1073741824)
   525  	uint32(157239171),  // Uint32N(2147483646)
   526  	uint32(709379364),  // Uint32N(2147483647)
   527  
   528  	uint64(14192431797130687760), // Uint64()
   529  	uint64(11371241257079532652), // Uint64()
   530  	uint64(14470142590855381128), // Uint64()
   531  	uint64(14694613213362438554), // Uint64()
   532  	uint64(4321634407747778896),  // Uint64()
   533  	uint64(760102831717374652),   // Uint64()
   534  	uint64(9221744211007427193),  // Uint64()
   535  	uint64(8289669384274456462),  // Uint64()
   536  	uint64(2449715415482412441),  // Uint64()
   537  	uint64(3389241988064777392),  // Uint64()
   538  	uint64(12210202232702069999), // Uint64()
   539  	uint64(8204908297817606218),  // Uint64()
   540  	uint64(17358349022401942459), // Uint64()
   541  	uint64(2240328155279531677),  // Uint64()
   542  	uint64(7311121042813227358),  // Uint64()
   543  	uint64(14454429957748299131), // Uint64()
   544  	uint64(13481244625344276711), // Uint64()
   545  	uint64(9381769212557126946),  // Uint64()
   546  	uint64(1350674201389090105),  // Uint64()
   547  	uint64(6093522341581845358),  // Uint64()
   548  
   549  	uint64(0),                   // Uint64N(1)
   550  	uint64(6),                   // Uint64N(10)
   551  	uint64(8),                   // Uint64N(32)
   552  	uint64(704922),              // Uint64N(1048576)
   553  	uint64(245656),              // Uint64N(1048577)
   554  	uint64(41205257),            // Uint64N(1000000000)
   555  	uint64(43831929),            // Uint64N(1073741824)
   556  	uint64(965044528),           // Uint64N(2147483646)
   557  	uint64(285184408),           // Uint64N(2147483647)
   558  	uint64(183731176326946086),  // Uint64N(1000000000000000000)
   559  	uint64(680987186633600239),  // Uint64N(1152921504606846976)
   560  	uint64(4102454148908803108), // Uint64N(9223372036854775806)
   561  	uint64(8679174511200971228), // Uint64N(9223372036854775807)
   562  	uint64(2240328155279531676), // Uint64N(18446744073709551614)
   563  	uint64(7311121042813227357), // Uint64N(18446744073709551615)
   564  	uint64(0),                   // Uint64N(1)
   565  	uint64(7),                   // Uint64N(10)
   566  	uint64(2),                   // Uint64N(32)
   567  	uint64(312633),              // Uint64N(1048576)
   568  	uint64(346376),              // Uint64N(1048577)
   569  
   570  	uint64(0),                   // UintN(1)
   571  	uint64(6),                   // UintN(10)
   572  	uint64(8),                   // UintN(32)
   573  	uint64(704922),              // UintN(1048576)
   574  	uint64(245656),              // UintN(1048577)
   575  	uint64(41205257),            // UintN(1000000000)
   576  	uint64(43831929),            // UintN(1073741824)
   577  	uint64(965044528),           // UintN(2147483646)
   578  	uint64(285184408),           // UintN(2147483647)
   579  	uint64(183731176326946086),  // UintN(1000000000000000000)
   580  	uint64(680987186633600239),  // UintN(1152921504606846976)
   581  	uint64(4102454148908803108), // UintN(9223372036854775806)
   582  	uint64(8679174511200971228), // UintN(9223372036854775807)
   583  	uint64(2240328155279531676), // UintN(18446744073709551614)
   584  	uint64(7311121042813227357), // UintN(18446744073709551615)
   585  	uint64(0),                   // UintN(1)
   586  	uint64(7),                   // UintN(10)
   587  	uint64(2),                   // UintN(32)
   588  	uint64(312633),              // UintN(1048576)
   589  	uint64(346376),              // UintN(1048577)
   590  }
   591  

View as plain text