tutil.c: add residual and random number functions - granular - granular dynamic… | |
git clone git://src.adamsgaard.dk/granular | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0ced4ee84ae554d75646ebbaa76cc31c2397cfb3 | |
parent b6248f108d84c1068e84381d5a06a34522ebdc82 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Thu, 18 Mar 2021 08:55:40 +0100 | |
util.c: add residual and random number functions | |
Diffstat: | |
M util.c | 26 ++++++++++++++++++++++++++ | |
M util.h | 6 ++++++ | |
2 files changed, 32 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/util.c b/util.c | |
t@@ -1,4 +1,5 @@ | |
#include <stdio.h> | |
+#include <stdlib.h> | |
#include <math.h> | |
#include "granular.h" | |
t@@ -78,3 +79,28 @@ check_int_non_negative(const char name[], const int value, … | |
*status = 1; | |
} | |
} | |
+ | |
+double | |
+residual(const double new_val, const double old_val) | |
+{ | |
+ return (new_val - old_val) / (old_val + 1e-16); | |
+} | |
+ | |
+double | |
+random(void) | |
+{ | |
+ return (double)rand() / RAND_MAX; | |
+} | |
+ | |
+double | |
+random_value_uniform(double min, double max) | |
+{ | |
+ return random() * (max - min) + min; | |
+} | |
+ | |
+double | |
+random_value_powerlaw(double power, double min, double max) | |
+{ | |
+ return pow((pow(max, power + 1.0) - pow(min, power + 1.0)) * random() | |
+ + pow(min, power + 1.0), 1.0 / (power + 1.0)); | |
+} | |
diff --git a/util.h b/util.h | |
t@@ -7,4 +7,10 @@ void check_float_non_negative(const char name[], const double… | |
void check_float_positive(const char name[], const double value, int *status); | |
void check_bool(const char name[], const double value, int *status); | |
void check_int_non_negative(const char name[], const int value, int *status); | |
+ | |
+double residual(const double new_val, const double old_val); | |
+ | |
+double random_value_uniform(double min, double max); | |
+double random_value_powerlaw(double power, double min, double max); | |
+ | |
#endif |