Use std::numbers constants

Part of modernizing to C++20.

Bug: None
No-IWYU: Other cleanup
Change-Id: I2c53789d845486436f37c887b216e7d502c915ac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/392104
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44662}
diff --git a/audio/audio_state_unittest.cc b/audio/audio_state_unittest.cc
index 6a98bdd..c886a13 100644
--- a/audio/audio_state_unittest.cc
+++ b/audio/audio_state_unittest.cc
@@ -11,6 +11,7 @@
 #include "audio/audio_state.h"
 
 #include <memory>
+#include <numbers>
 #include <utility>
 #include <vector>
 
@@ -150,7 +151,7 @@
   const int samples_per_channel = sample_rate_hz / 100;
   std::vector<int16_t> audio_data(samples_per_channel * num_channels, 0);
   // Fill the first channel with a 1kHz sine wave.
-  const float inc = (2 * 3.14159265f * 1000) / sample_rate_hz;
+  const float inc = (2 * std::numbers::pi_v<float> * 1000) / sample_rate_hz;
   float w = 0.f;
   for (int i = 0; i < samples_per_channel; ++i) {
     audio_data[i * num_channels] = static_cast<int16_t>(32767.f * std::sin(w));
diff --git a/common_audio/window_generator.cc b/common_audio/window_generator.cc
index da5603d..7c33d25 100644
--- a/common_audio/window_generator.cc
+++ b/common_audio/window_generator.cc
@@ -14,6 +14,7 @@
 
 #include <cmath>
 #include <complex>
+#include <numbers>
 
 #include "rtc_base/checks.h"
 
@@ -41,7 +42,7 @@
   RTC_CHECK(window != nullptr);
   for (int i = 0; i < length; ++i) {
     window[i] =
-        0.5f * (1 - cosf(2 * static_cast<float>(M_PI) * i / (length - 1)));
+        0.5f * (1 - cosf(2 * std::numbers::pi_v<float> * i / (length - 1)));
   }
 }
 
@@ -56,7 +57,7 @@
 
   for (size_t i = 0; i <= half; ++i) {
     complex<float> r = (4.0f * i) / length - 1.0f;
-    sum += I0(static_cast<float>(M_PI) * alpha * sqrt(1.0f - r * r)).real();
+    sum += I0(std::numbers::pi_v<float> * alpha * sqrt(1.0f - r * r)).real();
     window[i] = sum;
   }
   for (size_t i = length - 1; i >= half; --i) {
diff --git a/modules/audio_coding/neteq/dtmf_tone_generator_unittest.cc b/modules/audio_coding/neteq/dtmf_tone_generator_unittest.cc
index 10e4c21..7a7d65a 100644
--- a/modules/audio_coding/neteq/dtmf_tone_generator_unittest.cc
+++ b/modules/audio_coding/neteq/dtmf_tone_generator_unittest.cc
@@ -15,6 +15,7 @@
 #include <math.h>
 
 #include <cstddef>
+#include <numbers>
 
 #include "common_audio/include/audio_util.h"
 #include "modules/audio_coding/neteq/audio_multi_vector.h"
@@ -46,7 +47,7 @@
 
       double f1 = kLowFreqHz[event];
       double f2 = kHighFreqHz[event];
-      const double pi = 3.14159265358979323846;
+      const double pi = std::numbers::pi;
 
       for (int n = 0; n < kNumSamples; ++n) {
         double x = k3dbAttenuation * sin(2.0 * pi * f1 / fs_hz * (-n - 1)) +
diff --git a/modules/audio_mixer/sine_wave_generator.cc b/modules/audio_mixer/sine_wave_generator.cc
index deb8846..be3dd0c 100644
--- a/modules/audio_mixer/sine_wave_generator.cc
+++ b/modules/audio_mixer/sine_wave_generator.cc
@@ -13,12 +13,14 @@
 #include <math.h>
 #include <stddef.h>
 
+#include <numbers>
+
 #include "rtc_base/numerics/safe_conversions.h"
 
 namespace webrtc {
 
 namespace {
-constexpr float kPi = 3.14159265f;
+constexpr float kPi = std::numbers::pi_v<float>;
 }  // namespace
 
 void SineWaveGenerator::GenerateNextFrame(AudioFrame* frame) {
diff --git a/modules/audio_processing/aec3/comfort_noise_generator.cc b/modules/audio_processing/aec3/comfort_noise_generator.cc
index ed643f4..17a3b70 100644
--- a/modules/audio_processing/aec3/comfort_noise_generator.cc
+++ b/modules/audio_processing/aec3/comfort_noise_generator.cc
@@ -21,6 +21,7 @@
 #include <cmath>
 #include <cstdint>
 #include <functional>
+#include <numbers>
 #include <numeric>
 
 #include "common_audio/signal_processing/include/signal_processing_library.h"
@@ -31,6 +32,8 @@
 
 namespace {
 
+using std::numbers::sqrt2_v;
+
 // Computes the noise floor value that matches a WGN input of noise_floor_dbfs.
 float GetNoiseFloorFactor(float noise_floor_dbfs) {
   // kdBfsNormalization = 20.f*log10(32768.f).
@@ -39,14 +42,16 @@
 }
 
 // Table of sqrt(2) * sin(2*pi*i/32).
+// clang-format off
 constexpr float kSqrt2Sin[32] = {
     +0.0000000f, +0.2758994f, +0.5411961f, +0.7856950f, +1.0000000f,
-    +1.1758756f, +1.3065630f, +1.3870398f, +1.4142136f, +1.3870398f,
+    +1.1758756f, +1.3065630f, +1.3870398f, +sqrt2_v<float>, +1.3870398f,
     +1.3065630f, +1.1758756f, +1.0000000f, +0.7856950f, +0.5411961f,
     +0.2758994f, +0.0000000f, -0.2758994f, -0.5411961f, -0.7856950f,
-    -1.0000000f, -1.1758756f, -1.3065630f, -1.3870398f, -1.4142136f,
+    -1.0000000f, -1.1758756f, -1.3065630f, -1.3870398f, -sqrt2_v<float>,
     -1.3870398f, -1.3065630f, -1.1758756f, -1.0000000f, -0.7856950f,
     -0.5411961f, -0.2758994f};
+// clang-format on
 
 void GenerateComfortNoise(Aec3Optimization optimization,
                           const std::array<float, kFftLengthBy2Plus1>& N2,
diff --git a/modules/audio_processing/aec3/decimator_unittest.cc b/modules/audio_processing/aec3/decimator_unittest.cc
index 3ff4294..2c6d96d 100644
--- a/modules/audio_processing/aec3/decimator_unittest.cc
+++ b/modules/audio_processing/aec3/decimator_unittest.cc
@@ -16,6 +16,7 @@
 #include <array>
 #include <cmath>
 #include <cstring>
+#include <numbers>
 #include <numeric>
 #include <string>
 #include <vector>
@@ -35,7 +36,7 @@
 }
 
 constexpr size_t kDownSamplingFactors[] = {2, 4, 8};
-constexpr float kPi = 3.141592f;
+constexpr float kPi = std::numbers::pi_v<float>;
 constexpr size_t kNumStartupBlocks = 50;
 constexpr size_t kNumBlocks = 1000;
 
diff --git a/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc b/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc
index e51be2f..9ef6040 100644
--- a/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc
+++ b/modules/audio_processing/aec3/render_signal_analyzer_unittest.cc
@@ -14,6 +14,7 @@
 
 #include <array>
 #include <cmath>
+#include <numbers>
 #include <vector>
 
 #include "api/array_view.h"
@@ -29,7 +30,7 @@
 namespace webrtc {
 namespace {
 
-constexpr float kPi = 3.141592f;
+constexpr float kPi = std::numbers::pi_v<float>;
 
 void ProduceSinusoidInNoise(int sample_rate_hz,
                             size_t sinusoid_channel,
diff --git a/modules/audio_processing/aec3/suppression_filter_unittest.cc b/modules/audio_processing/aec3/suppression_filter_unittest.cc
index 464f5cf..8ecc7ec 100644
--- a/modules/audio_processing/aec3/suppression_filter_unittest.cc
+++ b/modules/audio_processing/aec3/suppression_filter_unittest.cc
@@ -14,6 +14,7 @@
 
 #include <algorithm>
 #include <cmath>
+#include <numbers>
 #include <numeric>
 
 #include "test/gtest.h"
@@ -21,7 +22,7 @@
 namespace webrtc {
 namespace {
 
-constexpr float kPi = 3.141592f;
+constexpr float kPi = std::numbers::pi_v<float>;
 
 void ProduceSinusoid(int sample_rate_hz,
                      float sinusoidal_frequency_hz,
diff --git a/modules/audio_processing/agc/utility.cc b/modules/audio_processing/agc/utility.cc
index 2a87e5c..b8fa360 100644
--- a/modules/audio_processing/agc/utility.cc
+++ b/modules/audio_processing/agc/utility.cc
@@ -12,9 +12,11 @@
 
 #include <math.h>
 
+#include <numbers>
+
 namespace webrtc {
 
-static const double kLog10 = 2.30258509299;
+static const double kLog10 = std::numbers::ln10;
 static const double kLinear2DbScale = 20.0 / kLog10;
 static const double kLinear2LoudnessScale = 13.4 / kLog10;
 
diff --git a/modules/audio_processing/agc2/agc2_testing_common.cc b/modules/audio_processing/agc2/agc2_testing_common.cc
index 8f3e9db..b9d0492 100644
--- a/modules/audio_processing/agc2/agc2_testing_common.cc
+++ b/modules/audio_processing/agc2/agc2_testing_common.cc
@@ -12,6 +12,8 @@
 
 #include <math.h>
 
+#include <numbers>
+
 #include "rtc_base/checks.h"
 
 namespace webrtc {
@@ -56,7 +58,7 @@
 }
 
 float SineGenerator::operator()() {
-  constexpr float kPi = 3.1415926536f;
+  constexpr float kPi = std::numbers::pi_v<float>;
   x_radians_ += frequency_hz_ / sample_rate_hz_ * 2 * kPi;
   if (x_radians_ >= 2 * kPi) {
     x_radians_ -= 2 * kPi;
diff --git a/modules/audio_processing/ns/fast_math.cc b/modules/audio_processing/ns/fast_math.cc
index 72f6fb2..7b8fe1f 100644
--- a/modules/audio_processing/ns/fast_math.cc
+++ b/modules/audio_processing/ns/fast_math.cc
@@ -13,6 +13,8 @@
 #include <math.h>
 #include <stdint.h>
 
+#include <numbers>
+
 #include "rtc_base/checks.h"
 
 namespace webrtc {
@@ -53,7 +55,7 @@
 }
 
 float LogApproximation(float x) {
-  constexpr float kLogOf2 = 0.69314718056f;
+  constexpr float kLogOf2 = std::numbers::ln2_v<float>;
   return FastLog2f(x) * kLogOf2;
 }
 
@@ -64,7 +66,7 @@
 }
 
 float ExpApproximation(float x) {
-  constexpr float kLog10Ofe = 0.4342944819f;
+  constexpr float kLog10Ofe = std::numbers::log10e_v<float>;
   return PowApproximation(10.f, x * kLog10Ofe);
 }
 
diff --git a/modules/audio_processing/ns/noise_estimator.cc b/modules/audio_processing/ns/noise_estimator.cc
index bf21d38..00b647c 100644
--- a/modules/audio_processing/ns/noise_estimator.cc
+++ b/modules/audio_processing/ns/noise_estimator.cc
@@ -14,6 +14,7 @@
 #include <array>
 #include <cstddef>
 #include <cstdint>
+#include <numbers>
 
 #include "api/array_view.h"
 #include "modules/audio_processing/ns/fast_math.h"
@@ -25,10 +26,14 @@
 
 namespace {
 
+using std::numbers::ln10_v;
+
 // Log(i).
+// clang-format off
 constexpr std::array<float, 129> log_table = {
     0.f,       0.f,       0.f,       0.f,       0.f,       1.609438f, 1.791759f,
-    1.945910f, 2.079442f, 2.197225f, 2.302585f, 2.397895f, 2.484907f, 2.564949f,
+    1.945910f, 2.079442f, 2.197225f, ln10_v<float>, 2.397895f, 2.484907f,
+    2.564949f,
     2.639057f, 2.708050f, 2.772589f, 2.833213f, 2.890372f, 2.944439f, 2.995732f,
     3.044522f, 3.091043f, 3.135494f, 3.178054f, 3.218876f, 3.258097f, 3.295837f,
     3.332205f, 3.367296f, 3.401197f, 3.433987f, 3.465736f, 3.496507f, 3.526361f,
@@ -46,6 +51,7 @@
     4.718499f, 4.727388f, 4.736198f, 4.744932f, 4.753591f, 4.762174f, 4.770685f,
     4.779124f, 4.787492f, 4.795791f, 4.804021f, 4.812184f, 4.820282f, 4.828314f,
     4.836282f, 4.844187f, 4.852030f};
+// clang-format on
 
 }  // namespace
 
diff --git a/modules/audio_processing/three_band_filter_bank.cc b/modules/audio_processing/three_band_filter_bank.cc
index d69db9b..45b44a7 100644
--- a/modules/audio_processing/three_band_filter_bank.cc
+++ b/modules/audio_processing/three_band_filter_bank.cc
@@ -33,6 +33,7 @@
 #include "modules/audio_processing/three_band_filter_bank.h"
 
 #include <array>
+#include <numbers>
 
 #include "rtc_base/checks.h"
 
@@ -88,17 +89,21 @@
 constexpr int kZeroFilterIndex1 = 3;
 constexpr int kZeroFilterIndex2 = 9;
 
+constexpr float kSqrt3 = std::numbers::sqrt3_v<float>;
+
+// clang-format off
 const float kDctModulation[ThreeBandFilterBank::kNumNonZeroFilters][kDctSize] =
     {{2.f, 2.f, 2.f},
-     {1.73205077f, 0.f, -1.73205077f},
+     {kSqrt3, 0.f, -kSqrt3},
      {1.f, -2.f, 1.f},
      {-1.f, 2.f, -1.f},
-     {-1.73205077f, 0.f, 1.73205077f},
+     {-kSqrt3, 0.f, kSqrt3},
      {-2.f, -2.f, -2.f},
-     {-1.73205077f, 0.f, 1.73205077f},
+     {-kSqrt3, 0.f, kSqrt3},
      {-1.f, 2.f, -1.f},
      {1.f, -2.f, 1.f},
-     {1.73205077f, 0.f, -1.73205077f}};
+     {kSqrt3, 0.f, -kSqrt3}};
+// clang-format on
 
 // Filters the input signal `in` with the filter `filter` using a shift by
 // `in_shift`, taking into account the previous state.
diff --git a/rtc_base/numerics/event_based_exponential_moving_average.cc b/rtc_base/numerics/event_based_exponential_moving_average.cc
index 27b2066..419902d 100644
--- a/rtc_base/numerics/event_based_exponential_moving_average.cc
+++ b/rtc_base/numerics/event_based_exponential_moving_average.cc
@@ -13,6 +13,7 @@
 #include <cmath>
 #include <cstdint>
 #include <limits>
+#include <numbers>
 
 #include "rtc_base/checks.h"
 
@@ -35,7 +36,7 @@
 }
 
 void EventBasedExponentialMovingAverage::SetHalfTime(int half_time) {
-  tau_ = static_cast<double>(half_time) / log(2);
+  tau_ = static_cast<double>(half_time) / std::numbers::ln2;
   Reset();
 }
 
diff --git a/rtc_base/numerics/percentile_filter_unittest.cc b/rtc_base/numerics/percentile_filter_unittest.cc
index d6baa32..d6826f4 100644
--- a/rtc_base/numerics/percentile_filter_unittest.cc
+++ b/rtc_base/numerics/percentile_filter_unittest.cc
@@ -15,6 +15,7 @@
 #include <array>
 #include <climits>
 #include <cstdint>
+#include <numbers>
 #include <random>
 
 #include "absl/algorithm/container.h"
@@ -58,10 +59,10 @@
 
 TEST(PercentileFilterTest, MedianFilterDouble) {
   PercentileFilter<double> filter(0.5f);
-  filter.Insert(2.71828);
-  filter.Insert(3.14159);
-  filter.Insert(1.41421);
-  EXPECT_EQ(2.71828, filter.GetPercentileValue());
+  filter.Insert(std::numbers::e);
+  filter.Insert(std::numbers::pi);
+  filter.Insert(std::numbers::sqrt2);
+  EXPECT_FLOAT_EQ(std::numbers::e, filter.GetPercentileValue());
 }
 
 TEST(PercentileFilterTest, MedianFilterInt) {
diff --git a/rtc_base/random.cc b/rtc_base/random.cc
index 55b8749..28e48f0 100644
--- a/rtc_base/random.cc
+++ b/rtc_base/random.cc
@@ -11,6 +11,8 @@
 
 #include <math.h>
 
+#include <numbers>
+
 #include "rtc_base/checks.h"
 #include "rtc_base/numerics/safe_conversions.h"
 
@@ -71,7 +73,7 @@
   // interval (0, 1]. Note that we rely on NextOutput to generate integers
   // in the range [1, 2^64-1]. Normally this behavior is a bit frustrating,
   // but here it is exactly what we need.
-  const double kPi = 3.14159265358979323846;
+  const double kPi = std::numbers::pi;
   double u1 = static_cast<double>(NextOutput()) /
               static_cast<double>(0xFFFFFFFFFFFFFFFFull);
   double u2 = static_cast<double>(NextOutput()) /
diff --git a/rtc_base/random_unittest.cc b/rtc_base/random_unittest.cc
index 4eb6f75..ffcd3ed 100644
--- a/rtc_base/random_unittest.cc
+++ b/rtc_base/random_unittest.cc
@@ -13,6 +13,7 @@
 #include <math.h>
 
 #include <limits>
+#include <numbers>
 #include <vector>
 
 #include "rtc_base/numerics/math_utils.h"  // unsigned difference
@@ -286,7 +287,7 @@
     }
   }
 
-  const double kPi = 3.14159265358979323846;
+  const double kPi = std::numbers::pi;
   const double kScale = 1 / (kStddev * sqrt(2.0 * kPi));
   const double kDiv = -2.0 * kStddev * kStddev;
   for (int n = 0; n < kBuckets; ++n) {