Fatalne obliczenia w C

Autor: Grzegorz Szyszlo (ZNIK_at_pluton.pol.lublin.pl)
Data: Fri 23 Aug 1996 - 09:50:11 MET DST


> From: Tomasz Dlugoborski <tomekd_at_itr1.p.lodz.pl>

> On Thu, 22 Aug 1996, Jarek Lis wrote:
> > A nie byla to wina tego, ze zrodlo bylo, nazwijmy to, malo precyzyjne,
> > i nie okreslalo do konca co program ma robic?
> >
> > maly przyklad - ile to (a++)-(a++) w C?

                           ^^^^^^^^^^^
   Tak nie wolno pisac !!!!!!!! wynik moze byc rozny na
kazdym kompilatorze. elementarne zasady programowania w C sie
klaniaja. W standardzie ANSI nie ma okreslenia czy wyrazenie jest
liczone od tylu, czy od przodu. Nie jest tez okreslone, czy faktyczna
inkrementacja elementu (tutaj 'a') jest robiona w trakcie obliczenia
wyrazenia, czy bezposredio po nim. Poza tym nie ma gwarancji czy
drugie (w sensie kolejnosci obliczen) 'a' jest pobierane
bezposrednio, czy jest tworzona kopia posrednia.
   Jak ktos pisze w ten sposob programy, niech sie nie dziwi ze nie
wszedzie dzialaja tak samo. A jak dzialaja, to raczej przez przypadek.

> Sprawdzalismy tez to na duzym pakiecie do obliczen kwantowych (MOPAC).
> Zrodlo w FORTRANIE ok. 50 000 lini kodu. Wyniki juz sie roznily przy
> optymalizacji metoda -O2. Natomiast metoda -O1 i bez optymalizacji dzialala
> dobrze.

no wlasnie. inna optymalizacja, inna kolejnosc liczenia.

> Sprawdzilismy jeszcze obliczenia na Alfie z pelna optymalizacja -O4
> i tez bylo OK. Mam zamiar to jeszcze sprawdzic na Cray'ach.

to nie ma sensu. zmieni sie kompilator lub jego wersja i co ?

> | tomekd_at_itr1.p.lodz.pl | Wroblewskiego 15, 93590 Lodz, Poland |

               oOOo /===================================\
         /=====\__/=====/ http://avalon.wbc.lublin.pl/~znik |
         | Grzegorz Szyszlo mailto:ZNIK_at_pluton.pol.lublin.pl |
         \===================================================/



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 12:52:35 MET DST