summaryrefslogtreecommitdiff
path: root/dotfiles/system/.zsh/modules/Test/V03mathfunc.ztst
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/system/.zsh/modules/Test/V03mathfunc.ztst')
-rw-r--r--dotfiles/system/.zsh/modules/Test/V03mathfunc.ztst141
1 files changed, 0 insertions, 141 deletions
diff --git a/dotfiles/system/.zsh/modules/Test/V03mathfunc.ztst b/dotfiles/system/.zsh/modules/Test/V03mathfunc.ztst
deleted file mode 100644
index 1edb7a2..0000000
--- a/dotfiles/system/.zsh/modules/Test/V03mathfunc.ztst
+++ /dev/null
@@ -1,141 +0,0 @@
-# Tests for the module zsh/mathfunc
-
-%prep
- if ! zmodload zsh/mathfunc 2>/dev/null; then
- ZTST_unimplemented="The module zsh/mathfunc is not available."
- fi
-
-%test
- # -g makes pi available in later tests
- float -gF 5 pi
- (( pi = 4 * atan(1.0) ))
- print $pi
-0:Basic operation with atan
->3.14159
-
- float -F 5 result
- (( result = atan(3,2) ))
- print $result
-0:atan with two arguments
->0.98279
-
- print $(( atan(1,2,3) ))
-1:atan can't take three arguments
-?(eval):1: wrong number of arguments: atan(1,2,3)
-
- float r1=$(( rand48() ))
- float r2=$(( rand48() ))
- float r3=$(( rand48() ))
- # Yes, this is a floating point equality test like they tell
- # you not to do. As the pseudrandom sequence is deterministic,
- # this is the right thing to do in this case.
- if (( r1 == r2 )); then
- print "Seed not updated correctly the first time"
- else
- print "First two random numbers differ, OK"
- fi
- if (( r2 == r3 )); then
- print "Seed not updated correctly the second time"
- else
- print "Second two random numbers differ, OK"
- fi
-0:rand48 with default initialisation
-F:This test fails if your math library doesn't have erand48().
->First two random numbers differ, OK
->Second two random numbers differ, OK
-
- seed=f45677a6cbe4
- float r1=$(( rand48(seed) ))
- float r2=$(( rand48(seed) ))
- seed2=$seed
- float r3=$(( rand48(seed) ))
- float r4=$(( rand48(seed2) ))
- # Yes, this is a floating point equality test like they tell
- # you not to do. As the pseudrandom sequence is deterministic,
- # this is the right thing to do in this case.
- if (( r1 == r2 )); then
- print "Seed not updated correctly the first time"
- else
- print "First two random numbers differ, OK"
- fi
- if (( r2 == r3 )); then
- print "Seed not updated correctly the second time"
- else
- print "Second two random numbers differ, OK"
- fi
- if (( r3 == r4 )); then
- print "Identical seeds generate identical numbers, OK"
- else
- print "Indeterminate result from identical seeds"
- fi
-0:rand48 with pre-generated seed
-F:This test fails if your math library doesn't have erand48().
->First two random numbers differ, OK
->Second two random numbers differ, OK
->Identical seeds generate identical numbers, OK
-
- float -F 5 pitest
- (( pitest = 4.0 * atan(1) ))
- # This is a string test of the output to 5 digits.
- if [[ $pi = $pitest ]]; then
- print "OK, atan on an integer seemed to work"
- else
- print "BAD: got $pitest instead of $pi"
- fi
-0:Conversion of arguments from integer
->OK, atan on an integer seemed to work
-
- float -F 5 result
- typeset str
- for str in 0 0.0 1 1.5 -1 -1.5; do
- (( result = abs($str) ))
- print $result
- done
-0:Use of abs on various numbers
->0.00000
->0.00000
->1.00000
->1.50000
->1.00000
->1.50000
-
- print $(( sqrt(-1) ))
-1:Non-negative argument checking for square roots.
-?(eval):1: math: argument to sqrt out of range
-
-# Simple test that the pseudorandom number generators are producing
-# something that could conceivably be pseudorandom numbers in a
-# linear range. Not a detailed quantitative verification.
- integer N=10000 isource ok=1
- float -F f sum sumsq max max2 av sd
- typeset -a randoms
- randoms=('f = RANDOM' 'f = rand48()')
- for isource in 1 2; do
- (( sum = sumsq = max = 0 ))
- repeat $N; do
- let $randoms[$isource]
- (( f > max )) && (( max = f ))
- (( sum += f, sumsq += f * f ))
- done
- (( av = sum / N ))
- (( sd = sqrt((sumsq - N * av * av) / (N-1)) ))
- (( max2 = 0.5 * max ))
- if (( av > max2 * 1.1 )) || (( av < max2 * 0.9 )); then
- print "WARNING: average of random numbers is suspicious.
- Was testing: $randoms[$isource]"
- (( ok = 0 ))
- fi
- if (( sd < max / 4 )); then
- print "WARNING: distribution of random numbers is suspicious.
- Was testing: $randoms[$isource]"
- (( ok = 0 ))
- fi
- done
- (( ok ))
-0:Test random number generator distributions are not grossly broken
-
- float -F 5 g l
- (( g = gamma(2), l = lgamma(2) ))
- print $g, $l
-0:Test Gamma function gamma and lgamma
->1.00000, 0.00000