code 41256;
real procedure MULHYPERGPROB(X,N,K,R);
value N,K; real N,K; array X,R;
begin integer I,J,L,SR,SX; real MHP,XJ,RJ;
if N < 1 ∨ N > ENTIER(N) then
STATAL3 ERROR(“MULHYPERGPROB”,2,N);
if K < 1 ∨ K > ENTIER(K) then
STATAL3 ERROR(“MULHYPERGPROB”,3,K);
SX := SR := 0;
MHP := 0;
for J := 1 step 1 until K do
begin RJ := R[J]; XJ := X[J];
if RJ < 0 ∨ RJ > ENTIER(RJ) then
STATAL3 ERROR(“MULHYPERGPROB”,4,RJ);
SR := SR + RJ; SX := SX + XJ;
if XJ > RJ ∨ XJ < 0 ∨ XJ > ENTIER(XJ) then
begin MULHYPERGPROB := 0; goto OUT end;
MHP := MHP + LOGGAMMA(RJ+1) - LOGGAMMA(XJ+1)
- LOGGAMMA(RJ-XJ+1);
end J ;
if SX ≠ N then
begin MULHYPERGPROB := 0; goto OUT end;
MHP := MHP + LOGGAMMA(N+1) + LOGGAMMA(SR-N+1)
- LOGGAMMA(SR+1);
MULHYPERGPROB := EXP(MHP);
OUT:
end MULHYPERGPROB;
eop