Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,52 @@
|
|||
MODE VALUE = STRUCT(CHAR value),
|
||||
STDDEV = STRUCT(CHAR stddev),
|
||||
MEAN = STRUCT(CHAR mean),
|
||||
VAR = STRUCT(CHAR var),
|
||||
COUNT = STRUCT(CHAR count),
|
||||
RESET = STRUCT(CHAR reset);
|
||||
|
||||
MODE ACTION = UNION ( VALUE, STDDEV, MEAN, VAR, COUNT, RESET );
|
||||
|
||||
LONG REAL sum := 0;
|
||||
LONG REAL sum2 := 0;
|
||||
INT num := 0;
|
||||
|
||||
PROC stat object = (LONG REAL v, ACTION action)LONG REAL:
|
||||
(
|
||||
|
||||
LONG REAL m;
|
||||
|
||||
CASE action IN
|
||||
(VALUE):(
|
||||
num +:= 1;
|
||||
sum +:= v;
|
||||
sum2 +:= v*v;
|
||||
stat object(0, LOC STDDEV)
|
||||
),
|
||||
(STDDEV):
|
||||
long sqrt(stat object(0, LOC VAR)),
|
||||
(MEAN):
|
||||
IF num>0 THEN sum/LONG REAL(num) ELSE 0 FI,
|
||||
(VAR):(
|
||||
m := stat object(0, LOC MEAN);
|
||||
IF num>0 THEN sum2/LONG REAL(num)-m*m ELSE 0 FI
|
||||
),
|
||||
(COUNT):
|
||||
num,
|
||||
(RESET):
|
||||
sum := sum2 := num := 0
|
||||
ESAC
|
||||
);
|
||||
|
||||
[]LONG REAL v = ( 2,4,4,4,5,5,7,9 );
|
||||
|
||||
main:
|
||||
(
|
||||
LONG REAL sd;
|
||||
|
||||
FOR i FROM LWB v TO UPB v DO
|
||||
sd := stat object(v[i], LOC VALUE);
|
||||
printf(($"value: "g(0,6)," standard dev := "g(0,6)l$, v[i], sd))
|
||||
OD
|
||||
|
||||
)
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
MODE STAT = STRUCT(
|
||||
LONG REAL sum,
|
||||
LONG REAL sum2,
|
||||
INT num
|
||||
);
|
||||
|
||||
OP INIT = (REF STAT new)REF STAT:
|
||||
(init OF class stat)(new);
|
||||
|
||||
MODE CLASSSTAT = STRUCT(
|
||||
PROC (REF STAT, LONG REAL #value#)VOID plusab,
|
||||
PROC (REF STAT)LONG REAL stddev, mean, variance, count,
|
||||
PROC (REF STAT)REF STAT init
|
||||
);
|
||||
|
||||
CLASSSTAT class stat;
|
||||
|
||||
plusab OF class stat := (REF STAT self, LONG REAL value)VOID:(
|
||||
num OF self +:= 1;
|
||||
sum OF self +:= value;
|
||||
sum2 OF self +:= value*value
|
||||
);
|
||||
|
||||
OP +:= = (REF STAT lhs, LONG REAL rhs)VOID: # some syntatic sugar #
|
||||
(plusab OF class stat)(lhs, rhs);
|
||||
|
||||
stddev OF class stat := (REF STAT self)LONG REAL:
|
||||
long sqrt((variance OF class stat)(self));
|
||||
|
||||
OP STDDEV = ([]LONG REAL value)LONG REAL: ( # more syntatic sugar #
|
||||
REF STAT stat = INIT LOC STAT;
|
||||
FOR i FROM LWB value TO UPB value DO
|
||||
stat +:= value[i]
|
||||
OD;
|
||||
(stddev OF class stat)(stat)
|
||||
);
|
||||
|
||||
mean OF class stat := (REF STAT self)LONG REAL:
|
||||
sum OF self/LONG REAL(num OF self);
|
||||
|
||||
variance OF class stat := (REF STAT self)LONG REAL:(
|
||||
LONG REAL m = (mean OF class stat)(self);
|
||||
sum2 OF self/LONG REAL(num OF self)-m*m
|
||||
);
|
||||
|
||||
count OF class stat := (REF STAT self)LONG REAL:
|
||||
num OF self;
|
||||
|
||||
init OF class stat := (REF STAT self)REF STAT:(
|
||||
sum OF self := sum2 OF self := num OF self := 0;
|
||||
self
|
||||
);
|
||||
|
||||
[]LONG REAL value = ( 2,4,4,4,5,5,7,9 );
|
||||
|
||||
main:
|
||||
(
|
||||
# printf(($"standard deviation operator = "g(0,6)l$, STDDEV value));
|
||||
#
|
||||
|
||||
REF STAT stat = INIT LOC STAT;
|
||||
|
||||
FOR i FROM LWB value TO UPB value DO
|
||||
stat +:= value[i];
|
||||
printf(($"value: "g(0,6)," standard dev := "g(0,6)l$, value[i], (stddev OF class stat)(stat)))
|
||||
OD
|
||||
#
|
||||
;
|
||||
printf(($"standard deviation = "g(0,6)l$, (stddev OF class stat)(stat)));
|
||||
printf(($"mean = "g(0,6)l$, (mean OF class stat)(stat)));
|
||||
printf(($"variance = "g(0,6)l$, (variance OF class stat)(stat)));
|
||||
printf(($"count = "g(0,6)l$, (count OF class stat)(stat)))
|
||||
#
|
||||
|
||||
)
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
LONG REAL sum, sum2;
|
||||
INT n;
|
||||
|
||||
PROC sd = (LONG REAL x)LONG REAL:(
|
||||
sum +:= x;
|
||||
sum2 +:= x*x;
|
||||
n +:= 1;
|
||||
IF n = 0 THEN 0 ELSE long sqrt(sum2/n - sum*sum/n/n) FI
|
||||
);
|
||||
|
||||
sum := sum2 := n := 0;
|
||||
[]LONG REAL values = (2,4,4,4,5,5,7,9);
|
||||
FOR i TO UPB values DO
|
||||
LONG REAL value = values[i];
|
||||
printf(($2(xg(0,6))l$, value, sd(value)))
|
||||
OD
|
||||
Loading…
Add table
Add a link
Reference in a new issue