/*****************************************************************************/
/*									     */
/*  COMPUTE (A**P+B**P)/(A+B) (UNSIGNED)				     */
/*  11/13/06 (dkc)							     */
/*									     */
/*****************************************************************************/
void bigprod(unsigned int a0, unsigned int a1, unsigned int multiplier,
	     unsigned int *product);
void bigbigq(unsigned int a0, unsigned int a1, unsigned int a2, unsigned int a3,
	     unsigned int *quotient, unsigned int d0, unsigned int d1);
void bigbigs(unsigned int *a, unsigned int *b);
void depower(unsigned int d, unsigned int e, unsigned int p, unsigned int *S) {
unsigned int i,temp;
unsigned int X[3],Y[4],Z[4];
Y[0] = 0;
Y[1] = 0;
Y[2] = 0;
Y[3] = d;
for (i=0; i<p-1; i++) {
   bigprod(Y[2], Y[3], d, X);
   Y[1]=X[0];
   Y[2]=X[1];
   Y[3]=X[2];
   }
Z[0] = 0;
Z[1] = 0;
Z[2] = 0;
Z[3] = e;
for (i=0; i<p-1; i++) {
   bigprod(Z[2], Z[3], e, X);
   Z[1]=X[0];
   Z[2]=X[1];
   Z[3]=X[2];
   }
bigbigs(Y, Z);
temp=d+e;
if (((d+e)/p)*p==(d+e))
   temp=temp*p;
bigbigq(Z[0], Z[1], Z[2], Z[3], Y, 0, temp);
S[0]=Y[2];
S[1]=Y[3];
return;
}