From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9514 invoked by alias); 8 Mar 2008 18:28:47 -0000 Received: (qmail 9504 invoked by uid 22791); 8 Mar 2008 18:28:47 -0000 X-Spam-Check-By: sourceware.org Received: from an-out-0708.google.com (HELO an-out-0708.google.com) (209.85.132.248) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 08 Mar 2008 18:28:20 +0000 Received: by an-out-0708.google.com with SMTP id c3so273724ana.104 for ; Sat, 08 Mar 2008 10:28:18 -0800 (PST) Received: by 10.100.96.9 with SMTP id t9mr7180483anb.102.1205000898211; Sat, 08 Mar 2008 10:28:18 -0800 (PST) Received: by 10.100.125.18 with HTTP; Sat, 8 Mar 2008 10:28:18 -0800 (PST) Message-ID: <19c433eb0803081028i3653623fxb508c571e78658c1@mail.gmail.com> Date: Sat, 08 Mar 2008 18:28:00 -0000 From: FX To: "Fortran List" , gcc-patches Subject: Fwd: [libgfortran,patch] Scramble bytes in the user-provided random seeds (PR 32812) In-Reply-To: <4EAB6E62-FA2D-4184-A676-99CB401C7740@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_29642_22972686.1205000898195" References: <4EAB6E62-FA2D-4184-A676-99CB401C7740@gmail.com> Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2008-03/txt/msg00544.txt.bz2 ------=_Part_29642_22972686.1205000898195 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-length: 1590 ping ---------- Forwarded message ---------- From: FX Coudert Date: Mon, Feb 25, 2008 at 9:45 AM Subject: [libgfortran,patch] Scramble bytes in the user-provided random seeds (PR 32812) To: Fortran List Cc: gcc-patches list Hi all, Current library implementation of RANDOM_NUMBER() is such that the highest bits of the user-provided seed determine the mots significant bits of floating-points values return, and the lowest bits of the seed control the least significant bits of fp values. Thus, a user providing us with a seed with good lower bits but poor higher bits will find that the fp values are not very random at all... one such example being the use of DATE_AND_TIME to provide for random seeds. This patch adds a little to the quality of implementation by adding a (bijective) scrambling operation between the seed the user gives us and the seed we actually use. Two functions, scramble_seed and unscramble_seed, are used when RANDOM_NUMBER() is called with a PUT=3D or GET=3D argument, which shuffles bytes of the seed. Regtested on x86_64-linux, with both -m32 and -m64. Tested manually with different seeds of different qualities. FX PS: Of course, we're not adding quality to poor seeds (I'm not changing entropy with a bijective function!). We're just providing a little invisible help to one particular case of half-bad, half-good seeds. -- Fran=E7ois-Xavier Coudert http://www.homepages.ucl.ac.uk/~uccafco/ --=20 FX Coudert http://www.homepages.ucl.ac.uk/~uccafco/ ------=_Part_29642_22972686.1205000898195 Content-Type: application/octet-stream; name=random.ChangeLog Content-Transfer-Encoding: base64 X-Attachment-Id: 0.1 Content-Disposition: attachment; filename=random.ChangeLog Content-length: 383 MjAwOC0wMi0yNSAgRnJhbmNvaXMtWGF2aWVyIENvdWRlcnQgIDxmeGNvdWRl cnRAZ2NjLmdudS5vcmc+CgoJUFIgbGliZm9ydHJhbi8zMjgxMgoJKiBpbnRy aW5zaWNzL3JhbmRvbS5jIChzY3JhbWJsZV9zZWVkLCB1bnNjcmFtYmxlX3Nl ZWQpOiBOZXcKCWZ1bmN0aW9ucy4KCShyYW5kb21fc2VlZF9pNCk6IFNjcmFt YmxlIHRoZSBzZWVkIHRoZSB1c2VyIGdpdmVzIHVzIGJlZm9yZQoJc3Rvcmlu ZyBpdCwgYW5kIHVuc2NyYW1ibGUgaXQgd2hlbiB3ZSByZXR1cm4gaXQgYmFj ayBsYXRlci4KCg== ------=_Part_29642_22972686.1205000898195 Content-Type: application/octet-stream; name=random.diff Content-Transfer-Encoding: base64 X-Attachment-Id: 0.2 Content-Disposition: attachment; filename=random.diff Content-length: 3445 SW5kZXg6IGludHJpbnNpY3MvcmFuZG9tLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gaW50cmluc2ljcy9yYW5kb20uYwkocmV2aXNpb24gMTMyNTky KQorKysgaW50cmluc2ljcy9yYW5kb20uYwkod29ya2luZyBjb3B5KQpAQCAt NjM5LDYgKzYzOSwyOSBAQCBhcmFuZG9tX3IxNiAoZ2ZjX2FycmF5X3IxNiAq eCkKIAogI2VuZGlmCiAKKworCitzdGF0aWMgdm9pZAorc2NyYW1ibGVfc2Vl ZCAodW5zaWduZWQgY2hhciAqZGVzdCwgdW5zaWduZWQgY2hhciAqc3JjLCBp bnQgc2l6ZSkKK3sKKyAgaW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IHNp emU7IGkrKykKKyAgICBkZXN0WyhpICUgMikgKiAoc2l6ZSAvIDIpICsgaSAv IDJdID0gc3JjW2ldOworfQorCisKK3N0YXRpYyB2b2lkCit1bnNjcmFtYmxl X3NlZWQgKHVuc2lnbmVkIGNoYXIgKmRlc3QsIHVuc2lnbmVkIGNoYXIgKnNy YywgaW50IHNpemUpCit7CisgIGludCBpOworCisgIGZvciAoaSA9IDA7IGkg PCBzaXplOyBpKyspCisgICAgZGVzdFtpXSA9IHNyY1soaSAlIDIpICogKHNp emUgLyAyKSArIGkgLyAyXTsKK30KKworCisKIC8qIHJhbmRvbV9zZWVkIGlz IHVzZWQgdG8gc2VlZCB0aGUgUFJORyB3aXRoIGVpdGhlciBhIGRlZmF1bHQK ICAgIHNldCBvZiBzZWVkcyBvciB1c2VyIHNwZWNpZmllZCBzZXQgb2Ygc2Vl ZHMuICByYW5kb21fc2VlZAogICAgbXVzdCBiZSBjYWxsZWQgd2l0aCBubyBh cmd1bWVudCBvciBleGFjdGx5IG9uZSBhcmd1bWVudC4gICovCkBAIC02NDcs NiArNjcwLDcgQEAgdm9pZAogcmFuZG9tX3NlZWRfaTQgKEdGQ19JTlRFR0VS XzQgKnNpemUsIGdmY19hcnJheV9pNCAqcHV0LCBnZmNfYXJyYXlfaTQgKmdl dCkKIHsKICAgaW50IGk7CisgIHVuc2lnbmVkIGNoYXIgc2VlZFs0Kmtpc3Nf c2l6ZV07CiAKICAgX19ndGhyZWFkX211dGV4X2xvY2sgKCZyYW5kb21fbG9j ayk7CiAKQEAgLTY3Myw5ICs2OTcsMTUgQEAgcmFuZG9tX3NlZWRfaTQgKEdG Q19JTlRFR0VSXzQgKnNpemUsIGdmYwogICAgICAgaWYgKCgocHV0LT5kaW1b MF0udWJvdW5kICsgMSAtIHB1dC0+ZGltWzBdLmxib3VuZCkpIDwga2lzc19z aXplKQogICAgICAgICBydW50aW1lX2Vycm9yICgiQXJyYXkgc2l6ZSBvZiBQ VVQgaXMgdG9vIHNtYWxsLiIpOwogCi0gICAgICAvKiAgVGhpcyBjb2RlIG5v dyBzaG91bGQgZG8gY29ycmVjdCBzdHJpZGVzLiAgKi8KKyAgICAgIC8qICBX ZSBjb3B5IHRoZSBzZWVkIGdpdmVuIGJ5IHRoZSB1c2VyLiAgKi8KICAgICAg IGZvciAoaSA9IDA7IGkgPCBraXNzX3NpemU7IGkrKykKLQlraXNzX3NlZWRb aV0gPSAoR0ZDX1VJTlRFR0VSXzQpIHB1dC0+ZGF0YVtpICogcHV0LT5kaW1b MF0uc3RyaWRlXTsKKwltZW1jcHkgKHNlZWQgKyBpICogc2l6ZW9mKEdGQ19V SU5URUdFUl80KSwKKwkJJihwdXQtPmRhdGFbKGtpc3Nfc2l6ZSAtIDEgLSBp KSAqIHB1dC0+ZGltWzBdLnN0cmlkZV0pLAorCQlzaXplb2YoR0ZDX1VJTlRF R0VSXzQpKTsKKworICAgICAgLyogV2UgcHV0IGl0IGFmdGVyIHNjcmFtYmxp bmcgdGhlIGJ5dGVzLCB0byBwYXBlciBhcm91bmQgdXNlcnMgd2hvCisJIHBy b3ZpZGUgc2VlZHMgd2l0aCBxdWFsaXR5IG9ubHkgaW4gdGhlIGxvd2VyIG9y IHVwcGVyIHBhcnQuICAqLworICAgICAgc2NyYW1ibGVfc2VlZCAoKHVuc2ln bmVkIGNoYXIgKikga2lzc19zZWVkLCBzZWVkLCA0Kmtpc3Nfc2l6ZSk7CiAg ICAgfQogCiAgIC8qIFJldHVybiB0aGUgc2VlZCB0byBHRVQgZGF0YS4gICov CkBAIC02ODksOSArNzE5LDE0IEBAIHJhbmRvbV9zZWVkX2k0IChHRkNfSU5U RUdFUl80ICpzaXplLCBnZmMKICAgICAgIGlmICgoKGdldC0+ZGltWzBdLnVi b3VuZCArIDEgLSBnZXQtPmRpbVswXS5sYm91bmQpKSA8IGtpc3Nfc2l6ZSkK IAlydW50aW1lX2Vycm9yICgiQXJyYXkgc2l6ZSBvZiBHRVQgaXMgdG9vIHNt YWxsLiIpOwogCi0gICAgICAvKiAgVGhpcyBjb2RlIG5vdyBzaG91bGQgZG8g Y29ycmVjdCBzdHJpZGVzLiAgKi8KKyAgICAgIC8qIFVuc2NyYW1ibGUgdGhl IHNlZWQuICAqLworICAgICAgdW5zY3JhbWJsZV9zZWVkIChzZWVkLCAodW5z aWduZWQgY2hhciAqKSBraXNzX3NlZWQsIDQqa2lzc19zaXplKTsKKworICAg ICAgLyogIFRoZW4gY29weSBpdCBiYWNrIHRvIHRoZSB1c2VyIHZhcmlhYmxl LiAgKi8KICAgICAgIGZvciAoaSA9IDA7IGkgPCBraXNzX3NpemU7IGkrKykK LSAgICAgICAgZ2V0LT5kYXRhW2kgKiBnZXQtPmRpbVswXS5zdHJpZGVdID0g KEdGQ19JTlRFR0VSXzQpIGtpc3Nfc2VlZFtpXTsKKyAgICAgICBtZW1jcHkg KCYoZ2V0LT5kYXRhWyhraXNzX3NpemUgLSAxIC0gaSkgKiBnZXQtPmRpbVsw XS5zdHJpZGVdKSwKKyAgICAgICAgICAgICAgIHNlZWQgKyBpICogc2l6ZW9m KEdGQ19VSU5URUdFUl80KSwKKyAgICAgICAgICAgICAgIHNpemVvZihHRkNf VUlOVEVHRVJfNCkpOwogICAgIH0KIAogICBfX2d0aHJlYWRfbXV0ZXhfdW5s b2NrICgmcmFuZG9tX2xvY2spOwo= ------=_Part_29642_22972686.1205000898195--