Форум программистов, компьютерный форум, киберфорум
Avazart
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Темы блога относятся к программированию на языке С++

В основном для C++Qt (Qt5.1) и C++ Builder (RAD 2009 и RAD XE3)

Использование библиотеки gmp на примере вычисления числа пи

Запись от Avazart размещена 15.06.2012 в 21:13
Показов 68532 Комментарии 11
Метки c++, gmp, число пи

Вычисление числа пи с точностью 1000 знаков после запятой с помощью формулы Франсуа Виета с применением библиотеки gmp.

Тестировалось в С++Builder2009

Нажмите на изображение для увеличения
Название: Формула.gif
Просмотров: 1066
Размер:	5.4 Кб
ID:	878
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//---------------------------------------------------------------------------
#include <iostream>
#include <stdio.h>
#include <windows.h>
 
#include "gmp.h"
#pragma comment (lib,"gmp-bcb.lib")
 
using namespace std;
 
int main()
{
   system("chcp 1251");
 
   mpf_set_default_prec(4096);// точность
   int n= 10000;  // кол-во слогаемых
   int k= 1000;  // число выводимых знаков
 
   mpf_t u,p,two,r;
   //  init
   mpf_init(u);  // числитель
   mpf_init(p);  // произведение 
   mpf_init(two);  //число 2
   mpf_init(r);   // результат
   //  set
   mpf_init_set_d(u,0);
   mpf_init_set_d(p,1);
   mpf_init_set_d(two,2);
   mpf_init_set_d(r,0);
   //
   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);
   }
 
   mpf_div(r,two,p);
   // print
   gmp_printf ("pi= %.*Ff \n",k,r);
 
   // clear
  mpf_clear(u);
  mpf_clear(p);
  mpf_clear(two);
  mpf_clear(r);
 
  system("pause");
  return 0;
}
//---------------------------------------------------------------------------
На скрине показана сверка с информацией из википедии http://ru.wikipedia.org/wiki/Пи

Нажмите на изображение для увеличения
Название: Сверка.gif
Просмотров: 1964
Размер:	66.4 Кб
ID:	879
Вложения
Тип файла: rar gmp Вычисление числа Пи.rar (370.2 Кб, 869 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 11
Комментарии
  1. Старый комментарий
    Аватар для Evg
    > с помощью формулы Франсуа Виета

    Я бы в скобках указал, что формула есть на скриншоте

    Так же я бы в удобном виде расписал комментарии во всех местах вычислений типа:

    C
    1
    2
    3
    4
    
     mpf_add(u,two,u);  // u = two + u
     mpf_sqrt(u,u);     // u = sqrt (u)
     mpf_mul(p,p,u);    // p = p * u
     mpf_div(p,p,two);  // p = p / two
    И код модно было бы нормально отформатировать. И добавить пояснение, каким образом библиотеку прикручивать к борландовскому проекту и т.п. Для порядку указать бы ссылку на gmp'шный сайт. Чтобы была нормальная законченная статья и могла реально принести пользу начинающим. А не так чтобы для галочки

    И статью бы назвал что-то типа "Использование библиотеки gmp на примере вычисления числа https://www.cyberforum.ru/cgi-bin/latex.cgi?\pi"
    Запись от Evg размещена 16.06.2012 в 11:17 Evg вне форума
  2. Старый комментарий
    Аватар для Avazart
    И код модно было бы нормально отформатировать.
    А что тут форматировать код в пару строк
    И добавить пояснение, каким образом библиотеку прикручивать к борландовскому проекту и т.п.
    Ну это уже отдельная статья...возможно напишу...
    С остальным согласен буду править...
    Запись от Avazart размещена 16.06.2012 в 14:52 Avazart вне форума
  3. Старый комментарий
    Аватар для Evg
    Цитата Сообщение от Avazart
    А что тут форматировать код в пару строк
    95 человек из 100 внутренности функций пишет с отступом. А ты - нет. Без отступов несколько напрягает смотреть. Просто если ты пишешь для себя - это одно, а если для людей - другое

    И у тебя после ссылки на википедию надо пробел поставить, а то текст слился
    Запись от Evg размещена 16.06.2012 в 16:37 Evg вне форума
  4. Старый комментарий
    Аватар для Avazart
    95 человек из 100 внутренности функций пишет с отступом. А ты - нет.
    Ну это их проблемы,стиль отступов дело сугубо индивидуальное...
    Меня например напрягает K&R. Но читать нужно уметь любой стиль
    Запись от Avazart размещена 16.06.2012 в 19:15 Avazart вне форума
  5. Старый комментарий
    Аватар для Evg
    Цитата Сообщение от Avazart
    Ну это их проблемы
    Дык потому и спрашиваю, ты для себя пишешь статью или для людей
    Запись от Evg размещена 17.06.2012 в 00:44 Evg вне форума
  6. Старый комментарий
    Аватар для Avazart
    Так что может соц опрос провести по поводу отступов?
    Запись от Avazart размещена 17.06.2012 в 01:51 Avazart вне форума
  7. Старый комментарий
    Аватар для snake32
    Я за отступы! Хотя конкретно этот код читается мной нормально.
    Запись от snake32 размещена 13.11.2012 в 13:57 snake32 вне форума
  8. Старый комментарий
    дубль
    Запись от vento702 размещена 11.12.2022 в 18:02 vento702 вне форума
  9. Старый комментарий
    Не нахожу вариант конвертации числа в строку, для вывода. Подскажите пожалуйста кто в курсе синтаксис.
    Запись от vento702 размещена 11.12.2022 в 18:02 vento702 вне форума
  10. Старый комментарий
    Мне кажется, что для вычисления числа пи есть формулы получше, например
    https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{\pi}{4} = \arctan(\frac15) - 4*\arctan(\frac{1}{239})<br />
    Запись от das1 размещена 12.12.2022 в 10:00 das1 вне форума
  11. Старый комментарий
    Аватар для XLAT
    Цитата Сообщение от vento702
    Не нахожу вариант конвертации числа в строку, для вывода. Подскажите пожалуйста кто в курсе синтаксис.
    Без библов:
    https://www.cyberforum.ru/post15333241.html
    GMP(алгоритм Брента — Саламина):
    https://www.cyberforum.ru/post15340388.html
    GMP на больших длинах пи сдыхает, поэтому MPIR
    https://www.cyberforum.ru/post15349005.html
    Запись от XLAT размещена 12.12.2022 в 11:12 XLAT вне форума
 
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru