🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217319

Re: Jak działa rotr16 w c?

#217319
From: Mateusz Viste
Date: Mon, 04 Jan 2021 08:39
35 lines
2208 bytes
2021-01-03 o 13:29 -0800, osobli...@gmail.com napisał:
> niedziela, 3 stycznia 2021 o 18:24:30 UTC+1 Mateusz Viste napisał(a):
> > rotr16() to nie C. 
> > 
> > Jeśli pytanie dotyczy specyficznego Microsoftowego rozszerzenia, to 
> > dokumentacja jest tutaj: 
> > https://docs.microsoft.com/en-us/cpp/intrinsics/rotr8-rotr16?view=msvc-160 
> 
> To dotyczy tej pracy:
> https://www.pcg-random.org/pdf/hmc-cs-2014-0905.pdf

Tak, wiem. Ja tylko wskazuję na błędnie zadane pytanie: "Jak działa
rotr16 w c". Otóż nie działa, bo nie ma czegoś takiego w C.

> Tam są używane rotate64. Kod jednego z generatorów, który mnie
> interesuje wygląda tak:
> 
> uint32_t rot1 = (uint32_t)(state >> 122u);
>     uint64_t high = (uint64_t)(state >> 64u);
>     uint64_t low  = (uint64_t)state;
>     uint64_t xored = high ^ low;
>     uint64_t newlow  = pcg_rotr_64(xored, rot1);
>     uint64_t newhigh = pcg_rotr_64(high, newlow & 63u);
>     return (((pcg128_t)newhigh) << 64u) | newlow;

Powyższy kod odwołuje się do funkcji pcg_rotr_64(). Sądząc po nazwie,
to jest funkcja wchodząca w skład samego projektu.

> Chcę wiedzieć co tam jest robione

Zajrzyj głębiej w źródła, by odszukać jak PCG zaimplementował swoje
pcg_rotr_64().


Mateusz
Technical Details
Message-ID: <20210104093913.0130a132@mateusz>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!usenet.goja.nl.eu.org!aioe.org!nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org.POSTED!not-for-mail
References: <8a8a225a-27cd-46c0-8869-9a12f004481en@googlegroups.com> <20210103182423.7ae8261c@mateusz> <8e3b1a88-cd14-4396-9a60-3c7afff72fbdn@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!usenet.goja.nl.eu.org!aioe.org!nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org.POSTED!not-for-mail
From: Mateusz Viste <mateusz@xyz.invalid>
Newsgroups: pl.comp.programming
Subject: Re: Jak działa rotr16 w c?
Date: Mon, 4 Jan 2021 09:39:13 +0100
Organization: . . .
Lines: 44
Message-ID: <20210104093913.0130a132@mateusz>
References: <8a8a225a-27cd-46c0-8869-9a12f004481en@googlegroups.com> <20210103182423.7ae8261c@mateusz> <8e3b1a88-cd14-4396-9a60-3c7afff72fbdn@googlegroups.com>
NNTP-Posting-Host: nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org
Mime-Version: 1.0
X-Complaints-To: abuse@aioe.org
X-Notice: Filtered by postfilter v. 0.9.2
X-Newsreader: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-suse-linux-gnu)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit