Как стать автором
Обновить
69
Карма
0
Рейтинг
Артём Караваев @ArtemKaravaev

Математик-программист

  • Подписчики 32
  • Подписки 2

Учебный видео-курс по арифметике с плавающей запятой в формате IEEE-754. Часть I

Я пиарюсь
Арифметика с плавающей запятой хорошо понятна далеко не всем программистам. Раньше я работал в разных IT-фирмах и с удивлением обнаруживал, что даже опытные программисты теряются, когда возникает задача подобрать $\varepsilon$ для сравнения двух чисел с плавающей запятой в коде вроде такого:

if (abs (a-b) < EPS) . . .

Они наивно выбирали одно и то же число типа 1e-8 для всех своих проектов, создавая тем самым потенциальное место проявление суровых ошибок. Более того, они пытались сравнивать два числа типа double вот так:

if (a < b) . . .

не понимая, за что же я их ругал, когда видел подобные глупости. Я уже не говорю о том, какой ужас могла вызвать константа типа 0x400921fb54442d18 (всего лишь число $\pi$), которую можно увидеть в некоторых старых программах или на экране отладчика.


Читать дальше →
Всего голосов 16: ↑12 и ↓4 +8
Просмотры 4.2K
Комментарии 5

Ну а чего вы хотели?

Читальный зал Научная фантастика
Друзья, это не формат моего блога, не повествование о компьютерной арифметике, а художественный рассказ, который я написал более 4-х лет назад и публиковал ранее в своём старом, уже закрытом блоге. Рассказ во многом связан с темой выбора профессии, жизненного пути и в нём есть чуть-чуть математики, я решил, что для посетителей Хабра он подходит лучше остальных моих работ по этому направлению и изложенные мысли достойны вашего внимания. Большинство из вас узнают в рассказе острые проблемы общества и о чём-то задумаются. А может просто развлекутся, что тоже хорошо.

Хочу сразу оговориться: я не вступаю в дискуссию по поводу содержания своих рассказов, на вопросы по этой теме не отвечаю, поэтому моих комментариев под этим постом не будет. Скажу только, что я отношусь к категории тех, кто в рассказе косвенно критикуется: мои дипломы на 100% забиты оценками “отлично” без единого исключения, и мыслю я по обывательски-поверхностно. Но помечтать о таком Институте из рассказа я ведь право имею? :) Тем более что он уже существует…

В тексте есть отсылка к одному из реально существующих социальных проектов (Социальное Лесничество), который столкнулся с крахом в этом году, но я прошу вас не обращать на него внимания, просто из песни слов не выкинешь, не стал вырезать.

А ещё рассказ НЕ отражает моего личного мнения ни об академии наук, ни о соревнованиях в программировании, ни о чём вообще. Это именно художественный вымысел.
Приятного чтения!
Всего голосов 20: ↑14 и ↓6 +8
Просмотры 4.8K
Комментарии 9

Наиболее точное скалярное произведение векторов типа double. Вычисление значения полинома

Программирование *Алгоритмы *
В прошлой статье речь шла о том, как можно сложить массив из чисел типа double наиболее точно, то есть получить такую сумму, как если бы мы выполняли вычисления в рамках арифметики с бесконечной точностью, а затем один раз округлили бы результат. Был показан алгоритм, который эквивалентен применению типа данных double-double, в котором сложение происходит сразу в двух переменных: основная сумма и хвостик-погрешность. Опытные читатели сразу догадались, что сложение хвостиков-погрешностей также допускает по отношению к себе рекурсивное применение того же алгоритма, что приводит не к удвоенной, а к утроенной точности, и вообще, можно организовать каскад сложений произвольного размера, получая любую наперёд заданную точность расчётов, поэтому фактически в прошлой статье была показана предпосылка к так называемой «дробной длинной арифметике». Опытный программист без труда разберётся как её реализовать, ну а я обещал дать аналогичные фундаментальные основы для скалярного произведения и вычисления полинома в точке. Поскольку все базовые вводные слова уже были сказаны в двух предшествующих статьях, в этой будет меньше «воды» и «лишних», по мнению опытных математиков, сведений. Прошу под кат.

Всего голосов 41: ↑41 и ↓0 +41
Просмотры 9.3K
Комментарии 33

Можно ли сложить N чисел типа double наиболее точно?

Программирование *Алгоритмы *

В предыдущих сериях…


Прошлая статья рассказала о двух способах сложения двух двоичных чисел с плавающей запятой без потери точности. Чтобы добиться этого, мы представили сумму c=a+b в виде двух чисел (s,t)=a+b, причём таких, что s — наиболее близкое к a+b точно-представимое число, а t=(a+b)-s — это отсекаемая в результате округления часть, составляющая точную погрешность. У читателей был вопрос: а можно ли достаточно точно сложить массив чисел типа double? Оказывается, можно! Но только, вероятно, не всегда и не абсолютно… и не алгоритмом Кэхэна, который тогда вспоминали в комментариях. За подробностями прошу под кат, где мы и найдём приложение тому, о чём я рассказал в прошлый раз.


Всего голосов 76: ↑76 и ↓0 +76
Просмотры 22K
Комментарии 45

Сложение двух чисел с плавающей запятой без потери точности

Программирование *Алгоритмы *
Здравствуйте, друзья, как вы думаете, если мы напишем такой код:

s = a+b;
z = s-a;
t = b-z;

то не кажется ли вам, что в результате его выполнения получится, что t=0? С точки зрения привычной математики действительных чисел это и правда так, а вот с точки зрения двоичной арифметики с плавающей запятой в переменной t будет кое-что другое. Там будет то, что спасает нас от потери точности при сложении чисел $a$ и $b$. Кого интересует данная тема, прошу под кат.

Всего голосов 139: ↑137 и ↓2 +135
Просмотры 54K
Комментарии 172

Table-Maker's Dilemma, или почему почти все трансцендентные элементарные функции округляются неправильно

Алгоритмы *Математика *
Из песочницы
С удивлением обнаружил, что на русском языке трудно отыскать информацию по данной проблеме, как будто мало кого волнует, что математические библиотеки, используемые в современных компиляторах, иногда не дают корректно-округлённого результата. Меня эта ситуация волнует, так как я как раз занимаюсь разработкой таких математических библиотек. В иностранной литературе эта проблема освещена хорошо, вот я и решил в научно-популярной форме изложить её на русском языке, опираясь на западные источники и пока ещё небольшой личный опыт.
Всего голосов 53: ↑53 и ↓0 +53
Просмотры 6.4K
Комментарии 83

Информация

В рейтинге
Не участвует
Откуда
Белгород, Белгородская обл., Россия
Дата рождения
Зарегистрирован
Активность