/* Copyright (C) 1994 by Thomas Glen Smith. All Rights Reserved. */ /* ibinomp APL2 V1.0.0 ************************************************* * The expression - * * ifactorl(rite) / (ifactorl(left) * ifactorl(rite - left)) * * yields the equivalent to the binomial function. For positive * * arguments ibinom(m,n) yields the number of distinct ways in which * * m things can be chosen from n things. * ***********************************************************************/ #define INCLUDES 0 #include "includes.h" void ibinomp(m,n,ret) int *m,*n,*ret; { int den,i,j,k,mm,nn,num; if (*m == *n || *m == 0) {*ret = 1; return;} if (*n >= 0) if (*m > *n || *m < 0) {*ret = 0; return;} else; else /* n < 0 */ if (*m < 0 && *m > *n) {*ret =0; return;} k = *n - *m; num = nn = *n; while(--nn > k) num *= nn; den = mm = *m; while(--mm > 1) den *= mm; *ret =(num/den); }