[C] Что значит 1.#QNB ?

tema8144

что означает в си это чудо-число?

Olenenok

Это не число вовсе, на ноль не делил?

tema8144

при делении на ноль получается число 1.#INF - эти я уже исправил
остались тока 1.#QNB
а из-за чего может быть?
мож это значит, что я там корень из отрицательного где извлек или логарифм посчитал? 
или в таких случаях получается 1.#IND?
кста, сейчас еще 1.#QNAN получил
помню, что означает not a number, но в каких случаях возникает - забыл
 

rosali

NAN = INF - INF

tema8144

спс, а по субжу?

4223080


2 -- Скажи, что у тебя за компилятор. Я как-то на своем MSVS 6.0 замутил такую штуку -- написал в цикле вычисление различных случайных математических операторов над случайными аргументами . Такого зверя не выскакивало ни разу
В описании IA-32 Intel® Architecture Software Developer’s Manual тоже никаких упоминаний о таком

4223080

Есть предположение -- может это ошибка нормализации?
Дай дамп этого числа

tema8144

компилятор такой же
фигня эта исчезла, после того как перестал пытаться посчитать арккосинус от бесконечности и производить с ним дальнейшие вычисления

tema8144

не вопрос - только как это?

4223080

Дебагером. Например так:
Пусть на определенном моменте выполнения программы у тебя в переменной a появилось это число. Тогда в окне Watch запиши &a -- так узнаешь по какому адресу находится переменная. Потом идешь в меню View --> Debug Windows --> Memory (по-умолчанию хот-кей -- Alt+6) Выделяешь там несколько строчек и копи-пасте. Должно получицца что-то типа такого:

0012FF48 00 00 00 00 00 00 ......
0012FF4E F0 7F 00 00 00 00 р.....
0012FF54 00 00 F0 FF 00 00 ..ря..
0012FF5A 00 00 00 00 F0 FF ....ря
0012FF60 00 00 00 00 00 00 ......
0012FF66 14 C0 00 00 00 00 .А....

tema8144

на самом деле я сейчас слишком много уже чего наисправлял, и сделать так чтоб это число снова получалось не так-то просто
но если еще вылезет - выложу

4223080

Кинь в приват, если будет -- а то интересно стало, а бывает так, что я форум перестаю смотреть на длительное время.
кстати, арккосинус от бесконечности (как + так и -) определяется в watch как -1.#IND000000000
При этом он равен FF F8 00 00 00 00 00 00
т.е. дамп такой:

0012FF48 00 00 00 00 00 00 ......
0012FF4E F8 FF 00 00 00 00 шя....

Мануал называет при этом его Negative Quiet Pseudo-NaN
Такое число можно получить и прощще -- поделив (или вычтя) бесконечность на бесконечность

tema8144

знаю, но я же писал, что потом с ним(арккосинусом) еще много чего творил, что и привело к получению субжа
Оставить комментарий
Имя или ник:
Комментарий: