Учебный курс по IEEE-754 :: S01E08 :: Неожиданные эффекты, практич. рекомендации по использованию

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 พ.ย. 2024

ความคิดเห็น • 5

  • @Ssilki_V_Profile
    @Ssilki_V_Profile 5 หลายเดือนก่อน +1

    Прекрасный канал, доходчиво. Было бы интересно увидеть разбор принципов работы таких трюков, как быстрый обратный корень.

  • @zealcomputing-rus
    @zealcomputing-rus  ปีที่แล้ว

    Первый урок здесь: th-cam.com/video/CHP5FAb_XPc/w-d-xo.html
    Это последний урок первой части курса.
    Практические рекомендации по применению арифметики с плавающей запятой. Некоторые уже описанные особенности и новые моменты: потеря коммутативности, ассоциативности, неожиданные проявления так называемой «невозмутимости». И самый важный совет! Этот совет поможет вам избежать почти 100% всех ошибок в типовых неответственных задачах. Далее пойдёт обсуждение ошибки двойного округления, катастрофическая потеря значащих цифр: когда и как возникает. В общем, вся простая практика, не требующая высшей математики, описана в этом уроке.
    ✦ Сообщество ТГ: t.me/zealcomputing_rus
    ✦ Сообщество ВК: vk.com/zealcomputing

  • @Sergei_Goncharov
    @Sergei_Goncharov 2 ปีที่แล้ว +1

    Я так понимаю, алгоритм суммирования массива на слайде 6:40 - это алгоритм Кэхэна (или Кэхэна-Бабушки) (Kahan summation algorithm). Однако этот алгоритм не даёт гарантии отсутствия потери точности, он только уменьшает величину ошибки.
    Есть модификации этого алгоритма - алгоритм Ньюмайера и алгоритм Клейна.
    Правильно ли я понимаю, что на сегодняшний день не существует алгоритма, который гарантировал бы суммирование ряда с получением всех правильных разрядов результата (естественно, с учётом ошибки округления)?

    • @zealcomputing-rus
      @zealcomputing-rus  2 ปีที่แล้ว

      Привет, Сергей. Да, это алгоритм Кэхэна, и есть ряд других, более точных, часть из них описана в другом видео: th-cam.com/video/qi193h_dsyg/w-d-xo.html
      Там же показано, как алгоритм Кэхэна может работать хуже наивного сложения.
      Естественно, если мы попытаемся сложить самое большое и самое маленькое число из диапазона (например) double, то мы НИКАК вообще не получим точное значение, если не возьмём несколько десятков тысяч бит. Но из алгоритмов, описанных в указанном ролике можно построить сколько угодно длинный "каскад" по типу целочисленной длинной арифметики, но, как бы, в другую сторону. Абсолютная точность будет гарантирована, если число бит, которые у нас есть, больше чем нужно на хранение мантиссы.
      Иными словами, все эти алгоритмы основаны на простом приёме увеличения точности за счёт дополнительной переменной. Применяя это каскадно, мы можем взять 3, 4, 10, 1000 переменных и увеличивать точность покуда хотим. Вопрос лишь в объеме памяти и времени на вычисления.
      Это как длинная арифметика с целыми числами. Только как бы в другую сторону. Точность гарантируется, если мы не вылезаем за пределы возможного диапазона. То есть если число бит на точное представление мантиссы достаточное, всё будет точно.

  • @ФаинаД-ь3в
    @ФаинаД-ь3в ปีที่แล้ว

    По- моему Вы ошиблись на 14.46 сказав, что отличие одного числа от другого начинается, когда их разница становится меньше 0,005. По логике, если нас интересует точность до сотых , то если разность чисел меньше 0,005 то это одинаковые числа?