| trandcounts(1): add option to display output as ratios - numtools - perform num… | |
| git clone git://src.adamsgaard.dk/numtools | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 817421dee16bed3f985a841c575be086cfb3254a | |
| parent d7ec07cf8c41de0a001237eded7af64e8868b345 | |
| Author: Anders Damsgaard <[email protected]> | |
| Date: Wed, 11 May 2022 10:42:44 +0200 | |
| randcounts(1): add option to display output as ratios | |
| Diffstat: | |
| M randcounts.1 | 3 +++ | |
| M randcounts.c | 12 +++++++++--- | |
| 2 files changed, 12 insertions(+), 3 deletions(-) | |
| --- | |
| diff --git a/randcounts.1 b/randcounts.1 | |
| t@@ -9,6 +9,7 @@ | |
| .Op Fl h | |
| .Op Fl n Ar num | |
| .Op Fl r Ar repeats | |
| +.Op Fl R | |
| .Op Fl s Ar seed | |
| .Ar weight1 | |
| .Op Ar weight2 ... | |
| t@@ -37,6 +38,8 @@ Number of points to place in the bins. | |
| The default is 1. | |
| .It Fl r Ar repeats | |
| Repeat the binning several times, with one realization per line of output. | |
| +.It Fl R | |
| +Show the output as ratios (in the range [0;1]) instead of counts. | |
| .It Fl s Ar seed | |
| Seed the pseudo-random number generator with this value, which is used | |
| to generate reproducable binning. | |
| diff --git a/randcounts.c b/randcounts.c | |
| t@@ -14,7 +14,7 @@ char *argv0; | |
| static void | |
| usage(void) | |
| { | |
| - errx(1, "usage: %s [-h] [-n num] [-r repeats] [-s seed] " | |
| + errx(1, "usage: %s [-h] [-n num] [-r repeats] [-R] [-s seed] " | |
| "weight1 [weight2 ...]\n", argv0); | |
| } | |
| t@@ -22,7 +22,7 @@ int | |
| main(int argc, char *argv[]) | |
| { | |
| int i, s = 0, N; | |
| - long j, seed, *counts = NULL, n = 1, r, repeats = 1; | |
| + long j, seed, *counts = NULL, n = 1, r, repeats = 1, ratio = 0; | |
| double val = 0.0, weightsum = 0.0, *weights = NULL; | |
| struct timeval t1; | |
| t@@ -39,6 +39,9 @@ main(int argc, char *argv[]) | |
| case 'r': | |
| repeats = atol(EARGF(usage())); | |
| break; | |
| + case 'R': | |
| + ratio = 1; | |
| + break; | |
| case 's': | |
| s = 1; | |
| seed = atol(EARGF(usage())); | |
| t@@ -94,7 +97,10 @@ main(int argc, char *argv[]) | |
| } | |
| } | |
| for (i = 0; i < N; i++) { | |
| - printf("%ld", counts[i]); | |
| + if (ratio) | |
| + printf("%.17g", (double)counts[i] / n); | |
| + else | |
| + printf("%ld", counts[i]); | |
| if (i < N - 1) | |
| putchar('\t'); | |
| else |