Длинная арифметика :)

Тема в разделе "WASM.ZEN", создана пользователем Dart_Bobr, 11 май 2005.

  1. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    Блин, наверное немного не там искал, но не могу найти быстрых алгоритмов для реализации функций для длинных чисел (типа синус, косинус и т.д.). Единственное что мне пришло в голову - разложить в ряд Тейлора, но это по-моему самый глупый и медленый способ. Кто-то знает какие-то другие?
     
  2. NoName

    NoName New Member

    Публикаций:
    0
    Я знаю! Использование fpu.

    Там есть все основные тригонометрчиеские функции и некоторые дополнительные.
     
  3. Loger

    Loger New Member

    Публикаций:
    0
    Dart_Bobr

    Самый быстрый способ - поиск в таблице. Но точность будет очень маленькая (или таблица большая)

    Немного медленее, но гораздо точнее вычисление с помощью FPU

    Если точности FPU окажется мало (хотя я не представляю себе задачу, где нужна такая точность), то только ряд Тейлора



    см. также: http://algolist.manual.ru/maths/count_fast/sincos.php

    З. Ы. можешь посмотреть, как реализовано в GMP
     
  4. Loger

    Loger New Member

    Публикаций:
    0
    Есть, правда, ещё один способ

    вычисляешь tan(pi/2<sup>n</sup>), например, с помощью Mathematica с нужной точностью

    а потом используешь формулы

    tan(x+y)=(tan(x)+tan(y))/(1-tan(x)*tan(y))

    tan(2*x)=2*tan(x)/(1-tan(x)<sup>2</sup>)

    находишь tan(pi/2<sup>n-1</sup>), tan(pi/2<sup>n-2</sup>), ... и через них потом выражаешь tan(требуемого угла)
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Dart_Bobr







    Ты имеешь ввиду "много" знаков после запятой? Какая именно точность тебе нужна?
     
  6. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    Точность до нескольких миллионов знаков после запятой :)

    Просто в универе мега проэкт взялся писать (конечно не в одиночку :)). Что-то типа маткада. Поэтому точность fpu по-моему немного скромновата для такой цели.
     
  7. cresta

    cresta Active Member

    Публикаций:
    0




    Что-то говорит мне, что такие алгоритмы стоят пропорционально количеству знаков после запятой, и так просто в сети они не валяются :)
     
  8. slow

    slow New Member

    Публикаций:
    0
    для быстрого вычисления синусов/косинусов существует принцип Птолемея.

    алгоритмы быстрого сложения,умножения длинных чисел можно

    сделать на китайской теореме об остатках.

    и в чем собственно геморрой?
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Dart_Bobr







    Эмм... Как бы тебе сказать... :) Ты уже договорился с хозяевами компьютерного парка в Силиконовой долине о предоставлении сети для демонстрации дипломной работы? :))))
     
  10. nobody

    nobody New Member

    Публикаций:
    0
  11. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    А чем не устраивает разложить в ряд Тейлора. По-моему мнению это должно быть самым быстрым способою так, как Факториал вазрастает гараздо круче степенной функции.
     
  12. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    slow

    Кроме этих функций есть еще парочка других - типа експоненты, логарифма, вот собственно и гемморой :dntknw:

    Pavia

    Э-э-э, а причем здесь факториал? Мне бы метод побыстрее...

    nobody

    Thanks, щас почитаю :))
     
  13. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Pavia





    Угу, особенно если учесть что степенная функция будет вызываться для аргумента меньше единицы :)



    Dart_Bobr





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



    slow





    А можно описание этого принципа или ссылку на него? А то я про такой первый раз слышу и найти тоже не могу :dntknw:
     
  14. slow

    slow New Member

    Публикаций:
    0
    Блейхут

    "Быстрые алгоритмы цифровой обработки сигналов"

    (около 6мб, в Сети есть много ссылок)

    Введение



    и вообще советую эту книгу
     
  15. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Dart_Bobr

    Алгоритмы CORDIC
     
  16. slow

    slow New Member

    Публикаций:
    0
    Quantum :)))