Exactly where did you get that result printed out?   Certainly not from the
kernel via printk() since printk() doesn't do floating point (nor long long,
but that's a different issue).

Here's what I get whenI run the "program" in user-space:

Result is 9.427070
But as an int it's -311863868
But as a long it's -311863868


============ here's the program ========

#include <libc.h>

int  main()
{
 double m0,
  ramp = 1,
  chi_off = 0.299,
  ang_lim = 198,
  my_2_pi = 6.28;

   m0 = ramp*chi_off*ang_lim/ my_2_pi;


 printf( " Result is %f\n" , m0 );
 printf( " But as an int it's %d\n" , m0 );
 printf( " But as a long it's %ld\n" , m0 );

 return( 0 );
}



----- Original Message -----
From: Jonas Persson <[EMAIL PROTECTED]>
To: RTLinux Mailing list <[EMAIL PROTECTED]>
Sent: Wednesday, May 09, 2001 12:33 PM
Subject: [rtl] Floating point question


> Hi all!
>
> So, now I have gotten to the dreaded floating point issue. However, I
think my problem is a little rare... the problem is that the FPU simply does
not give correct answers. Consider the following code excerpt:
>
>   m0 = ramp*chi_off*ang_lim/ my_2_pi;
>
> Given the following parameters,
>   ramp = 1,
>   chi_off = 0.299,
>   ang_lim = 198,
>   my_2_pi = 6.28,
>
> the statement above returns
>
>   m0 = -2147483648 !!!
>
> Interesting, isn't it? m0 is an int, the rest are floats. If I run the
program without debugging and trace data through an RT-fifo, I get lots of
results like the above example. However if I debug the program, and wait for
a few seconds, sometimes different results are returned.
>
> Can anyone guess at possible causes for this happening? Have anyone else
experienced the same behaviour?
>
> Apart from this, my system is working fine, I have no crashes, hangups or
other bad behaviour.
>
> My configuration is:
> Pentium III 866 processor, tyan SMP motherboard, kernel 2.2.18-rtl. Base
distribution is SuSE 7.0, and exchanged the stock installed debugger for gdb
5.0. I am using the stock gcc 2.95.2 19991024 that comes with SuSE.
>
> BTW, I solved my previous problem by NOT doing rtf_flush() from a
rt-thread... :-)
>
> Yours very confusedly,
> Jonas Persson
>
> ______________________________________________________________________
>  Jonas Persson                    E-mail: [EMAIL PROTECTED]
>  Project Manager, M.Sc C.Sc&E     http://www.comsys.se/
>  Comsys AB                        Phone: +46-(0)46-286 3500
>  Forskningsbyn IDEON              Fax: +46-(0)46-286 3505
>  S-223 70 Lund, Sweden
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
> echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/rtlinux/
>

-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/

Reply via email to