tadd regression tests and sync man examples to current output - numtools - perform numerical operations on vectors and matrices in unix pipes
 (HTM) git clone git://src.adamsgaard.dk/numtools
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 9f42d7162848c39ca7c71a57aa9e2d9a5fd3c5e3
 (DIR) parent 8787e852ca96ee9c18d4ed1a45016996e464940a
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Wed, 11 May 2022 15:57:48 +0200
       
       add regression tests and sync man examples to current output
       
       Diffstat:
         A condfail                            |       7 +++++++
         M max.1                               |       2 +-
         M mean.1                              |       2 +-
         M min.1                               |       2 +-
         M randcounts.1                        |       2 +-
         M randnum.1                           |       2 +-
         M range.1                             |       2 +-
         M rangetest.1                         |       8 ++++----
         M stddev.1                            |       2 +-
         M stdvar.1                            |       2 +-
         M sum.1                               |       2 +-
         A test.sh                             |      95 ++++++++++++++++++++++++++++++
       
       12 files changed, 115 insertions(+), 13 deletions(-)
       ---
 (DIR) diff --git a/condfail b/condfail
       t@@ -0,0 +1,7 @@
       +#!/usr/bin/awk -f
       +BEGIN {
       +        if (ARGV[1] < 1.5)
       +                exit 0
       +        else
       +                exit 1
       +}
 (DIR) diff --git a/max.1 b/max.1
       t@@ -24,7 +24,7 @@ Separate output values by
        The default delimiter is tab characters.
        .It Fl n
        Do not print a newline after the final value.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/mean.1 b/mean.1
       t@@ -23,7 +23,7 @@ Separate output values by
        The default delimiter is tab characters.
        .It Fl n
        Do not print a newline after the final value.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/min.1 b/min.1
       t@@ -24,7 +24,7 @@ Separate output values by
        The default delimiter is tab characters.
        .It Fl n
        Do not print a newline after the final value.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/randcounts.1 b/randcounts.1
       t@@ -46,7 +46,7 @@ The default is 1.
        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 p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/randnum.1 b/randnum.1
       t@@ -49,7 +49,7 @@ The default delimiter is newlines.
        Do not print a newline after the final value.
        .It Fl N num
        Number of random points to generate.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/range.1 b/range.1
       t@@ -66,7 +66,7 @@ Do not print a newline after the final value.
        .It Fl N Ar num
        Number of values to produce within the specified range.
        The default is 10.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/rangetest.1 b/rangetest.1
       t@@ -54,8 +54,8 @@ shows all parameter values which result in a successful invocation:
        .Dl 0
        .Dl 1.25
        .Dl 1.40625
       -.Dl 1.48438
       -.Dl 1.49414
       +.Dl 1.484375
       +.Dl 1.494140625
        .Pp
        The values associated with failed invocations are printed in standard error:
        .Dl $ rangetest './condfail @VAL@' 0.0 10.0 >/dev/null
       t@@ -64,8 +64,8 @@ The values associated with failed invocations are printed in standard error:
        .Dl 2.5
        .Dl 1.875
        .Dl 1.5625
       -.Dl 1.52344
       -.Dl 1.50391
       +.Dl 1.5234375
       +.Dl 1.50390625
        .Pp
        While the above values all result in a successful invocation of
        .Ar cmd ,
 (DIR) diff --git a/stddev.1 b/stddev.1
       t@@ -26,7 +26,7 @@ Separate output values by
        The default delimiter is tab characters.
        .It Fl n
        Do not print a newline after the final value.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/stdvar.1 b/stdvar.1
       t@@ -26,7 +26,7 @@ Separate output values by
        The default delimiter is tab characters.
        .It Fl n
        Do not print a newline after the final value.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/sum.1 b/sum.1
       t@@ -23,7 +23,7 @@ Separate output values by
        The default delimiter is tab characters.
        .It Fl n
        Do not print a newline after the final value.
       -.It Fl p prec
       +.It Fl p Ar prec
        Print the output values with
        .Ar prec
        digits of precision.
 (DIR) diff --git a/test.sh b/test.sh
       t@@ -0,0 +1,95 @@
       +#!/bin/sh
       +
       +strtest()
       +{
       +        if ! test "$2" = "$3"
       +        then
       +                printf 'FAIL: %s: %s != %s\n' "$1" "$2" "$3"
       +        fi
       +}
       +
       +strtest range_man "0.20000000000000001
       +0.40000000000000002
       +0.60000000000000009
       +0.80000000000000004" "$(./range -be -N 4)"
       +strtest range_man "1 2 3" "$(./range -d' ' -N 3 1 3)"
       +strtest range_man "1
       +10
       +100" "$(./range -l -N 3 0 2)"
       +strtest range_man "-2
       +-1.5
       +-1" "$(./range -N 3 -- -2 -1)"
       +strtest range "0
       +0.1111111111111111
       +0.22222222222222221
       +0.33333333333333331
       +0.44444444444444442
       +0.55555555555555558
       +0.66666666666666663
       +0.77777777777777768
       +0.88888888888888884
       +1" "$(./range)"
       +strtest range "0 0.33333333333333331 0.66666666666666663 1" "$(./range -n -d' ' -N 4)"
       +strtest range "0 0.33 0.67 1" "$(./range -n -p 2 -d' ' -N 4)"
       +strtest range "0.25 0.5 0.75 1" "$(./range -b -p 2 -d' ' -N 4)"
       +strtest range "0 0.25 0.5 0.75" "$(./range -e -p 2 -d' ' -N 4)"
       +strtest range_man "0
       +0.33333333333333331
       +0.66666666666666663
       +1" "$(./range -N 4)"
       +
       +strtest max_man "4        5        6" "$(printf '1\t2\t3\n4\t5\t6\n' | ./max)"
       +strtest max "4,5,6" "$(printf '1\t2\t3\n4\t5\t6\n' | ./max -d',')"
       +strtest max "1" "$(./range | ./max)"
       +strtest max "0.90909090909090917" "$(./range -be | ./max)"
       +strtest max "0.909" "$(./range -be | ./max -p 3 )"
       +
       +strtest mean_man "2.5        3.5        4.5" "$(printf '1\t2\t3\n4\t5\t6\n' | ./mean)"
       +strtest mean "2.5,3.5,4.5" "$(printf '1\t2\t3\n4\t5\t6\n' | ./mean -d',')"
       +strtest mean "0.5" "$(./range | ./mean)"
       +strtest mean "0.5" "$(./range -be | ./mean)"
       +strtest mean "0.5" "$(./range -be | ./mean -p 3 )"
       +
       +strtest min_man "1        2        3" "$(printf '1\t2\t3\n4\t5\t6\n' | ./min)"
       +strtest min "1,2,3" "$(printf '1\t2\t3\n4\t5\t6\n' | ./min -d',')"
       +strtest min "0" "$(./range | ./min)"
       +strtest min "0.090909090909090912" "$(./range -be | ./min)"
       +strtest min "0.0909" "$(./range -be | ./min -p 3 )"
       +
       +strtest rangetest_man "0
       +1.25
       +1.40625
       +1.484375
       +1.494140625" "$(./rangetest './condfail @VAL@' 0.0 10.0 2>/dev/null)"
       +
       +strtest rangetest_man "10
       +5
       +2.5
       +1.875
       +1.5625
       +1.5234375
       +1.50390625" "$(./rangetest './condfail @VAL@' 0.0 10.0 2>&1 >/dev/null)"
       +
       +strtest stddev_man "2.1908902300206643" "$(printf '10\n8\n10\n8\n8\n4\n' | ./stddev)"
       +strtest stddev_man "2" "$(printf '10\n8\n10\n8\n8\n4\n' | ./stddev -u)"
       +strtest stddev "2.2" "$(printf '10\n8\n10\n8\n8\n4\n' | ./stddev -p 2)"
       +strtest stddev "2.1213203435596424        2.1213203435596424        2.1213203435596424" "$(printf '1\t2\t3\n4\t5\t6\n' | ./stddev)"
       +strtest stddev "2.1        2.1        2.1" "$(printf '1\t2\t3\n4\t5\t6\n' | ./stddev -p 2)"
       +strtest stddev "2.1,2.1,2.1" "$(printf '1\t2\t3\n4\t5\t6\n' | ./stddev -p 2 -d',' )"
       +
       +strtest stdvar_man "4.7999999999999998" "$(printf '10\n8\n10\n8\n8\n4\n' | ./stdvar)"
       +strtest stdvar_man "4" "$(printf '10\n8\n10\n8\n8\n4\n' | ./stdvar -u)"
       +strtest stdvar "4.8" "$(printf '10\n8\n10\n8\n8\n4\n' | ./stdvar -p 2)"
       +strtest stdvar "4.5        4.5        4.5" "$(printf '1\t2\t3\n4\t5\t6\n' | ./stdvar)"
       +strtest stdvar "4.5        4.5        4.5" "$(printf '1\t2\t3\n4\t5\t6\n' | ./stdvar -p 2)"
       +strtest stdvar "4.5,4.5,4.5" "$(printf '1\t2\t3\n4\t5\t6\n' | ./stdvar -p 2 -d',' )"
       +
       +strtest sum_man "5        7        9" "$(printf '1\t2\t3\n4\t5\t6\n' | ./sum)"
       +strtest sum "48" "$(printf '10\n8\n10\n8\n8\n4\n' | ./sum)"
       +strtest sum "5e+01" "$(printf '10\n8\n10\n8\n8\n4\n' | ./sum -p 1)"
       +strtest sum "5        7        9" "$(printf '1\t2\t3\n4\t5\t6\n' | ./sum)"
       +strtest sum "5,7,9" "$(printf '1\t2\t3\n4\t5\t6\n' | ./sum -d',' )"
       +
       +strtest transpose_man "1        4
       +2        5
       +3        6" "$(printf '1\t2\t3\n4\t5\t6\n' | ./transpose)"