Форум программистов, компьютерный форум CyberForum.ru

Как заранее определить точность для мантиссы (GMP) - C++

Восстановить пароль Регистрация
 
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
29.10.2013, 21:31     Как заранее определить точность для мантиссы (GMP) #1
Чтобы работать с числами с плавающей точкой в GMP, нужно заранее указать, сколько бит отвести для мантиссы.
В доке пишут, что используется только фактически нужное количество бит для текущего вычисления.

Поэтому я, не долго думая, указал точность примерно 2 000 000 000 бит. В итоге даже для маленьких чисел программа работает секунд 20.

Собственно, как предугадать нужную точность? Мне могут потребоваться как Астрономически большие числа, так и пренебрежительно малые, так и обычные повседневные (средние).

P.s. точность можно менять во время выполнения но дополнительно вычислять размер входного числа (если у него несколько миллиардов знаков), чтобы оценить нужную точность, я думаю, не целесообразно с точки зрения производительности.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 21:31     Как заранее определить точность для мантиссы (GMP)
Посмотрите здесь:

Как задать точность округления в среде разработки? C++
Как задать точность? C++
Как задать максимальную точность? C++
Почему точность Double такая же как у Float ? C++
C++ как добавить точность эпсилон
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
29.10.2013, 22:04     Как заранее определить точность для мантиссы (GMP) #2

Не по теме:

Честно говоря тоже возникал такой вопрос, если найдешь решение отпишись...



Добавлено через 11 минут
Ммм подумав : может тебе стоит при расчетах проверять условие которое и будет задавать точность/отклонение ?

Добавлено через 3 минуты
К примеру в "моем блоге" мне нужно было только 1000 знаков, но я считал по слагаемым :

C++
1
2
3
4
5
6
7
for(int i=0; i<n; i++)
  {
     mpf_add(u,two,u);
     mpf_sqrt(u,u);
     mpf_mul(p,p,u);
     mpf_div(p,p,two);
  }
Хотя результат можно было каждый раз сравнивать с эталонным и если что выходить из цикла
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
29.10.2013, 22:05  [ТС]     Как заранее определить точность для мантиссы (GMP) #3
Avazart, Я вот подумал... Очень большие числа мы будем брать из файла, а его размер уже подсчитала операционная система. Можно задавать точность для mpf_t исходя из размера файла в файловой системе. Или это бредовая идея?
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
29.10.2013, 23:06     Как заранее определить точность для мантиссы (GMP) #4
Цитата Сообщение от gromo Посмотреть сообщение
Очень большие числа мы будем брать из файла, а его размер уже подсчитала операционная система.
Все зависит в каком виде там записаны данные, строка!= представление числа в памяти
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 16:11  [ТС]     Как заранее определить точность для мантиссы (GMP) #5
Цитата Сообщение от Avazart Посмотреть сообщение
Все зависит в каком виде там записаны данные, строка!= представление числа в памяти
хмм... В виде простого текстового формата (с фиксированной точкой, например). Файл не хитро- бинарный, если речь об этом.

Добавлено через 16 часов 45 минут

Не по теме:

Up! Господа, неужели никто больше не сталкивался с такой проблемой?

Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.10.2013, 16:16     Как заранее определить точность для мантиссы (GMP) #6
Так записывай файл точность а потом считай ее ...
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 16:54  [ТС]     Как заранее определить точность для мантиссы (GMP) #7
Цитата Сообщение от Avazart Посмотреть сообщение
записывай файл точность а потом считай ее ...
Простите, не вижу связи слов в предложении. Можно расшифровать?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.10.2013, 16:57     Как заранее определить точность для мантиссы (GMP) #8
gromo, Записать в файл не только число, но и точность которая нужна, после чего считать и установить нужную.
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 17:04  [ТС]     Как заранее определить точность для мантиссы (GMP) #9
Цитата Сообщение от ForEveR Посмотреть сообщение
Записать в файл не только число, но и точность которая нужна, после чего считать и установить нужную.
Вопрос был в том, как определить точность заранее (в названии темы). Если она уже есть, то какие проблемы-то
А какое соответствие межу значением точности в битах, и количеством максимально возможных представимых разрядов (в GMP)? нигде об этом не написано =(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2013, 18:02     Как заранее определить точность для мантиссы (GMP)
Еще ссылки по теме:

C++ Найти объём сферы методом Монте-Карло и определить точность
C++ Численное интегрирование (метод трапеций). Как гарантировать нужную точность?
C++ Вывод мантиссы числа на экран

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
30.10.2013, 18:02     Как заранее определить точность для мантиссы (GMP) #10
Цитата Сообщение от gromo Посмотреть сообщение
Вопрос был в том, как определить точность заранее (в названии темы).
Так что определять? Точность нужно задавать ту которая вам нужна...

Другое дело как определить точность в битах соответствующую к примеру числу с N числами после запятой.
Yandex
Объявления
30.10.2013, 18:02     Как заранее определить точность для мантиссы (GMP)
Ответ Создать тему
Опции темы

Текущее время: 00:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru