cancel
Showing results for 
Search instead for 
Did you mean: 

floating point operations

nagendrapilladi
Associate II
Posted on March 19, 2008 at 03:50

floating point operations

1 REPLY 1
nagendrapilladi
Associate II
Posted on May 17, 2011 at 12:26

I used this ftoa fun it doesnt working.

same function was working in PC version compiler

is there any options to add for floating point operations?

i also add the options like -mfpu=vfp -mfloat-abi-softfp

but it also didnt work how to resolve this?

let me know

int my_ftoa (float x, char *str, char prec, char format)

{

/* converts a floating point number to an ascii string */

/* x is stored into str, which should be at least 30 chars long */

int ie, i, k, ndig, fstyle;

double y;

//if (nargs() != 7)

// print_text(''ftoa '');

//ndig = ( prec<=0) ? 7 : (prec > 22 ? 23 : prec+1);

ndig = prec+1;

if(format == 'f' || format == 'F')

fstyle = 1;

else

fstyle = 0;

/* print in e format unless last arg is 'f' */

ie = 0;

/* if x negative, write minus and reverse */

if ( x < 0)

{

*str++ = '-';

x = -x;

}

// put x in range 1 <= x < 10

if (x > 0.0) while (x < 1.0)

{

x =x*10.0;

ie--;

}

while (x >= 10.0)

{

x = x/10.0;

ie++;

}

/* in f format, number of digits is related to size */

if (fstyle)

ndig =ndig + ie;

/* round. x is between 1 and 10 and ndig will be printed to

right of decimal point so rounding is ... */

for (y = i = 1; i < ndig; i++)

y = y/10.0;

x =x+ y/2.0;

//if (x >= 10.0) {x = 1.0; ie++;} /* repair rounding disasters */

/* now loop. put out a digit (obtain by multiplying by

10, truncating, subtracting) until enough digits out */

/* if fstyle, and leading zeros, they go out special */

if (fstyle && ie

{

*str++ = '0'; *str++ = '.';

if (ndig < 0) ie = ie-ndig; /* limit zeros if underflow */

for (i = -1; i > ie; i--)

*str++ = '0';

}

for (i=0; i < ndig; i++)

{

k = x;

*str++ = k + '0';

if (i == (fstyle ? ie : 0)) /* where is decimal point */

*str++ = '.';

x =- (y=k);

x =x*10.0;

}

/* now, in estyle, put out exponent if not zero */

if (!fstyle && ie != 0)

{

*str++ = 'E';

if (ie < 0)

{

ie = -ie;

*str++ = '-';

}

for (k=100; k > ie; k =k/10);

for (; k > 0; k =k/10)

{

*str++ = ie/k + '0';

ie = ie%k;

}

}

*str = '\0';

return 0;

}

and I want to convert a floating point to an integer, store the value in int format, in the above functions it hangs

how to resolve this problem? can anyone help me?

regards

nagendra