Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -1,11 +1,12 @@
BEGIN # construct an R-style fivenum function #
PR read "rows.incl.a68" PR
PR read "sort.incl.a68" PR
PROC fivenum = ( []REAL array )[]REAL:
BEGIN
INT n = ( UPB array + 1 ) - LWB array;
[ 1 : n ]REAL x := array[ AT 1 ];
QUICKSORT x FROMELEMENT LWB x TOELEMENT UPB x;
QUICKSORT x;
REAL n4 = ( ( ( n + IF ODD n THEN 3 ELSE 2 FI ) / 2 ) / 2 ) ;
[]REAL d = ( 1, n4, ( n + 1 ) / 2, n + 1 - n4, n );
[ 1 : 5 ]REAL sum_array;

View file

@ -0,0 +1,59 @@
include xpllib; \for Print and RlSort
func real OurMedian(X, Start, EndInclusive);
real X; int Start, EndInclusive;
int Size, M;
[Size:= EndInclusive - Start + 1;
if Size <= 0 then
[Print("Array slice cannot be empty\n");
exit 1;
];
M:= Start + Size/2;
if rem(0) then return X(M);
return (X(M-1) + X(M)) / 2.0;
];
func FiveNum(X, Result, XLen);
real X, Result; int XLen;
int I, M, LowerEnd;
[for I:= 0 to XLen-1 do
[if X(I) # X(I) then
[Print("Unable to deal with arrays containing NaN\n\n");
return true;
];
];
RlSort(X, XLen);
Result(0):= X(0);
Result(2):= OurMedian(X, 0, XLen-1);
Result(4):= X(XLen-1);
M:= XLen/2;
LowerEnd:= if rem(0) then M else M-1;
Result(1):= OurMedian(X, 0, LowerEnd);
Result(3):= OurMedian(X, M, XLen-1);
return false;
];
proc Show(Result, Places);
real Result; int Places;
int I;
[Format(1, Places);
Print("[");
for I:= 0 to 5-1 do
[RlOut(0, Result(I));
if I < 4 then Print(", ");
];
Print("]\n\n");
];
real Result(5), X1, X2, X3;
[X1:= [15.0, 6.0, 42.0, 41.0, 7.0, 36.0, 49.0, 40.0, 39.0, 47.0, 43.0];
if not FiveNum(X1, Result, 11) then Show(Result, 1);
X2:= [36.0, 40.0, 7.0, 39.0, 41.0, 15.0];
if not FiveNum(X2, Result, 6) then Show(Result, 1);
X3:= [ 0.14082834, 0.09748790, 1.73131507, 0.87636009, -1.95059594, 0.73438555,
-0.03035726, 1.46675970, -0.74621349, -0.72588772, 0.63905160, 0.61501527,
-0.98983780, -1.00447874, -0.62759469, 0.66206163, 1.04312009, -0.10305385,
0.75775634, 0.32566578
];
if not FiveNum(X3, Result, 20) then Show(Result, 9);
]