From d4f6774c172ac1e7c193fc4e89230c873d179c2b Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Wed, 12 Nov 2025 18:52:38 +0100 Subject: checkpoint --- src/haversine/libs/pcg/pcg-output-16.c | 60 ++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/haversine/libs/pcg/pcg-output-16.c (limited to 'src/haversine/libs/pcg/pcg-output-16.c') diff --git a/src/haversine/libs/pcg/pcg-output-16.c b/src/haversine/libs/pcg/pcg-output-16.c new file mode 100644 index 0000000..c593f67 --- /dev/null +++ b/src/haversine/libs/pcg/pcg-output-16.c @@ -0,0 +1,60 @@ +/* + * PCG Random Number Generation for C. + * + * Copyright 2014 Melissa O'Neill + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * For additional information about the PCG random number generation scheme, + * including its license and other licensing options, visit + * + * http://www.pcg-random.org + */ + +/* + * This code is derived from the canonical C++ PCG implementation, which + * has many additional features and is preferable if you can use C++ in + * your project. + * + * The contents of this file were mechanically derived from pcg_variants.h + * (every inline function defined there gets an exern declaration here). + */ + +#include "pcg_variants.h" + +/* + * Rotate helper functions. + */ + +extern inline uint16_t pcg_rotr_16(uint16_t value, unsigned int rot); + +/* + * Output functions. These are the core of the PCG generation scheme. + */ + +// XSH RS + +extern inline uint16_t pcg_output_xsh_rs_32_16(uint32_t state); + +// XSH RR + +extern inline uint16_t pcg_output_xsh_rr_32_16(uint32_t state); + +// RXS M XS + +extern inline uint16_t pcg_output_rxs_m_xs_16_16(uint16_t state); + +// XSL RR (only defined for >= 64 bits) + +// XSL RR RR (only defined for >= 64 bits) + -- cgit v1.2.3-70-g09d2