summaryrefslogtreecommitdiffstats
path: root/src/cdf.c
diff options
context:
space:
mode:
authorDouglas B. Rumbaugh <doug@douglasrumbaugh.com>2025-01-06 12:47:54 -0500
committerDouglas B. Rumbaugh <doug@douglasrumbaugh.com>2025-01-06 12:48:09 -0500
commitce4be21ca210c61f1e73f8d8432e5d3f8d9e61a5 (patch)
tree21e806467e0a36da4d957025e15e1dda93b417e0 /src/cdf.c
parentbd0772bb4a1950b3f438d7b9d8a82daac796f59d (diff)
downloadmath-utils-ce4be21ca210c61f1e73f8d8432e5d3f8d9e61a5.tar.gz
cdf: Added "reverse" cdf functionality
Diffstat (limited to 'src/cdf.c')
-rw-r--r--src/cdf.c43
1 files changed, 34 insertions, 9 deletions
diff --git a/src/cdf.c b/src/cdf.c
index 8fe1ea6..2ab1d5c 100644
--- a/src/cdf.c
+++ b/src/cdf.c
@@ -122,25 +122,50 @@ static int read_data_uint(DistRecord **records, size_t capacity, FILE *file) {
}
static int print_data_fp(DistRecord *records, long double *freqs, size_t cnt) {
- for (size_t i=0; i<cnt; i++) {
- fprintf(stdout, "%Lf\t%lf\n", freqs[i], records[i].data.d);
- }
+ if (ARG_REVERSE_CDF) {
+ long double total_freq = 1.0;
+ for (size_t i=0; i<cnt; i++) {
+ fprintf(stdout, "%Lf\t%lf\n", total_freq, records[i].data.d);
+ total_freq -= freqs[i];
+ }
+
+ } else {
+ for (size_t i=0; i<cnt; i++) {
+ fprintf(stdout, "%Lf\t%lf\n", freqs[i], records[i].data.d);
+ }
+ }
return 1;
}
static int print_data_int(DistRecord *records, long double *freqs, size_t cnt) {
- for (size_t i=0; i<cnt; i++) {
- fprintf(stdout, "%Lf\t%ld\n", freqs[i], records[i].data.i);
- }
+ if (ARG_REVERSE_CDF) {
+ long double total_freq = 1.0;
+ for (size_t i=0; i<cnt; i++) {
+ fprintf(stdout, "%Lf\t%ld\n", total_freq, records[i].data.i);
+ total_freq -= freqs[i];
+ }
+ } else {
+ for (size_t i=0; i<cnt; i++) {
+ fprintf(stdout, "%Lf\t%ld\n", freqs[i], records[i].data.i);
+ }
+ }
return 1;
}
static int print_data_uint(DistRecord *records, long double *freqs, size_t cnt) {
- for (size_t i=0; i<cnt; i++) {
- fprintf(stdout, "%Lf\t%ld\n", freqs[i], records[i].data.u);
- }
+ if (ARG_REVERSE_CDF) {
+ long double total_freq = 1.0;
+ for (size_t i=0; i<cnt; i++) {
+ fprintf(stdout, "%Lf\t%ld\n", total_freq, records[i].data.u);
+ total_freq -= freqs[i];
+ }
+ } else {
+ for (size_t i=0; i<cnt; i++) {
+ fprintf(stdout, "%Lf\t%ld\n", freqs[i], records[i].data.u);
+ }
+ }
return 1;
}