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

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

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

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

      А ещё рассказ НЕ отражает моего личного мнения ни об академии наук, ни о соревнованиях в программировании, ни о чём вообще. Это именно художественный вымысел.
      Приятного чтения!
    • Наиболее точное скалярное произведение векторов типа double. Вычисление значения полинома

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

        Читать дальше →
      • Можно ли сложить N чисел типа double наиболее точно?

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


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


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

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

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

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

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

            С удивлением обнаружил, что на русском языке трудно отыскать информацию по данной проблеме, как будто мало кого волнует, что математические библиотеки, используемые в современных компиляторах, иногда не дают корректно-округлённого результата. Меня эта ситуация волнует, так как я как раз занимаюсь разработкой таких математических библиотек. В иностранной литературе эта проблема освещена хорошо, вот я и решил в научно-популярной форме изложить её на русском языке, опираясь на западные источники и пока ещё небольшой личный опыт.
            Читать дальше →