/* unsigned _DivUnsArrByUns(a,c,n) * * ARGUMENT * unsigned a[]; * unsigned c; number of divide by * int n; number of digits * * DESCRIPTION * Divides a number of n digits (a) by c and stores the result in a. * The remainder is calculated and returnes. * * SIDE EFFECTS * None. * * RETURNS * Remainder. * * AUTHOR * Brugnoli Giugno 1992 * Bonazzi Febbraio 2002 * * MODIFICATIONS * */ #include #include "gm.h" #include "gmsystem.h" unsigned _DivUnsArrByUns(a,c,n) unsigned SHORT a[],c; int n; { int i; unsigned SHORT rem = 0,qt; unsigned long remup,ntbd; if ((c) && (n)) { for (i = n-1; i >= 0;i--) { remup = (long)rem << BITSPERUI; ntbd = (long)a[i] + remup; qt = (unsigned SHORT)(ntbd / c); rem = (unsigned SHORT)(ntbd % c); a[i] = qt; } } return(rem); }