112         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   113         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   114         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   115         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   116         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   117         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   118         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   119         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   120         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   121         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   122         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   123         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   124         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   125         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   126         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   134         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   135         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   136         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   137         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   138         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   139         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   140         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   141         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   142         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   143         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   144         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   145         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   146         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   147         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   148         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
   156         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   157         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   158         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   159         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   160         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   161         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   162         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   163         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   164         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   165         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   166         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   167         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   168         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   169         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
   170         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
   178         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   179         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   180         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   181         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   182         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   183         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   184         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   185         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   186         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   187         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   188         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   189         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   190         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   191         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   192         {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
   200         if (a == 0 || b == 0)   
return 0;
   203         if (a < b) {  t = a; a = b; b = t; }
   204         while ((t = a%b) > 1) { a = b; b = t; }
   205         if (t)  
return t; 
else  return b;
   213         if (n == 0 || n == 1)   
return t;
   245         if (an == 0 || ad == 0) ad = 1;
   246         if (bn == 0 || bd == 0) bd = 1;
   248         *on = an*bd + bn*ad*x;
   251         if (xx != 0 && xx != 1) {
   275         if (an == 0 || ad == 0) ad = 1;
   276         if (bn == 0 || bd == 0) bd = 1;
   281         if (xx != 0 && xx != 1) {
   299         printf(
"%s : %d >>> \n", DFstr, order);
   300         for (
int j = 0; j <= order; j++) {
   302                 for (
int i = 0; i <= order; i++) {
   304                                 printf(
"%+ld/%ld*x^%d",xn[j][i],xd[j][i],i);
   320         printf(
"long %s%d[%d][%d] = {\n", DFstr, order, order+1, order+1);
   321         for (
int j = 0; j <= order; j++) {
   323                 for (
int i = 0; i <= order; i++) {
   324                         printf(
"%ldl",xn[j][i]);
   325                         if (i < order) printf(
",");
   326                         LINT cc = (xn[j][i] < 0 ? -xn[j][i] : xn[j][i]);
   331                 if (j < order) printf(
",");
   335         printf(
"/* integer type must support max value = %ld */\n\n", maxcoef);
   347         extern LINT     pn[NINT][NINT], 
pd[NINT][NINT],
   348                         cn[NINT][NINT], 
cd[NINT][NINT];
   351         for (
int i = 0; i <= nn; i++) {
   355                 for (
int j = i; j <= nn; j++) {
   359                         for (
int k = 1; k <= nn; k++) {
   367         LINT cc, maxint = 0, maxcoef = 0;
   368         for (
int j = 0; j <= nn; j++) {
   369                 for (
int i = 0; i <= nn; i++) {
   370                         cc = (cn[j][i] < 0 ? -cn[j][i] : cn[j][i]);
   374                                 &(cn[j][i]),&(cd[j][i])); 
   375                         cc = (cn[j][i] < 0 ? -cn[j][i] : cn[j][i]);
   378                         cc = (cd[j][i] < 0 ? -cd[j][i] : cd[j][i]);
   383         printf(
"max int  = %ld\nmax coef = %ld\n"   384                 "INT_MAX  = %d\nLONG_MAX = %ld\nLLONG_MAX = %lld\n"   387                 INT_MAX, LONG_MAX, LLONG_MAX, nn, 
ifac(nn));
   400         extern LINT     pn[NINT][NINT], 
pd[NINT][NINT],
   401                         cn[NINT][NINT], 
cd[NINT][NINT];
   403         for (
int j = 0; j <= nn; j++) {
   404                 for (
int i = 1; i <= nn; i++) {
   406                                 &(pn[j][i-1]), &(pd[j][i-1]));
   441         LINT tmpn[NINT], tmpd[NINT], zero = 0, one = 1;
   442         for (
int j = 0; j <= nn; j++) { 
   444                 for (
int i = 0; i <= nn; i++) {
   449                 for (
int m = 0; m <= nn; m++) {
   454                         for (
int k = nn-1; k >= m; k--) {
   459                                 iadd(
icomb(k,k-m)*xn[j][k], xd[j][k], cn, cd,
   466                 for (
int i = 0; i <= nn; i++) {
   477                 for (
int j = 0; j <= nn; j++) { 
   480                         LINT sn = zero, sd = one;
   481                         for (
int i = 0; i <= nn; i++) {
   482                                 iadd(sn,sd, xn[j][i], xd[j][i], one, &sn, &sd);
   484                         printf(
"*** %d %ld/%ld\n", j, sn, sd);
   486                                 printf(
"+++ %d %ld/%ld\n", j+1,
   487                                         xn[j+1][0], xd[j+1][0]);
 LINT pd[NINT][NINT]
PDF denominator. 
void newpdf(int nn)
void newpdf(nn) calculate the new PDF of order nn by differentiating the CDF. 
LINT cn[NINT][NINT]
CDF numerator. 
LINT pn[NINT][NINT]
PDF numerator. 
void imult(LINT an, LINT ad, LINT bn, LINT bd, LINT x, LINT *on, LINT *od)
void imult(an,ad,bn,bd, x, *on, *od) return a*b*x where a,b are represented as rationals ...
LINT igcd(LINT a, LINT b)
LINT igcd(LINT a, LINT b) return Greatest Common Denominator of a & b. 
void newcdf(int nn)
void newcdf(nn) calculate the new CDF of order nn 
long LINT
long integer type used for calculations. 
LINT icomb(int n, int k)
LINT icomb(LINT n, LINT k) return binomial factor n!/[k!*(n-k)!]. 
void writedf(char *DFstr, int order, LINT xn[][NINT])
void writedf(DFstr, order, xn[][NINT]) output array as a C declaration 
LINT cd[NINT][NINT]
CDF denominator. 
void showdf(char *DFstr, int order, LINT xn[][NINT], LINT xd[][NINT])
void showdf(DFstr, order, xn[][NINT], xd[][NINT]) display the rational values of 'x'. 
LINT ifac(int n)
LINT ifac(LINT n) return the factorial of n (n!) 
void transint(int nn, LINT xn[][NINT], LINT xd[][NINT])
void transint(nn, xn[][NINT], xd[]{NINT]) translate each interval to [0,1) 
void iadd(LINT an, LINT ad, LINT bn, LINT bd, LINT x, LINT *on, LINT *od)
void iadd(an,ad,bn,bd, x, *on, *od) return a + b*x where a,b are represented as rationals ...