Советы по программированию во вторник — это короткие статьи о различных интересных моментах, в основном из C++, но также и из других языков программирования, которые я использую. Вы также можете подписаться на хэштег #TuesdayCodingTips
в Mastodon и LinkedIn.
Начиная с C++20, вы можете включать заголовок <numbers>
и использовать многие часто используемые предварительно вычисленные математические константы, такие как Пи, Фи, квадратный корень из 2 и 3, натуральные логарифмы из 2 и 10 и многие другие! Более того, вы можете выбрать их точность, указав базовый тип через шаблон.
А начиная с C++17 заголовок <cmath>
содержит некоторые специальные математические функции, о которых я никогда не слышал, например, цилиндрические функции Бесселя, связанные с ними полиномы Лежандра или дзета-функцию Римана.
#include <iostream> #include <numbers> #include <iomanip> // std::setprecision #include <limits> // std::numeric_limits template<typename T> void printConstant(T value) { std::cout << std::setprecision(std::numeric_limits<T>::digits10 + 1); std::cout << value << std::endl; } int main() { using namespace std::numbers; printConstant(pi_v<float>); printConstant(pi_v<double>); printConstant(pi_v<long double>); /* Outputs: 3.141593 3.141592653589793 3.141592653589793239 */ }
- Константы описаны здесь: https://en.cppreference.com/w/cpp/numeric/constants.
- Специальные функции описаны здесь: https://en.cppreference.com/w/cpp/numeric/special_functions