if (j > p)  {cpy(x,z,p);  return; }
if (j > p)  {__cpy(x,z,p);  return; }
static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {  int i,j,k;  EZ = EX;  if (EX == EY) {    i=j=k=p;    Z[k] = Z[k+1] = ZERO; }  else {    j= EX - EY;    if (j > p)  {cpy(x,z,p);  return; }    else {      i=p;   j=p+1-j;   k=p;      if (Y[j] > ZERO) {        Z[k+1] = RADIX - Y[j--];        Z[k]   = MONE; }      else {        Z[k+1] = ZERO;        Z[k]   = ZERO;   j--;}    }  }  for (; j>0; i--,j--) {    Z[k] += (X[i] - Y[j]);    if (Z[k] < ZERO) {      Z[k]  += RADIX;      Z[--k] = MONE; }    else      Z[--k] = ZERO;  }  for (; i>0; i--) {    Z[k] += X[i];    if (Z[k] < ZERO) {      Z[k]  += RADIX;      Z[--k] = MONE; }    else      Z[--k] = ZERO;  }  for (i=1; Z[i] == ZERO; i++) ;  EZ = EZ - i + 1;  for (k=1; i <= p+1; )    Z[k++] = Z[i++];  for (; k <= p; )    Z[k++] = ZERO;  return;}