"SOLVED"Precision error on double calculation

Go To Last Post
2 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi all,

First, sorry about my english level, I will try to be understandable.

I working on a EVK1100 board, with AVR32 studio, and AVR32/GNU C toolchain vers 2.4.0.2.

I have a code like this :

double a, b, c, d, e, f;

a = b * (c / d);
e = (c * (c / d)) * f;
 

After compare "a" and "e" with values gets by the same program under visual studio (who works well), value of "a" is right with 16 digits after coma. But "e" have a big difference (too high for me) on the digit 8 after coma.
After many manipulation, I can said that the problem comes from the multiplication part, if I try :

inter = c / d;

e = (c * inter) * f;

I have isolate the problem comes with the calculation between brackets.

I have searching on internet, Atmel documentation and this forum, and found that there was a problem before version 2.1.4 of AVR32/GNU C toolchain , but I working on the release 2.4.0 then normally fixed.

Last important point, I working with the external SDRAM (who works well for all others calculations) and hope having well check the GNU C version.

Then, if somebody have an idea.

Thanks in advance, and ... thanks for all important thinks I have found on this very helpfull forum.

CPU

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Solved by force double-word aligment.