commit 65756a359be71ff26a66b7559d50b8b47c9a2957
parent 487de4a731f4af5726d61e6996fdaa12d8bc9e0b
Author: NunoSempere <nuno.sempere@protonmail.com>
Date: Sun, 16 Jul 2023 17:33:58 +0200
scratchpad formatting pass
Diffstat:
1 file changed, 62 insertions(+), 62 deletions(-)
diff --git a/scratchpad/scratchpad.c b/scratchpad/scratchpad.c
@@ -1,6 +1,6 @@
-#include <float.h> // FLT_MAX, FLT_MIN
-#include <limits.h> // INT_MAX
-#include <math.h> // erf, sqrt
+#include <float.h> // FLT_MAX, FLT_MIN
+#include <limits.h> // INT_MAX
+#include <math.h> // erf, sqrt
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
@@ -106,10 +106,10 @@ struct box incbeta(float a, float b, float x)
if (symmetric_incbeta.empty) {
return symmetric_incbeta; // propagate error
} else {
- struct box result = {
- .empty = 0,
- .content = 1 - symmetric_incbeta.content
- };
+ struct box result = {
+ .empty = 0,
+ .content = 1 - symmetric_incbeta.content
+ };
return result;
}
}
@@ -149,10 +149,10 @@ struct box incbeta(float a, float b, float x)
/*Check for stop.*/
if (fabs(1.0 - cd) < STOP_BETA) {
- struct box result = {
- .empty = 0,
- .content = front * (f - 1.0)
- };
+ struct box result = {
+ .empty = 0,
+ .content = front * (f - 1.0)
+ };
return result;
}
}
@@ -175,7 +175,7 @@ struct box cdf_beta(float x)
}
// Inverse cdf at point
-// Two versions of this function:
+// Two versions of this function:
// - raw, dealing with cdfs that return floats
// - box, dealing with cdfs that return a box.
@@ -218,7 +218,7 @@ struct box inverse_cdf_float(float cdf(float), float p)
float mid = (high + low) / 2;
int mid_not_new = (mid == low) || (mid == high);
// float width = high - low;
- // if ((width < 1e-8) || mid_not_new){
+ // if ((width < 1e-8) || mid_not_new){
if (mid_not_new) {
convergence_condition = 1;
} else {
@@ -235,12 +235,11 @@ struct box inverse_cdf_float(float cdf(float), float p)
}
if (convergence_condition) {
- struct box result = {.empty = 0, .content = low};
- return result;
+ struct box result = { .empty = 0, .content = low };
+ return result;
} else {
PROCESS_ERROR("Search process did not converge, in function inverse_cdf");
}
-
}
}
@@ -260,15 +259,15 @@ struct box inverse_cdf_box(struct box cdf_box(float), float p)
while ((!interval_found) && (low > -FLT_MAX / 4) && (high < FLT_MAX / 4)) {
// ^ Using FLT_MIN and FLT_MAX is overkill
// but it's also the *correct* thing to do.
- struct box cdf_low = cdf_box(low);
- if(cdf_low.empty){
- PROCESS_ERROR(cdf_low.error_msg);
- }
+ struct box cdf_low = cdf_box(low);
+ if (cdf_low.empty) {
+ PROCESS_ERROR(cdf_low.error_msg);
+ }
- struct box cdf_high=cdf_box(high);
- if(cdf_high.empty){
- PROCESS_ERROR(cdf_low.error_msg);
- }
+ struct box cdf_high = cdf_box(high);
+ if (cdf_high.empty) {
+ PROCESS_ERROR(cdf_low.error_msg);
+ }
int low_condition = (cdf_low.content < p);
int high_condition = (p < cdf_high.content);
@@ -295,10 +294,10 @@ struct box inverse_cdf_box(struct box cdf_box(float), float p)
// if ((width < 1e-8) || mid_not_new){
convergence_condition = 1;
} else {
- struct box cdf_mid = cdf_box(mid);
- if(cdf_mid.empty){
- PROCESS_ERROR(cdf_mid.error_msg);
- }
+ struct box cdf_mid = cdf_box(mid);
+ if (cdf_mid.empty) {
+ PROCESS_ERROR(cdf_mid.error_msg);
+ }
float mid_sign = cdf_mid.content - p;
if (mid_sign < 0) {
low = mid;
@@ -312,12 +311,11 @@ struct box inverse_cdf_box(struct box cdf_box(float), float p)
}
if (convergence_condition) {
- struct box result = {.empty = 0, .content = low};
- return result;
+ struct box result = { .empty = 0, .content = low };
+ return result;
} else {
PROCESS_ERROR("Search process did not converge, in function inverse_cdf");
}
-
}
}
@@ -371,7 +369,8 @@ float sampler_normal_0_1(uint32_t* seed)
}
// Some testers
-void test_inverse_cdf_float(char* cdf_name, float cdf_float(float)){
+void test_inverse_cdf_float(char* cdf_name, float cdf_float(float))
+{
struct box result = inverse_cdf_float(cdf_float, 0.5);
if (result.empty) {
printf("Inverse for %s not calculated\n", cdf_name);
@@ -379,9 +378,9 @@ void test_inverse_cdf_float(char* cdf_name, float cdf_float(float)){
} else {
printf("Inverse of %s at %f is: %f\n", cdf_name, 0.5, result.content);
}
-
}
-void test_inverse_cdf_box(char* cdf_name, struct box cdf_box(float)){
+void test_inverse_cdf_box(char* cdf_name, struct box cdf_box(float))
+{
struct box result = inverse_cdf_box(cdf_box, 0.5);
if (result.empty) {
printf("Inverse for %s not calculated\n", cdf_name);
@@ -389,10 +388,10 @@ void test_inverse_cdf_box(char* cdf_name, struct box cdf_box(float)){
} else {
printf("Inverse of %s at %f is: %f\n", cdf_name, 0.5, result.content);
}
-
}
-void test_and_time_sampler_float(char* cdf_name, float cdf_float(float), uint32_t* seed){
+void test_and_time_sampler_float(char* cdf_name, float cdf_float(float), uint32_t* seed)
+{
printf("\nGetting some samples from %s:\n", cdf_name);
clock_t begin = clock();
for (int i = 0; i < NUM_SAMPLES; i++) {
@@ -408,7 +407,8 @@ void test_and_time_sampler_float(char* cdf_name, float cdf_float(float), uint32_
printf("Time spent: %f\n", time_spent);
}
-void test_and_time_sampler_box(char* cdf_name, struct box cdf_box(float), uint32_t* seed){
+void test_and_time_sampler_box(char* cdf_name, struct box cdf_box(float), uint32_t* seed)
+{
printf("\nGetting some samples from %s:\n", cdf_name);
clock_t begin = clock();
for (int i = 0; i < NUM_SAMPLES; i++) {
@@ -426,41 +426,41 @@ void test_and_time_sampler_box(char* cdf_name, struct box cdf_box(float), uint32
int main()
{
- // Test inverse cdf float
- test_inverse_cdf_float("cdf_uniform_0_1", cdf_uniform_0_1);
- test_inverse_cdf_float("cdf_squared_0_1", cdf_squared_0_1);
- test_inverse_cdf_float("cdf_normal_0_1", cdf_normal_0_1);
-
- // Test inverse cdf box
- test_inverse_cdf_box("cdf_beta", cdf_beta);
-
- // Testing samplers
+ // Test inverse cdf float
+ test_inverse_cdf_float("cdf_uniform_0_1", cdf_uniform_0_1);
+ test_inverse_cdf_float("cdf_squared_0_1", cdf_squared_0_1);
+ test_inverse_cdf_float("cdf_normal_0_1", cdf_normal_0_1);
+
+ // Test inverse cdf box
+ test_inverse_cdf_box("cdf_beta", cdf_beta);
+
+ // Testing samplers
// set randomness seed
uint32_t* seed = malloc(sizeof(uint32_t));
*seed = 1000; // xorshift can't start with 0
-
- // Test float sampler
- test_and_time_sampler_float("cdf_uniform_0_1", cdf_uniform_0_1, seed);
- test_and_time_sampler_float("cdf_squared_0_1", cdf_squared_0_1, seed);
- test_and_time_sampler_float("cdf_normal_0_1", cdf_normal_0_1, seed);
-
- // Get some normal samples using a previous approach
- printf("\nGetting some samples from sampler_normal_0_1\n");
-
+
+ // Test float sampler
+ test_and_time_sampler_float("cdf_uniform_0_1", cdf_uniform_0_1, seed);
+ test_and_time_sampler_float("cdf_squared_0_1", cdf_squared_0_1, seed);
+ test_and_time_sampler_float("cdf_normal_0_1", cdf_normal_0_1, seed);
+
+ // Get some normal samples using a previous approach
+ printf("\nGetting some samples from sampler_normal_0_1\n");
+
clock_t begin_2 = clock();
-
- for (int i = 0; i < NUM_SAMPLES; i++) {
+
+ for (int i = 0; i < NUM_SAMPLES; i++) {
float normal_sample = sampler_normal_0_1(seed);
printf("%f\n", normal_sample);
}
-
- clock_t end_2 = clock();
+
+ clock_t end_2 = clock();
float time_spent_2 = (float)(end_2 - begin_2) / CLOCKS_PER_SEC;
printf("Time spent: %f\n", time_spent_2);
- // Test box sampler
- test_and_time_sampler_box("cdf_beta", cdf_beta, seed);
+ // Test box sampler
+ test_and_time_sampler_box("cdf_beta", cdf_beta, seed);
- free(seed);
+ free(seed);
return 0;
}