commit 4e01195c6096ced645b0f533565700537a208a5b
parent e9477a50184a9679dc571a1e22194e4d0e672a4d
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Mon, 2 May 2022 15:02:46 +0200
range(1): allow negative numbers in range
Diffstat:
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/range.1 b/range.1
@@ -30,6 +30,11 @@ is not specified, it is 1.
If
.Ar min_val
is not specified, it is 0.
+If
+.Ar min_val
+and/or
+.Ar max_val
+are negative, they must be prefixed with the '--' option.
.Pp
The options are as follows:
.Bl -tag -width Ds
@@ -113,6 +118,13 @@ Generate three numbers evenly distributed in logspace from 10^0 to 10^2:
.Dl 1
.Dl 10
.Dl 100
+.Pp
+Generate three numbers in the range [-2;-1]:
+.Pp
+.Dl $ range -n 3 -- -2 -1
+.Dl -2
+.Dl -1.5
+.Dl -1
.Sh SEE ALSO
.Xr max 1 ,
.Xr mean 1 ,
diff --git a/range.c b/range.c
@@ -13,7 +13,7 @@ char *argv0;
static void
usage(void)
{
- errx(1, "usage: %s [-b] [-e] [-f fmtstr] [-h] [-l] [-n num] [-s]"
+ errx(1, "usage: %s [-b] [-e] [-f fmtstr] [-h] [-l] [-n num] [-s] "
"[[min_val] max_val]\n", argv0);
}
@@ -61,13 +61,11 @@ main(int argc, char *argv[])
} else if (argc == 1)
maxv = atof(argv[0]);
- dx = (maxv - minv)/(n - 1 + openend + openstart);
+ dx = (maxv - minv) / (n - 1 + openend + openstart);
if (reportdx) {
printf(fmtstr, dx);
return 0;
}
- if (minv >= maxv)
- errx(1, "min_val must be smaller than max_val");
for (i = 0 + openstart; i < n + openstart; i++) {
if (logrange)
printf(fmtstr, pow(10, minv + i * dx));