</motto<Let me see: four times five is twelve, and four times
        six is thirteen, and four times seven is---oh dear!
        I shall never get to twenty at that rate!

        -- -- Lewis Carroll: Alice's Adventures in Wonderland

        </bigf 1 + 1 = 4>

        -- -- R. Buckminster Fuller: Synergetics
>>

/chapter<Numeerisia ongelmia>

Optimoinnin ja vektoroinnin seurauksena 
lausekkeiden laskentaj{rjestys ja lauseiden
suoritusj{rjestys voivat muuttua. 
Joissakin harvoissa tapauksissa t{m{ saattaa
vaikuttaa lopputulokseen. 

Laskettaessa {{rellisell{ tarkkuudella ei esimerkiksi
yhteenlasku en{{ ole assosiatiivinen; yleens{ siis
$$a+(b+c) /ne (a+b)+c.$$

Olkoon meill{ seuraava ohjelma

</copymode
      a=1.0
      b=1.0e-20
      x=1.0-a-b
>

Koska laskentatarkkuus on noin 15 merkitsev{{ numeroa,
saadaan </tt x>:n arvoksi laskentaj{rjestyksest{ riippuen
joko

</copymode
      x=(1.0-a)-b=(1.0-1.0)-1.0e-20=-1.0e-20
>

tai

</copymode
      x=1.0-(a+b)=1.0-(1.0+1.0e-20)=1.0-1.0=0.0
>
 

Jotta t{llaisilta lukujen katkaisun ja py|rist{misen
aiheuttamilta ongelmilta v{ltytt{isiin, on
</bf ohjelma kirjoitettava niin, ettei tulos riipu
lukujen viimeisist{ biteist{>.
T{m{n selvitt{misess{ k{{nt{j{n optio </tt -t> on
hy|dyllinen. Sill{ m{{ritell{{n, kuinka monta viimeist{
bitti{ katkaistaan pois liukulukuoperaatioiden j{lkeen.
Kannattaa esimerkiksi k{{nt{{ ohjelma optiolla </tt -t 3>
ja katsoa, muuttuvatko tulokset merkitt{v{sti. Jos niin
k{y, algoritmi on ilmeisesti ep{stabiili. /iii<tulosten katkaisu>
/iii<stabiilisuus>

Crayss{ ei ole lainkaan jakolaskuyksikk|{. Sen sijaan
siit{ l|ytyy k{{nteisluvun laskeva laite. Niinp{ 
jakolasku </tt x//y> lasketaan k{{nteisluvun ja
kertolaskun avulla: </tt x*(1.0//y)>. Eri k{{nt{jien
(cft, cft77, ...) ja Crayn eri mallien v{lill{ esiintyy
pieni{ eroja jakolaskun tuloksen py|ristyksess{.

Jos esimerkiksi </tt x=10.0> ja </tt y=5.0>, saattaa
</tt x//y> olla hieman kakkosta pienempi tai suurempi.
Varsinainen vaaratilanne jakolaskuista syntyy, jos
tulos sijoitetaan kokonaislukumuuttujaan, koska Fortranin
s{{nt|jen mukaan luku katkaistaan l{hinn{ pienemm{ksi
kokonaisluvuksi. Mieti t{llaisissa tilanteissa huolella,
kumpaa seuraavista oikein haluat:

</copymode
         i=x//y          ! katkaisu
         i=nint(x//y)    ! py|ristys 
>









