From b1a58f9b74946c6ede7e47fd5035b1879d2578a1 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Wed, 27 Sep 2023 14:10:40 +0100 Subject: [PATCH] fix constant name 95=>90 --- scratchpad/makefile | 56 ++++++++++++++++++++++++++++++++++++++++ scratchpad/scratchpad | Bin 0 -> 22504 bytes scratchpad/scratchpad.c | 20 ++++++++++++++ squiggle.c | 21 ++++++++------- 4 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 scratchpad/makefile create mode 100755 scratchpad/scratchpad create mode 100644 scratchpad/scratchpad.c diff --git a/scratchpad/makefile b/scratchpad/makefile new file mode 100644 index 0000000..a2aed9e --- /dev/null +++ b/scratchpad/makefile @@ -0,0 +1,56 @@ +# Interface: +# make +# make build +# make format +# make run + +# Compiler +CC=gcc +# CC=tcc # <= faster compilation + +# Main file +SRC=scratchpad.c ../squiggle.c +OUTPUT=scratchpad + +## Dependencies +MATH=-lm + +## Flags +DEBUG= #'-g' +STANDARD=-std=c99 +WARNINGS=-Wall +OPTIMIZED=-O3 #-Ofast +# OPENMP=-fopenmp + +## Formatter +STYLE_BLUEPRINT=webkit +FORMATTER=clang-format -i -style=$(STYLE_BLUEPRINT) + +## make build +build: $(SRC) + $(CC) $(OPTIMIZED) $(DEBUG) $(SRC) $(MATH) -o $(OUTPUT) + +format: $(SRC) + $(FORMATTER) $(SRC) + +run: $(SRC) $(OUTPUT) + ./$(OUTPUT) + +verify: $(SRC) $(OUTPUT) + ./$(OUTPUT) | grep "NOT passed" -A 2 --group-separator='' || true + +time-linux: + @echo "Requires /bin/time, found on GNU/Linux systems" && echo + + @echo "Running 100x and taking avg time $(OUTPUT)" + @t=$$(/usr/bin/time -f "%e" -p bash -c 'for i in {1..100}; do $(OUTPUT); done' 2>&1 >/dev/null | grep real | awk '{print $$2}' ); echo "scale=2; 1000 * $$t / 100" | bc | sed "s|^|Time using 1 thread: |" | sed 's|$$|ms|' && echo + +## Profiling + +profile-linux: + echo "Requires perf, which depends on the kernel version, and might be in linux-tools package or similar" + echo "Must be run as sudo" + $(CC) $(SRC) $(MATH) -o $(OUTPUT) + sudo perf record ./$(OUTPUT) + sudo perf report + rm perf.data diff --git a/scratchpad/scratchpad b/scratchpad/scratchpad new file mode 100755 index 0000000000000000000000000000000000000000..2c89a473361a0a745463eb4257e488947832f16a GIT binary patch literal 22504 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 literal 0 HcmV?d00001 diff --git a/scratchpad/scratchpad.c b/scratchpad/scratchpad.c new file mode 100644 index 0000000..2d49d32 --- /dev/null +++ b/scratchpad/scratchpad.c @@ -0,0 +1,20 @@ +#include "../squiggle.h" +#include +#include +#include +#include + +int main() +{ + // set randomness seed + uint64_t* seed = malloc(sizeof(uint64_t)); + *seed = 1000; // xorshift can't start with a seed of 0 + + for (int i = 0; i < 100; i++) { + double draw = sample_unit_uniform(seed); + printf("%f\n", draw); + + } + + free(seed); +} diff --git a/squiggle.c b/squiggle.c index b332b41..697aeee 100644 --- a/squiggle.c +++ b/squiggle.c @@ -13,7 +13,7 @@ #define PROCESS_ERROR(error_msg) process_error(error_msg, EXIT_ON_ERROR, __FILE__, __LINE__) #define PI 3.14159265358979323846 // M_PI in gcc gnu99 -#define NORMAL95CONFIDENCE 1.6448536269514722 +#define NORMAL90CONFIDENCE 1.6448536269514722 // # Key functionality // Define the minimum number of functions needed to do simple estimation @@ -23,9 +23,12 @@ uint64_t xorshift32(uint32_t* seed) { // Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" - // See - // https://en.wikipedia.org/wiki/Xorshift - // Also some drama: , + // See: + // + // , + // Also some drama: + // , + // uint64_t x = *seed; x ^= x << 13; x ^= x >> 17; @@ -53,8 +56,8 @@ double sample_unit_uniform(uint64_t* seed) double sample_unit_normal(uint64_t* seed) { - // See: - double u1 = sample_unit_uniform(seed); + // // See: + // double u1 = sample_unit_uniform(seed); double u2 = sample_unit_uniform(seed); double z = sqrtf(-2.0 * log(u1)) * sin(2 * PI * u2); return z; @@ -96,7 +99,7 @@ inline double sample_normal_from_90_confidence_interval(double low, double high, // we can set mean = (high + low)/2; the midpoint, and L = high-low, // Normal([high + low]/2, [high - low]/(2 * 1.6448536269514722)) double mean = (high + low) / 2.0; - double std = (high - low) / (2.0 * NORMAL95CONFIDENCE); + double std = (high - low) / (2.0 * NORMAL90CONFIDENCE); return sample_normal(mean, std, seed); } @@ -507,14 +510,14 @@ lognormal_params convert_ci_to_lognormal_params(ci x) double loghigh = logf(x.high); double loglow = logf(x.low); double logmean = (loghigh + loglow) / 2.0; - double logstd = (loghigh - loglow) / (2.0 * NORMAL95CONFIDENCE); + double logstd = (loghigh - loglow) / (2.0 * NORMAL90CONFIDENCE); lognormal_params result = { .logmean = logmean, .logstd = logstd}; return result; } ci convert_lognormal_params_to_ci(lognormal_params y) { - double h = y.logstd * NORMAL95CONFIDENCE; + double h = y.logstd * NORMAL90CONFIDENCE; double loghigh = y.logmean + h; double loglow = y.logmean - h; ci result = { .low=exp(loglow), .high=exp(loghigh)};