( viraghj | 2018. 09. 25., k – 11:22 )

Matematikus szemmel nézve azért annyi huncutság van az egészben, hogy a programozási nyelvtől függetlenül* gyakorlatilag csak parciális függvényeket tudunk definiálni, sőt legtöbbször azt sem triviális megmondani, hogy MELY értékekre lesz definiálatlan a megadott függvény. Ennek egyik alapvető oka, hogy valójában a gép számára

1) az int típus nem az egészek halmazát jelenti, hanem a gépen ábrázolható egészeket
2) a double vagy real vagy akármi dettó, az ábrázolható lebegőpontosakat

tehát a példákban emlegetett százalék függvény nemcsak a 100*10/0-ra, hanem a 100*10^1000/10^1000-re és még egy csomó értékre ad "furcsa" eredményeket.

*Persze lehet szoftveresen "végtelen" pontosságú bigInt és bigFloat típusokat implementálni, de így sem kapjuk meg az összes egészet, pl. a gép memória korlátjai miatt.

Ezzel az "objektíve zűrös" helyzettel a különböző nyelvek és szabványok különböző kreatív megoldásokkal próbálnak megküzdeni.

A kimondottan (numerikus) számolásra való Octave nyelvben pl.

octave:1> max([1.,10.^100])
ans = 1.0000e+100
octave:2> sin(10.^100),sqrt(10.^100),exp(10.^100)
ans = -0.38064
ans = 1.0000e+50
ans = Inf
octave:3> sin(10.^1000),sqrt(10.^1000),exp(10.^1000)
ans = NaN
ans = Inf
ans = Inf
octave:4> max([1.,10.^100,10.^1000])
ans = Inf
octave:5> sin(exp(10.^2)^7)
ans = -0.20976
octave:6> sin(exp(10.^2)^8)
ans = NaN