Re: Как увеличить точность на С\С++???

karavan

Мой си при вычисления с double и long double дает после запятой 17 знаков, как увеличить точноть до 50-100 знаков?

Ober

Можно воспользоваться библиотекой gnu mp, например.

lili197602

А если не секрет, зачем такая точность?

karavan

если не секрет, зачем такая точность?
нет не секрет
у меня есть ряд из трансцендентных значений который сходится к рациональному число. Чтобы вычислить рациональное число надо найти его период, за 25 знаков это сделать не удается =(

pilot

Python спасет тебя.

sevast82

Тогда имеет смысл рассмотреть вариант с языком Ada, хоть это и противоречит формулировке вопроса.

Olenenok

Ну и чушь, ботай представления чисел.

margadon

зачем сразу питон? выше же посоветовали С библиотеку для работы с длинными числами
если отходить от С/С++, то почему тогда уж не какой-нибудь Maple?
2: "язык ада"
//на правах флуда, не удержался

amudrik

2:
Спасибо, можешь выложить примерчик?

amudrik

2:
В чем чушь?

Ober

Примерчик прямо сейчас не достану, но есть отлично написанная документация, которую я когда-то читал.
upd: Там должно хватить глав GMP Basics и Floating-point Functions.

Olenenok

Если уж задавал вопрос по C/C++, то надо было спрашивать про библиотеки для этой цели, а не про языковые средства.

amudrik

2:
Не знаешь как возводить mpf_t в степень mpf_t?

kruzer25

Чтобы вычислить рациональное число надо найти его период, за 25 знаков это сделать не удается =(
Могу тебя огорчить - и за 250 знаков не удастся.
Даже больше того, если ты знаешь, что твоё число равно n/10^k (а это гораздо уже просто рациональных) - всё равно никакое количество известных знаков не позволит тебе узнать это число.

amudrik

Могу тебя огорчить - и за 250 знаков не удастся.
Даже больше того, если ты знаешь, что твоё число равно n/10^k (а это гораздо уже просто рациональных) - всё равно никакое количество известных знаков не позволит тебе узнать это число.
2:
да период может быть и очень большим. Но всетаки надежда есть

bleyman

Короче, это нужно делать нормальными математическими методами, выдающими по цифре за действие (например, алгоритмом деления в столбик). А не "возьмём от балды число с 250 знаками после запятой, разделим и, посмотрим, нет ли там периода".

disna

наверное имеется в виду, что если цифры повторяются, то это не значит, что ты нашел период
смотри: 0,12312312341231231234....

SPARTAK3959

Рациональность числа надо проверять не поиском периода, а разложением в цепную дробь (то бишь проводим процесс $x_{n+1}=\{x_n^{-1}\}$ до тех пор, пока не получим число очень близкое к нулю, а потом идем назад восстанавливая дробь)! Если знаменатель меньше 10^7, то 17 знаков хватит с головой.

amudrik

Рациональность числа надо проверять не поиском периода, а разложением в цепную дробь (то бишь проводим процесс $x_{n+1}=\{x_n^{-1}\}$ до тех пор, пока не получим число очень близкое к нулю, а потом идем назад восстанавливая дробь)! Если знаменатель меньше 10^7, то 17 знаков хватит с головой.
Можно по подробнее. Я сначала считаю сумму, а потом хочу установить сходится ли эта сумма к рациональному. Что предлагаешь ты, устанавливать является ли полученное число рациональным? Так оно заведомо будет рациональным!

yolki

все числа в компьютере рациональные

a10063

Могу тебя огорчить - и за 250 знаков не удастся.
более того, даже если все знаки (точнее, каждый знак) известны, то за конечное время все равно не удастся
я думаю, здесь у автора что-то вроде догадок - мб, полученное значение как-то поможет ему в мат. доказательстве; в противном случае его затея действительно бессмысленна

SPARTAK3959

Этот метод не только установит, что число рациональное, но и позволит восстановить дробь. Для этого нужно запоминать на каждом шаге отбрасываемые целые части (то есть [x_n^{-1}]). После чего проводим обратный процесс: x_n=1/(a_n+x_{n+1} где a_n - запомненная целая часть. В общем, запости число с 17 знаками - может мне быстрее будет к нему применить этот алгоритм, чем объяснять его.
PS Так же о непрерывных дробях можно почитать здесь: http://ru.wikipedia.org/wiki/Непрерывная_дробь

virrus

Цепные дроби хорошо приближают - оценка на погрешность оценки числа \alfa цепной дробью P/Q такая:
|\alfa - P/Q| < 1/(Q^2)
Цепные (непрерывные) дроби удобны для приближения иррациональных чисел и рациональных чисел с очень большими знаменателями.
Кстати, в старинных часах передаточное число соприкасающихся шестерён делали в виде цепной дроби, приближающей числа вроде "сколько в году недель" и тому подобные.

amudrik

я думаю, здесь у автора что-то вроде догадок - мб, полученное значение как-то поможет ему в мат. доказательстве; в противном случае его затея действительно бессмыслен
Именно так, мне нужно проверить гипотизу. Правда ли то, что получилось (что число рационально) и соответственно проверять рассуждения или искать мат. способы получения его.

kruzer25

А как по-твоему, у дробей вида n/10^k какой период?
Хочешь, обрадую? То число, которое у тебя получилось, уже рациональное, и имеет именно такой (n/10^k) вид

vertyal17

Период у нее длиной 1, вида "0".
Не обсуждая вопросов осмысленности, не вижу запретов, для применения алгоримтов ищущих период.

kruzer25

Период у нее длиной 1, вида "0".
Ну и чем эта дробь тебя не устраивает?

mysha

невычислимые задачи - единственный запрет, но он равносилен осмысленности

vertyal17

невычислимые задачи - единственный запрет, но он равносилен осмысленности
Неверно.
Вычислить самое большое простое число - задача невычислимая даже теоретически. Тем не менее многие занимаются, и в этом даже есть смысл, тк большие простые числа используются в криптографии.
То, что решение своей задачи автор считает осмысленным, значит это так и есть (для него)

barbos

Никто и не ищет самое большое простое число.

vertyal17

в гугл в гугл товарищи
например http://www.google.ru/search?hl=ru&q=%D0%BD%D0%B0%D0%B9%D..., http://www.mersenne.org/
Да и вообще примеров много теоретически в общем случае точно не вычислимых задач, которыми люди занимаются или в надежде получить какието частные решения, или в надежде нейти приближенные решения или еще в каких своих целях, которые они считают осмысленными.

barbos

Различай не вычислимые и не разумные. Никто разумный не станет искать "самое большое простое число", так как его не существует.

poi1981

что не мешает искать простое число большее самого большого, известного на данный момент

barbos

Ага

alexkravchuk

но только поиск самых больших простых чисел, это, прошу прощения, интеллектуальный онанизм какой-то, так как пользы от этого никакой, ни для науки, ни для чего-то прикладного вроде криптографии. Здесь самоцель - посоревноваться, найти какую-нибудь сложную и понятную при этом вычислительную задачу, и потом дружно бить рекорды друг друга Just for fun...

Elina74

Ты, конечно, можешь мне не поверить, но я недавно в компьютерре читал, что именно большие простые числа дают шанс криптографам шифровать что-либо весьма надежно.

alexkravchuk

хватит стебаться. Для криптографии простые числа большие, чем несколько тысяч бит, не нужны. Ищут же числа в несколько миллионов бит, которые, к тому же, после того, как найдены, становятся всем известны. А где нет секрета, там нет криптографии

Marinavo_0507

опять даёшь ссылку на википедию, которую сам не прочитал?

vertyal17

Различай не вычислимые и не разумные. Никто разумный не станет искать "самое большое простое число", так как его не существует.
Было сделано утверждение - раз задача принципиально невычислимая это равносильно бессмысленности.
Я с этим не согласен.
Против утверждения о бессмысленности неразумных задач я ничего не говорил. И не надо хитрить и перескакивать приписывая мне это.

barbos

Так зачем ты писал про самое большое число? Выражай свои мысли яснее.

vertyal17

про самое большое число
Никогда я такого не говорил, выражайтесь точнее.
Я выражался относительно посика простых чисел совершенно точно и конкретно. Если проблемы с чтением это не ко мне.

bleyman

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

barbos

Вычислить самое большое простое число - задача невычислимая даже теоретически. Тем не менее многие занимаются и в этом даже есть смысл, тк большие простые числа используются в криптографии.
А это что?

Sebasten

Надеюсь, что ты юзал boost::mt19937, а не изобретал велосипед

Marinavo_0507

Если б прочитал, то увидел бы, что там написано о непригодности данного генератора для криптографии. (А если хеш добавить, то всё упрётся в стойкость хеша, и афигенно большие простые числа не помогут).

bleyman

Я фигею.
Криптография - не единственная область применения RNG. Более того, она даже никаким боком не основная область применения RNG.

Ivan8209

Ты считаешь, что это самый лучший генератор?
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Имя или ник:
Комментарий: