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