天天看點

C++20 numbers 數學常數

C++20 numbers 數學常數

    • 01 C++20 numbers 數學常數
    • 02 測試

01 C++20 numbers 數學常數

c++20 在

<numbers>

頭檔案中增加了一些

數學常數

。1

數學常數 (C++20 起)定義于頭檔案 ,定義于命名空間

std::numbers

内聯常函數 常函數定義 數學常數 常數的值
inline constexpr double e

e_v<double>

e e e 2.718288183
inline constexpr double log2e

log2e_v<double>

l o g 2 e log_2{e} log2​e 1.4427
inline constexpr double log10e

log10e_v<double>

l o g 10 e log_{10}{e} log10​e 0.434294
inline constexpr double pi

pi_v<double>

π \pi π 3.14159265
inline constexpr double inv_pi

inv_pi_v<double>

1 π \dfrac{1}{\pi} π1​ 0.31831
inline constexpr double inv_sqrtpi

inv_sqrtpi_v<double>

1 π \dfrac{1}{\sqrt{\pi}} π

​1​

0.56419
inline constexpr double ln2

ln2_v<double>

ln ⁡ 2 \ln{2} ln2 0.693147
inline constexpr double ln10

ln10_v<double>

ln ⁡ 10 \ln{10} ln10 2.30259
inline constexpr double sqrt2

sqrt2_v<double>

2 \sqrt{2} 2

1.41421
inline constexpr double sqrt3

sqrt3_v<double>

3 \sqrt{3} 3

1.73205
inline constexpr double inv_sqrt3

inv_sqrt3_v<double>

1 3 \dfrac{1}{\sqrt{3}} 3

​1​

0.57735
inline constexpr double egamma

egamma_v<double>

歐拉常數 γ \gamma γ 0.5772156649
inline constexpr double phi

phi_v<double>

黃金比常數 Φ = 5 + 1 2 \Phi = \dfrac{\sqrt{5} + 1}{2} Φ=25

​+1​

0.6180339887

02 測試

在vs2019 的16.5中已經提供了

<numbers>

。測試效果如下:

https://github.com/5455945/cpp_demo/blob/master/C%2B%2B20/numbers/numbers.cpp

#include <numbers>
#include <iostream>

void test_numbers01() {
    std::cout << "std::numbers::e: " << std::numbers::e << " " << std::numbers::e_v<double> << std::endl;
    std::cout << "std::numbers::log2e: " << std::numbers::log2e << " " << std::numbers::log2e_v<double> << std::endl;
    std::cout << "std::numbers::log10e: " << std::numbers::log10e << " " << std::numbers::log10e_v<double> << std::endl;
    std::cout << "std::numbers::pi: " << std::numbers::pi << " " << std::numbers::pi_v<double> << std::endl;
    std::cout << "std::numbers::inv_pi: " << std::numbers::inv_pi << " " << std::numbers::inv_pi_v<double> << std::endl;
    std::cout << "std::numbers::inv_sqrtpi: " << std::numbers::inv_sqrtpi << " " << std::numbers::inv_sqrtpi_v<double> << std::endl;
    std::cout << "std::numbers::ln2: " << std::numbers::ln2 << " " << std::numbers::ln2_v<double> << std::endl;
    std::cout << "std::numbers::ln10: " << std::numbers::ln10 << " " << std::numbers::ln10_v<double> << std::endl;
    std::cout << "std::numbers::sqrt2: " << std::numbers::sqrt2 << " " << std::numbers::sqrt2_v<double> << std::endl;
    std::cout << "std::numbers::sqrt3: " << std::numbers::sqrt3 << " " << std::numbers::sqrt3_v<double> << std::endl;
    std::cout << "std::numbers::inv_sqrt3: " << std::numbers::inv_sqrt3 << " " << std::numbers::inv_sqrt3_v<double> << std::endl;
    std::cout << "std::numbers::egamma: " << std::numbers::egamma << " " << std::numbers::egamma_v<double> << std::endl;
    std::cout << "std::numbers::phi: " << std::numbers::phi << " " << std::numbers::phi_v<double> << std::endl;
    std::cout << "std::numbers::e: " << std::numbers::e << " " << std::numbers::e_v<double> << std::endl;
}

int main() {
    test_numbers01();
    return 0;
}
           

輸出:

std::numbers::e: 2.71828 2.71828
std::numbers::log2e: 1.4427 1.4427
std::numbers::log10e: 0.434294 0.434294
std::numbers::pi: 3.14159 3.14159
std::numbers::inv_pi: 0.31831 0.31831
std::numbers::inv_sqrtpi: 0.56419 0.56419
std::numbers::ln2: 0.693147 0.693147
std::numbers::ln10: 2.30259 2.30259
std::numbers::sqrt2: 1.41421 1.41421
std::numbers::sqrt3: 1.73205 1.73205
std::numbers::inv_sqrt3: 0.57735 0.57735
std::numbers::egamma: 0.577216 0.577216
std::numbers::phi: 1.61803 1.61803
std::numbers::e: 2.71828 2.71828
           
  1. 數學常數 ↩︎

繼續閱讀