| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > 50-разрядный калькулятор |
| Автор: kivankov 30.4.2012, 18:33 |
| Друзья! Прошу Вас проконсультировать меня по одному вопросу. Насколько реализуемой, и если реализуемой, то насколько трудоёмкой для исполнения в человеко-днях является создание библиотеки для операций с числами с мантиссой 50 разрядов? Т.е. по сути нужен 50-разрядный калькулятор. Минимальные необходимые действия: сложение, вычитание, умножение, деление, возведение в целочисленную степень (до 5), извлечение квадратного корня. Вопрос не праздный, есть конкретная задача. С уважением, Константин |
| Автор: nworm 30.4.2012, 18:45 |
| Трудоёмкой, но реализуемый. Надо смотреть вот на что. Обязательно надо именно 50 разрядов? Часто проще взять готовые библиотеки с похожим числом разрядов. Есть библиотеки для работы со коль угодно длинными целыми числами. Возможно, и для сколь угодно точных вещественных есть библиотеки. |
| Автор: kivankov 30.4.2012, 18:51 |
| Нет, минимум нужно 45-48 разрядов. 50 - это с запасом. Если больше - то не помешает. Калькулятор требуется для подтверждения гипотезы о существовании целого числа 4,16... E42 в связи с конкретной задачей. Лишние разряды не повредят. Спасибо за информацию, приму к сведению. А где можно поискать такие библиотеки? |
| Автор: Akina 30.4.2012, 18:59 |
| По-моему, найти библиотеку для работы со сверхдлинными числами, да ещё с таким простейшим набором действий - совершенно не проблема... |
| Автор: Фантом 30.4.2012, 19:16 |
Для решения одной конкретной задачи проще всего воспользоваться уже готовыми инструментами. В данном конкретном случае - любым достаточно универсальным пакетом компьютерной алгебры. |
| Автор: _Y_ 30.4.2012, 22:01 |
В конце 80х был такой язык Reduce. Это была первая мне известная компьютерная алгебра. В нем же можно было проводить вычисления с заданным, но ничем не ограниченным, числом знаков. Потом этот язык вошел в Maple, а сейчас, после многий преобразований, его потомство живет в Mathematica от Wolfram Research. Но, честно говоря, не знаю сохранилась ли там до сих пор возможность таких вычислений. В любом случае, стОит попробовать - море времени сэкономится. |
| Автор: volatile 1.5.2012, 00:17 |
Если только целые числа, то питон поддерживает бесконечную разрядность для целых чисел. можно даже онлайн: http://codepad.org/YFyA3AcS |
| Автор: disputant 1.5.2012, 06:45 | ||
REXX тоже умеет Для C/C++ давно использую http://www.tc.umn.edu/~ringx004/mapm-main.html (ну, так исторически получилось |
| Автор: _Y_ 1.5.2012, 23:07 | ||
Может сейчас Reduce и пакет, но когда я с ним работал был языком. В инструкции было написано Язык Reduce построенный на базе языка RLisp, в свою очередь построенного на базе Lisp (не дословно так как написано было по-английски). Как я понимаю, пакет это дополнение к имеющемуся языку или программе. А Reduce для работы не требовал предварительной установки чего-то еще. Работал я с ним сначала на больших машинах, а потом на чем-то настольном - не помню уже может это была система PDP-11 а может уже и DOS. Были у него лидирующие позиции или нет - не знаю. В то время что в руки попало подходящее с тем и работали. Интернета не было - С информацией слабо было. С Maple я никогда не работал - могу и ошибаться. А вот первая или вторая Mathematica брали мои старые Reduce-программы без необходимости какой-либо переработки. Так что, думаю, это все-таки был Reduce. Про другие системы я не в курсе - не приходилось сталкиваться. |
| Автор: volatile 1.5.2012, 23:42 |
косяки у нее были (щас не знаю как). мне вот http://www.ttmath.org/ttmath больше по душе. |
| Автор: Фантом 1.5.2012, 23:54 | ||
"Пакет" - это комплекс программ, предназначенный для решения задач из некоторой предметной области. Соответственно, частью пакета может быть интерпретатор некоторого языка. В такой ситуации пакеты и встроенные языки для них действительно часто смешивают. |
| Автор: disputant 2.5.2012, 12:52 | ||
А какие именно, не помните? Когда? |
| Автор: W4FhLF 2.5.2012, 15:04 |
| В новом наборе инструкций AVX регистры процессора 256разрядные. Это больше 50 значащих знаков. Но я не уверен, что с ними можно работать как с единым числом? Есть такие интересные пакеты: http://www.advanpix.com/ Где разрядность задаётся явно. |
| Автор: _Y_ 2.5.2012, 21:45 | ||
Хорошо, но тогда что, помимо интерпретатора входило в тот архаичный Reduce? |
| Автор: Фантом 2.5.2012, 23:31 | ||
Собственно система компьютерной алгебры. |
| Автор: volatile 3.5.2012, 00:17 | ||||||
disputant, мне когда-то (года ~2 назад) для одного проекта нужна была длинная арифметика, и я тестировал несколько разных библиотек. Все протестированные либы сложил в папочку, со своими комментариями. Щас посмотрел в ту папочку. Среди протестированных оказалась и MAPM. Вот мои комментарии того времени. (писал их исключительно для себя)
тестировалась либа в течение нескольких часов, так что глубоко не копал, но этого хватило чтобы отвергнуть ее. |
| Автор: disputant 3.5.2012, 06:16 |
| Спасибо, эти баги (со вводом) остались. Если бы быть уверенным, что в математике багов нет... с этими-то справиться достаточно легко, все равно у меня своя обертка. А, как вы справедливо заметили, MAPM очень легкая в использовании. На ttmath посмотрел - Open Watcom вообще не компилит, вылетает с run-time ошибкой... :( |
| Автор: _Y_ 3.5.2012, 21:07 | ||||
Ничего не понял. А что тогда язык Reduce если не система компьютерной алгебры? |
| Автор: Фантом 3.5.2012, 21:25 | ||
Хм... Вы всерьез не видите разницы между языком и компилятором/интерпретатором этого языка? |
| Автор: _Y_ 3.5.2012, 23:25 | ||
Мне кажется, что дискуссия ушла в какие-то семантические дебри. ИМХО если имеем некий продукт и этот продукт имеет всего одну основную функцию, то и категорируется он соответственно этой функции, а не по тому, что там внутри эту функцию обеспечивает. |
| Автор: Фантом 4.5.2012, 12:26 | ||
Ну как хотите. Ваш подход к именованию не является общепринятым, но, если Вам так удобнее, пожалуйста. |