LINUX.ORG.RU

gcc, fpu, то ли лыжи не едут ...


0

3

Народ, что за бред творится ?

в проге:
double maxdelta,delta,deltaf,deltal,a11,a12,a22,b2,b1;
...
deltaf=delta*(b1*a22-b2*a12);

в отладчике:
(gdb) p deltaf
$7 = 0
(gdb) p delta*(b1*a22-b2*a12)
$8 = -1.3552527156068805e-10
(gdb) p delta
$9 = 10000000000
(gdb) p (b1*a22-b2*a12)
$10 = -1.3552527156068805e-20


Ответ на: комментарий от UVV

Чё спросить то хотел?

наверно, «как выполнить текущую команду в отладчике?» :)

ответ: «step или next»

anonymous
()
Ответ на: комментарий от UVV

<telepat-mode> Почему значение выражения delta*(b1*a22-b2*a12); различается в отладчике и в откомпилированном коде. </telepat-mode>

Reset ★★★★★
()
Ответ на: комментарий от buddhist

Это при том, что я заменил b1*a22-b2*a12 одним числом. Подозреваю, что виновата оптимизация где-то при раскрытии скобок.

buddhist ★★★★★
()

покапитаню чуток.
позволь спросить, а ты вот эту deltaf=delta*(b1*a22-b2*a12); инструкцию выполнил в отладчике, прежде чем делать p deltaf.
ведь если ты на ней поставил точку останова, она еще не посчиталась.

aol ★★★★★
()
Ответ на: комментарий от aol

позволь спросить, а ты вот эту deltaf=delta*(b1*a22-b2*a12); инструкцию выполнил в отладчике, прежде чем делать p deltaf.

ну естественно выполнил, иначе зачем мне спрашивать, пол дня голову ломал, вне нервы вымотало

помогло -mfpmath=i386

xeb
() автор топика
Ответ на: комментарий от xeb

Программу с -O0 собираешь? А то с оптимизацией могут быть и не такие сюрпризы в gdb.

Deleted
()

Скорее всего отладчик и оптимизация. Новое значение еще не записано в deltaf.

Pavval ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.