/****************************************************************************** * * * 64-BIT SUBTRACT * * 01/12/07 (dkc) * * * ******************************************************************************/ unsigned int carry(unsigned int a, unsigned int b, unsigned int sum); void sub64(unsigned int *a, unsigned int *b) { unsigned int high0,high1,low0,low1,templo,temphi,temp,c; high0=*a; low0=*(a+1); high1=*b; low1=*(b+1); low1=~low1; high1=~high1; temp=low1+1; c=carry(low1,1,temp); low1=temp; high1+=c; templo=low0+low1; c=carry(low0,low1,templo); temphi=high0+high1+c; *b=temphi; *(b+1)=templo; return; }