Pravdivost pri vylouceni NaN a -NaN.
x == (int)(float) x
Obecne ne. Int je typicky 32 bit, float je 32 bit a obsahuje znamenka a exponent, jak to stoji v clanku. Napr. INT_MAX neprojde, jsou to binarne jenom jednicky az na prvni bit a to se do floatu nevleze.
Ano pro architektury se sizeof(int) <=2, jako treba stare 16 bity.
x == (int)(double) x
Ano, mantisa ma u doublu 52 bit, tam se int vleze.
f == (float)(double) f
Ano, jde jenom o rozsireni typu.
d == (float) d
Ne, 64 bitovy typ se do 32 bit nevleze. Volme treba INT_MAX z prvniho prikladu.
f == -(-f);
Ano, znamenka jsou ulozena samostatne.
2/3 == 2/3.0
Ne, celociselne deleni neni rovno deleni floatu: 0 != 0.66666.
d < 0.0 ((d*2) < 0.0)
Ano, double a floaty by meli pretict do nekonecna.
d > f -f > -d
Ano, kdyz to tedy neni chytak, tak floaty a doubly jsou symetricke kolem 0 diky znamenku.
d * d >= 0.0
Ano, znamenko se pocita jako xor znamenek. Vyjimkou by byl NaN, ale ty jsou vylouceny.
(d+f)-d == f
Ne, treba kdyz d+f je prilis velke a je z toho nekonecno , pak nekonecno minus cislo bude vzdy nekonecno. Neplati treba f=FLT_MAX, d=DBL_MAX.