campo-sirio/gfm/mul10l.c
alex ba237a9d91 Patch level : no patch
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Aggiunti i sorgenti per Greenleaf Math Library (gfm.dll)


git-svn-id: svn://10.65.10.50/trunk@10079 c028cbd2-c16b-5b4b-a496-9718f37d4682
2002-02-26 12:19:02 +00:00

70 lines
1.1 KiB
C
Executable File

/* int _MulUnsArrByPwrOf10Limited(pa,n,dig)
*
* ARGUMENT
* unsigned pa[]; points to a 160bit number
* int n; power of 10 to multiply by (0..19)
* int dig; number of digits to multiply
*
* DESCRIPTION
* Multiplies the pa[] array by 10^n (0<n<19),
* if the multiplication overflows, multiplies by largest power of 10
* which doesn't generate overflow and return that power of ten.
*
* SIDE EFFECTS
* None.
*
* RETURNS
* Power of ten multiplied by.
*
* AUTHOR
* Brugnoli Giugno 1992
*
* MODIFICATIONS
*
*/
#include <stdio.h>
#include "gm.h"
#include "gmsystem.h"
int _MulUnsArrByPwrOf10Limited(pa,n,dig)
unsigned SHORT pa[];
int n,dig;
{
int k,i,pow;
unsigned SHORT cop[10];
k=GM_SUCCESS;
pow=0;
for (i=0;i<10;i++)
{
cop[i]=0;
}
while((pow<n)&&(!k))
{
for (i=0;i<dig;i++)
{
cop[i]=pa[i];
}
k=_MulUnsArrByPwrOf10(pa,1,dig);
if (!k)
{
pow++;
}
}
if (k)
{
for (i=0;i<dig;i++)
{
pa[i]=cop[i];
}
}
return(pow);
}