Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Area of Circle

Boost , Chapter 1. Boost.Multiprecision , Examples

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Общее числовое программирование использует шаблоны для использования одного и того же кода для различных типов и функций с плавающей запятой. Рассмотрим область окружности a радиуса r, данную

a = π * r2

Область круга может быть вычислена в общем программировании с использованием Boost. Математика для константы π как показано ниже:

#include <boost/math/constants/constants.hpp>
template<typename T>
inline T area_of_a_circle(T r)
{
   using boost::math::constants::pi;
   return pi<T>() * r * r;
}

Можно использовать<area_of_a_circle()>со встроенными типами плавающих точек, а также с типами плавающих точек от Boost. Многоточность. В частности, рассмотрим систему с 4-байтовым одноточным поплавком, 8-байтным двухточным двойным, а также типом данных<cpp_dec_float_50>от Boost. Многоточность с 50 десятичными цифрами точности.

Мы можем вычислить и распечатать приблизительную площадь круга с радиусом 123/100 для<float>,<double>и<cpp_dec_float_50>с помощью программы ниже.

#include <iostream>
#include <iomanip>
#include <boost/multiprecision/cpp_dec_float.hpp>
using boost::multiprecision::cpp_dec_float_50;
int main(int, char**)
{
   const float r_f(float(123) / 100);
   const float a_f = area_of_a_circle(r_f);
   const double r_d(double(123) / 100);
   const double a_d = area_of_a_circle(r_d);
   const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100);
   const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp);
   // 4.75292
   std::cout
      << std::setprecision(std::numeric_limits<float>::digits10)
      << a_f
      << std::endl;
   // 4.752915525616
   std::cout
      << std::setprecision(std::numeric_limits<double>::digits10)
      << a_d
      << std::endl;
   // 4.7529155256159981904701331745635599135018975843146
   std::cout
      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
      << a_mp
      << std::endl;
}

В следующем примере мы рассмотрим вызов как стандартной библиотеки, так и Boost. Математические функции внутри общего кода. Мы также покажем, как справляться с аргументами шаблонов, которые являются шаблонами выражений, а не типами чисел.


PrevUpHomeNext

Статья Area of Circle раздела Chapter 1. Boost.Multiprecision Examples может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Examples ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 07:15:00/0.0079069137573242/1