/* int _DoubleUnsArr(a,n) * * ARGUMENT * unsigned *a; * int n; * * DESCRIPTION * Multiplies a by 2 and stores the result in a. * * * SIDE EFFECTS * * * RETURNS * SUCCESS if no overflow, otherwise FAILURE. * * AUTHOR * Brugnoli Giugno 1992 * * MODIFICATIONS * */ #include #include #include "gm.h" #include "gmsystem.h" unsigned _DoubleUnsArr(a,n) unsigned SHORT a[]; int n; { int i; unsigned long pdst; unsigned SHORT carry = 0; if (n>0) { for (i=0;iMAXUNSINT) { carry=(unsigned SHORT)(pdst>> BITSPERUI ); a[i]=(unsigned SHORT)(pdst & MAXUNSINT ); } else { a[i]=(unsigned SHORT)pdst; carry=0; } } if ((a[n-1]) >> (BITSPERUI-1)) return(FAILURE); } return(GM_SUCCESS); }