Вычисления π к “бесконечной” двоичной точности в C#

В одном продукте я продолжаю работать, мы используем его много, но Отражение является комплексом, медленным зверем. Не идите, ища места для использования его просто, потому что это звучит как забава или интересный. Вы будете использовать его при столкновении с проблемой, которая не может быть решена никаким другим способом (динамично загружающий блоки для разъема ins или платформ, контроля блока, фабрики, где типы не, знают в сборке, и т.д.). Конечно, стоит посмотреть на отражательные учебные руководства, чтобы видеть, как это работает, но не попадайте в прерывание "наличия молотка и всего бывшего похожего на гвоздь". Это получено очень специализированные варианты использования.

6
задан Community 8 February 2017 в 14:16
поделиться

4 ответа

Поскольку вы запрашиваете версию Haskell, вот статья Ежи Карчмарчука под названием «Самая ненадежная техника в мире для вычисления π»:

Эта статья представляет собой нетипичное упражнение в ленивое функциональное кодирование, написанное для развлечения и инструкция. Это можно прочитать и понятен всем, кто понимает язык программирования Haskell. Мы покажем, как реализовать Формула Бейли-Борвейна-Плу для π ко-рекурсивным, инкрементным способом который производит цифры 3, 1, 4, 1, 5, 9.. . до памяти истощение. Это не способ продолжай, если кому-то нужно много цифры! Наша стратегия кодирования порочный и опасный, и это доказуемо ломается. Он основан на арифметика в области бесконечные последовательности цифр представляющие правильные дроби развернуты в целочисленной базе. Мы показываем, как манипулировать: сложить, умножить на целое число и т. д. такие последовательности из слева направо до бесконечности, который явно не может работать во всех случаи из-за неясностей. Некоторые глубокие философские последствия обсуждается в выводах.

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

Также есть эта статья Джереми Гиббонс .

6
ответ дан 8 December 2019 в 16:05
поделиться

Wikipedia details a lot of ways to get numerical approximations of pi here. They also give some sample pseudo-code

Edit : If you're interested in this kind of mathematical problems without having any related real-world problem to solve (which is definitely a good attitude to have, IMHO), you could visit the Euler Project page

2
ответ дан 8 December 2019 в 16:05
поделиться

В динамических языках на основе DLR (например, IronPython ) существует такая возможность для обработки больших рациональных чисел. Или вы можете использовать любую переносимую реализацию больших действительных чисел на C / C ++ через P / Invoke .

2
ответ дан 8 December 2019 в 16:05
поделиться

Безусловно, мой любимый патрубок Haskell для числа Пи принадлежит Джереми Гиббонсу:

pi = g(1,0,1,1,3,3) where
    g(q,r,t,k,n,l) = 
        if 4*q+r-t<n*t
        then n : g(10*q,10*(r-n*t),t,k,div(10*(3*q+r))t-10*n,l)
        else g(q*k,(2*q+r)*l,t*l,k+1,div(q*(7*k+2)+r*l)(t*l),l+2)

Математический фон, который оправдывает эту реализацию, можно найти в:

Алгоритм патрубка для цифр числа Пи

5
ответ дан 8 December 2019 в 16:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: