Introduction
Introduction Statistics Contact Development Disclaimer Help
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
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.