Re[8]: Плавающая запятая
От: SergH Россия  
Дата: 04.05.08 14:03
Оценка:
Здравствуйте, Vain, Вы писали:

V>Про какие ошибки ты говоришь?


И диапазон мантиссы у IEEE 754 от 2 до 4-х.
И основание у меня в определении нормализации не упомянуто.
И мантисса видимо в доп коде, да? Или в обратном? Или не мантисса, а экспонента? На эту тему я никаких утверждений не дождался, только сомнения и намёки.

Но не суть. До новых встреч.
Делай что должно, и будь что будет
Re[9]: Плавающая запятая
От: Vain Россия google.ru
Дата: 04.05.08 14:26
Оценка:
Здравствуйте, SergH, Вы писали:

V>>Про какие ошибки ты говоришь?

SH>И диапазон мантиссы у IEEE 754 от 2 до 4-х.
Я написал, что "насколько я помню", а не сказал что так и есть. Это я не с потолка взял, а видел в одном документе, связанном с форматом плавающих чисел.
SH>И основание у меня в определении нормализации не упомянуто.
SH>И мантисса видимо в доп коде, да? Или в обратном? Или не мантисса, а экспонента? На эту тему я никаких утверждений не дождался, только сомнения и намёки.
Диапазон порядка нессиметричен, что является признаком доп. кода.
SH>Но не суть. До новых встреч.
Написав статью, как я понимаю, ты взял на себя обязательство сделать её лучше, но на мои предложения ты непонятно почему сопротивляешься и отвечаешь в том же духе в котором сам не хочешь чтоб с тобой говорили, угу, очень красиво.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: Плавающая запятая
От: Erop Россия  
Дата: 04.05.08 14:31
Оценка: 10 (1) +1
Здравствуйте, SergH, Вы писали:

MS>>Например, надо было явно сказать, почему выражение fabs(a-b)<=DBL__EPSILON является полной лажей — а ведь им сразу начинают пользоваться ламеры, как только узнают, что нельзя сравнивать числа с плавающей точкой на равенство.

SH>Объясни, почему это неправильно? Потому что помогает только 99% случаев, а не в 100%? Ну, что делать. Я рассчитываю, что, благодаря огромному диапазону double вычисления происходят всё-таки не на его краях.

Есть сразу две причины.
Ламерство #1: честное сравнение должно учитывать не абсолютную, а относительную ошибку. Если ты какую-то выкладку умножишь на 2**-8, то её точность не изменится (просто все порядки уменьшятся и всё), а вот твоя формула для сравнений окажется неверной.

Ламерство #2: Обычно при применений вычислений на практике есть какая-то заранее известная точность, с которой они ведутся. Так что соравнивать логичнее с этим пределом точности, а не с всякими константами, зависящими от аппаратуры...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Плавающая запятая
От: SergH Россия  
Дата: 04.05.08 14:40
Оценка:
Здравствуйте, Erop, Вы писали:

E>Есть сразу две причины.

E>Ламерство #1: честное сравнение должно учитывать не абсолютную, а относительную ошибку. Если ты какую-то выкладку умножишь на 2**-8, то её точность не изменится (просто все порядки уменьшятся и всё), а вот твоя формула для сравнений окажется неверной.

E>Ламерство #2: Обычно при применений вычислений на практике есть какая-то заранее известная точность, с которой они ведутся. Так что соравнивать логичнее с этим пределом точности, а не с всякими константами, зависящими от аппаратуры...


А что такое по твоему DBL__EPSILON? Если это граница точности double, т.е. единица младшего разряда при минимальном порядке, то, конечно, это лажа. Просто потому что ошибка будет больше. Если нет, то почему это "константа, зависящая от аппаратуры"?

Я считал, что это какое-то разумное значение, выбранное программистом, который примерно представляет, с какого масштаба числами он работает. И какой точности ему при этом хватит.
Делай что должно, и будь что будет
Re[10]: Плавающая запятая
От: SergH Россия  
Дата: 04.05.08 14:55
Оценка:
Здравствуйте, Vain, Вы писали:

Ок, продолжим про этику ведения дискуссий. Потом попросим ветку отделить и снести в мусорку.

V>Я написал, что "насколько я помню", а не сказал что так и есть. Это я не с потолка взял, а видел в одном документе, связанном с форматом плавающих чисел.


Во-первых, тот документ тебе наврал. Во-вторых, проверить это довольно просто. У тебя у самого получилось, правда, не с первой попытки. В-третьих, ты написал так:

И потом, в IEEE 754 мантисса в нормализованном виде, насколько я помню, лежит в диапазоне [2:4), чего я не обнаружил в тексте.


В тексте сказано, что она лежит в диапазоне [1, 2). То что ты этого не заметил, означает, что ты его невнимательно читал. Но критикуешь.

SH>>И основание у меня в определении нормализации не упомянуто.


Это осталось.

SH>>И мантисса видимо в доп коде, да? Или в обратном? Или не мантисса, а экспонента? На эту тему я никаких утверждений не дождался, только сомнения и намёки.

V>Диапазон порядка нессиметричен, что является признаком доп. кода.

Если прочитаешь всё-таки статью, то найдешь там формат, у которого смещение -2. Это "признак" какого кода?
Я же уже давал ссылку на описание в стандарте:

Numbers in the single and double formats are composed of the following three fields:
1. 1-bit sign s
2. Biased exponent e = E + bias
...


Ага? Хранится всегда положительное значение. От 0 до 2^n — 1. Для вычисления реального из него нужно вычесть смещение. Если, например, смещение равно -2, надо прибавить 2. Если, как у float, смещение равно 127, надо вычесть 127.

Всё, как у меня:

Показатель степени – целое число, он может быть как положительным, так и отрицательным. Видимо, для того, чтобы не возиться с отрицательными числами, обычно он хранится в виде беззнакового целого со смещением. А для того чтобы получить реальное значение показателя степени, нужно вычесть из записанного значения некоторую константу.


V>Написав статью, как я понимаю, ты взял на себя обязательство сделать её лучше,


Чего не брал, того не брал. Тем более не брал обязательств рассматривать все предложения всех читателей. Рассматриваю только корректно сформулированные, и никаких обязательств не даю.

V>но на мои предложения ты непонятно почему сопротивляешься и отвечаешь в том же духе в котором сам не хочешь чтоб с тобой говорили, угу, очень красиво.


Такие уж у тебя предложения. Неконкретны, непродуманы, в большинстве вызваны недопониманием и невнимательным чтением. На мои просьбы продумать, понять и прочитать внимательно ты выдвигаешь новые предложения — такие же.
Делай что должно, и будь что будет
Re[5]: Плавающая запятая
От: Erop Россия  
Дата: 04.05.08 15:37
Оценка: 9 (1)
Здравствуйте, SergH, Вы писали:

SH>А что такое по твоему DBL__EPSILON? Если это граница точности double, т.е. единица младшего разряда при минимальном порядке, то, конечно, это лажа. Просто потому что ошибка будет больше. Если нет, то почему это "константа, зависящая от аппаратуры"?


SH>Я считал, что это какое-то разумное значение, выбранное программистом, который примерно представляет, с какого масштаба числами он работает. И какой точности ему при этом хватит.


1) ID с двумя _ подряд в C/C++ AFAIK зарезервированы и не могут использоваться в прикладном коде.
2) DBL_EPSILON определена там же и обозначает самое маленькое положительное число, которое ещё можно добавить к 1.0 и получить отличный от 1.0 результат.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Плавающая запятая
От: SergH Россия  
Дата: 04.05.08 15:43
Оценка:
Здравствуйте, Erop, Вы писали:

E>1) ID с двумя _ подряд в C/C++ AFAIK зарезервированы и не могут использоваться в прикладном коде.


ммм.. Я думал, что только начинающиеся с __. И что в середине можно что угодно.. Но возможно я не прав, стандарт не читал.

E>2) DBL_EPSILON определена там же и обозначает самое маленькое положительное число, которое ещё можно добавить к 1.0 и получить отличный от 1.0 результат.


Спасибо, буду знать.
А насчёт:

Я считал, что это какое-то разумное значение, выбранное программистом, который примерно представляет, с какого масштаба числами он работает. И какой точности ему при этом хватит.


?

При таком подходе ламерство тоже где-то прячется или вопрос именно в выборе адекватного ситуации значение эпсилона?
Делай что должно, и будь что будет
Re[7]: Плавающая запятая
От: Erop Россия  
Дата: 04.05.08 16:29
Оценка:
Здравствуйте, SergH, Вы писали:

SH>При таком подходе ламерство тоже где-то прячется или вопрос именно в выборе адекватного ситуации значение эпсилона?


Вообще-то от задачи сильно всё зависит. Но обычно, если это какие-то расчёты, например вычматы, то смысл имеет именно относительная ошибка, а не абсолютная.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: Плавающая запятая
От: Vain Россия google.ru
Дата: 04.05.08 17:05
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Во-первых, тот документ тебе наврал.

Может быть, я не помню точно, про x86 или про другой формат.
SH>Во-вторых, проверить это довольно просто. У тебя у самого получилось, правда, не с первой попытки. В-третьих, ты написал так:
SH>

И потом, в IEEE 754 мантисса в нормализованном виде, насколько я помню, лежит в диапазоне [2:4), чего я не обнаружил в тексте.

SH>В тексте сказано, что она лежит в диапазоне [1, 2). То что ты этого не заметил, означает, что ты его невнимательно читал. Но критикуешь.
Здесь я ничего не критиковал.
SH>>>И мантисса видимо в доп коде, да? Или в обратном? Или не мантисса, а экспонента? На эту тему я никаких утверждений не дождался, только сомнения и намёки.
V>>Диапазон порядка нессиметричен, что является признаком доп. кода.
SH>Если прочитаешь всё-таки статью, то найдешь там формат, у которого смещение -2. Это "признак" какого кода?
Всё-таки, ты игнорируешь то что надо рассказать про типы кодировок.
V>>Написав статью, как я понимаю, ты взял на себя обязательство сделать её лучше,
SH>Чего не брал, того не брал. Тем более не брал обязательств рассматривать все предложения всех читателей. Рассматриваю только корректно сформулированные, и никаких обязательств не даю.
Ну ладно, раз ты не даёшь, то и мы не будем.
V>>но на мои предложения ты непонятно почему сопротивляешься и отвечаешь в том же духе в котором сам не хочешь чтоб с тобой говорили, угу, очень красиво.
SH>Такие уж у тебя предложения.
Уж какие есть.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: Плавающая запятая
От: Erop Россия  
Дата: 04.05.08 17:07
Оценка: 5 (1)
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Присоединяюсь к вопросу. И ещё — а как правильно?

Вот, например, моё самое первое сообщение на RSDN
Автор: Erop
Дата: 31.03.05
...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Плавающая запятая
От: SergH Россия  
Дата: 04.05.08 17:10
Оценка: +1
Здравствуйте, Vain, Вы писали:

V>Всё-таки, ты игнорируешь то что надо рассказать про типы кодировок.


Игнорировать это замалчивать и не отвечать, тогда в обсуждении хвосты повисают. А я не игнорирую, я честно и открыто отказываюсь. Конечно писать про кодировки в этой статье _не_ надо. Они тут не используются.

V>Уж какие есть.


В этом и проблема.
Делай что должно, и будь что будет
Re[3]: Плавающая запятая
От: McSeem2 США http://www.antigrain.com
Дата: 04.05.08 19:31
Оценка: 15 (1)
Здравствуйте, SergH, Вы писали:

SH>Почуствовал себя ламером Я именно так делаю. И даже в статье написал

SH>Объясни, почему это неправильно? Потому что помогает только 99% случаев, а не в 100%? Ну, что делать. Я рассчитываю, что, благодаря огромному диапазону double вычисления происходят всё-таки не на его краях.

Я об этом довольно злобно высказывался здесь: http://www.rsdn.ru/forum/message/2640596.1.aspx
Автор: McSeem2
Дата: 31.08.07

Вообще, в случае использования константного epsilon, мы фактически используем числа с плавающей точкой в качестве чисел с фиксированной точкой.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[4]: Плавающая запятая
От: SergH Россия  
Дата: 04.05.08 19:52
Оценка: +1
Здравствуйте, McSeem2, Вы писали:

MS>Я об этом довольно злобно высказывался здесь: http://www.rsdn.ru/forum/message/2640596.1.aspx
Автор: McSeem2
Дата: 31.08.07

MS>Вообще, в случае использования константного epsilon, мы фактически используем числа с плавающей точкой в качестве чисел с фиксированной точкой.

Ну, это вопрос подбора значения эпсилон. Да, получается фиксированная точка, но стоящая в нужном мне месте. А больше обычно и не нужно.

Исправления внесу.
Делай что должно, и будь что будет
Re: Плавающая запятая
От: SergH Россия  
Дата: 16.07.08 15:38
Оценка:
Здравствуйте, Сергей Холодилов, Вы писали:

СХ>Статья:

СХ>Плавающая запятая
Автор(ы): Сергей Холодилов
Дата: 15.03.2008
Если яблоко поровну разделить на троих, каждому достанется треть. Так в нашу жизнь входят дроби, примерно с теми же целями входят они и в программирование.. Но реализация дробей в виде типов данных float/double ведёт себя не совсем "математично". В чём причина отличий, как минимизировать их влияние на результат вычислений, как же всё это всё-таки реализовано и почему запятая плавает — читайте в статье.


Наконец-то написан и выложен апдейт, который я обещал три месяца назад
Изменений немного, фактически только добавился раздел "Сравнение". Хотелось больше, но не получилось ничего внятного, поэтому и тормозил так долго.
Делай что должно, и будь что будет
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.