|
|
|
Re: Calculator problem on ARM board | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
|
kartikay Malhotra wrote: > Hello All, > > I am facing a problem. I have a calculator application, which has 14 bit > screen. When I add two numbers, number1 += number2, where both number1 and > number2 are double, and one of the numbers is very large, and the other > number is small, I get an error in result. Welcome to the world of floating-point math. High dynamic range, but depending on where you are at magnitude-wise the precision can be pretty low. > For example, 10000000000000 + 1 gives 1e+13, instead of 10000000000001. This > is because the result string is actually 10000000000000.99. Yep. That's a big number, and you don't have the precision to represent it as accurately as you want. > > Is there a problem in the compiler, or is double precision arithmetic > incorrect? The same application complied for x86 gives no error. Well, if both systems conform to ieee695 then the results should be identical. Is one machine soft-float and the other using an FPU? Note that for ARM, the FPU might be emulated by kernel code, so you are actually using a different runtime implementation than x86. For apples-to-apples comparisons, use soft-float everywhere. HTH, b.g. -- Bill Gatliff bgat@xxxxxxxxxxxxxxx ------------------------------------------------------------------- List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
[Linux ARM] [Linux ARM MSM] [Linux ARM Kernel] [Fedora ARM] [IETF Annouce] [Security] [Bugtraq] [Linux] [Linux OMAP] [Linux MIPS] [ECOS] [Asterisk Internet PBX] [Linux API]
![]() |
![]() |