Czasami mam nan wyniku mnożenia no-nan bic:dlaczego nan można zapobiegać przez powielone obliczenia?
double a = b * c; //b = 0, c = 1024, a = nan
lub wskutek piętrze():
double a = floor(b); //b = 2024, a = nan
duplikaty obliczania i wykorzystania snu() zapobiec występowaniu tego problemu:
a = b * c; //a = nan
a = b * c; //a = 0
a = floor(b); //a = nan
a = floor(b); //a = 2024
sleep(1);
a = b * c; //a = 0
sleep(1);
a = floor(b); //a = 2024
CPU jest AMD Athlon (tm) 64 X2 dual Core Processor 3400+
CPU temp:
k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp: -1В°C
Core0 Temp: -2В°C
Core1 Temp: +3В°C
Core1 Temp: +7В°C
Adapter: SMBus PIIX4 adapter at 0b00
M/B Temp: +30В°C (low = +0В°C, high = +85В°C)
CPU Temp: +28.5В°C (low = +0.0В°C, high = +85.0В°C)
M/B Crit: +85В°C (hyst = +75В°C)
CPU Crit: +124В°C (hyst = +114В°C)
Może to kwestia być wynikiem funkcji taktowania CPU? A może istnieją inne przyczyny tego problemu?
UPDATE
dowiedziałem się następujący program produktów nan na tym komputerze:
double a, b, c;
while(1) {
a = 0;
b = 1024;
c = a * b; //c will be nan within 10-20 sec.
}
To naprawdę dziwne. –
To zdecydowanie wydaje się być problemem specyficznym dla komputera. Czy to podkręcasz? W jakiej temperaturze działa? – Kaslai
NAN oznacza "nie numer", to jest to, co bezprawne operacje zmiennoprzecinkowe powracają. Żaden z cytowanych nie kwalifikuje się. – vonbrand