xref: /netbsd-src/external/apache2/llvm/dist/libcxx/include/numbers (revision 4d6fc14bc9b0c5bf3e30be318c143ee82cadd108)
1*4d6fc14bSjoerg// -*- C++ -*-
2*4d6fc14bSjoerg//===---------------------------- numbers ---------------------------------===//
3*4d6fc14bSjoerg//
4*4d6fc14bSjoerg// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5*4d6fc14bSjoerg// See https://llvm.org/LICENSE.txt for license information.
6*4d6fc14bSjoerg// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7*4d6fc14bSjoerg//
8*4d6fc14bSjoerg//===----------------------------------------------------------------------===//
9*4d6fc14bSjoerg
10*4d6fc14bSjoerg#ifndef _LIBCPP_NUMBERS
11*4d6fc14bSjoerg#define _LIBCPP_NUMBERS
12*4d6fc14bSjoerg
13*4d6fc14bSjoerg/*
14*4d6fc14bSjoerg    numbers synopsis
15*4d6fc14bSjoerg
16*4d6fc14bSjoergnamespace std::numbers {
17*4d6fc14bSjoerg  template<class T> inline constexpr T e_v          = unspecified;
18*4d6fc14bSjoerg  template<class T> inline constexpr T log2e_v      = unspecified;
19*4d6fc14bSjoerg  template<class T> inline constexpr T log10e_v     = unspecified;
20*4d6fc14bSjoerg  template<class T> inline constexpr T pi_v         = unspecified;
21*4d6fc14bSjoerg  template<class T> inline constexpr T inv_pi_v     = unspecified;
22*4d6fc14bSjoerg  template<class T> inline constexpr T inv_sqrtpi_v = unspecified;
23*4d6fc14bSjoerg  template<class T> inline constexpr T ln2_v        = unspecified;
24*4d6fc14bSjoerg  template<class T> inline constexpr T ln10_v       = unspecified;
25*4d6fc14bSjoerg  template<class T> inline constexpr T sqrt2_v      = unspecified;
26*4d6fc14bSjoerg  template<class T> inline constexpr T sqrt3_v      = unspecified;
27*4d6fc14bSjoerg  template<class T> inline constexpr T inv_sqrt3_v  = unspecified;
28*4d6fc14bSjoerg  template<class T> inline constexpr T egamma_v     = unspecified;
29*4d6fc14bSjoerg  template<class T> inline constexpr T phi_v        = unspecified;
30*4d6fc14bSjoerg
31*4d6fc14bSjoerg  template<floating_point T> inline constexpr T e_v<T>          = see below;
32*4d6fc14bSjoerg  template<floating_point T> inline constexpr T log2e_v<T>      = see below;
33*4d6fc14bSjoerg  template<floating_point T> inline constexpr T log10e_v<T>     = see below;
34*4d6fc14bSjoerg  template<floating_point T> inline constexpr T pi_v<T>         = see below;
35*4d6fc14bSjoerg  template<floating_point T> inline constexpr T inv_pi_v<T>     = see below;
36*4d6fc14bSjoerg  template<floating_point T> inline constexpr T inv_sqrtpi_v<T> = see below;
37*4d6fc14bSjoerg  template<floating_point T> inline constexpr T ln2_v<T>        = see below;
38*4d6fc14bSjoerg  template<floating_point T> inline constexpr T ln10_v<T>       = see below;
39*4d6fc14bSjoerg  template<floating_point T> inline constexpr T sqrt2_v<T>      = see below;
40*4d6fc14bSjoerg  template<floating_point T> inline constexpr T sqrt3_v<T>      = see below;
41*4d6fc14bSjoerg  template<floating_point T> inline constexpr T inv_sqrt3_v<T>  = see below;
42*4d6fc14bSjoerg  template<floating_point T> inline constexpr T egamma_v<T>     = see below;
43*4d6fc14bSjoerg  template<floating_point T> inline constexpr T phi_v<T>        = see below;
44*4d6fc14bSjoerg
45*4d6fc14bSjoerg  inline constexpr double e          = e_v<double>;
46*4d6fc14bSjoerg  inline constexpr double log2e      = log2e_v<double>;
47*4d6fc14bSjoerg  inline constexpr double log10e     = log10e_v<double>;
48*4d6fc14bSjoerg  inline constexpr double pi         = pi_v<double>;
49*4d6fc14bSjoerg  inline constexpr double inv_pi     = inv_pi_v<double>;
50*4d6fc14bSjoerg  inline constexpr double inv_sqrtpi = inv_sqrtpi_v<double>;
51*4d6fc14bSjoerg  inline constexpr double ln2        = ln2_v<double>;
52*4d6fc14bSjoerg  inline constexpr double ln10       = ln10_v<double>;
53*4d6fc14bSjoerg  inline constexpr double sqrt2      = sqrt2_v<double>;
54*4d6fc14bSjoerg  inline constexpr double sqrt3      = sqrt3_v<double>;
55*4d6fc14bSjoerg  inline constexpr double inv_sqrt3  = inv_sqrt3_v<double>;
56*4d6fc14bSjoerg  inline constexpr double egamma     = egamma_v<double>;
57*4d6fc14bSjoerg  inline constexpr double phi        = phi_v<double>;
58*4d6fc14bSjoerg}
59*4d6fc14bSjoerg*/
60*4d6fc14bSjoerg
61*4d6fc14bSjoerg#include <__config>
62*4d6fc14bSjoerg
63*4d6fc14bSjoerg#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
64*4d6fc14bSjoerg
65*4d6fc14bSjoerg#include <concepts>
66*4d6fc14bSjoerg#include <type_traits>
67*4d6fc14bSjoerg#include <version>
68*4d6fc14bSjoerg
69*4d6fc14bSjoerg#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
70*4d6fc14bSjoerg#pragma GCC system_header
71*4d6fc14bSjoerg#endif
72*4d6fc14bSjoerg
73*4d6fc14bSjoerg_LIBCPP_PUSH_MACROS
74*4d6fc14bSjoerg#include <__undef_macros>
75*4d6fc14bSjoerg
76*4d6fc14bSjoerg_LIBCPP_BEGIN_NAMESPACE_STD
77*4d6fc14bSjoerg
78*4d6fc14bSjoergnamespace numbers {
79*4d6fc14bSjoerg
80*4d6fc14bSjoergtemplate <class T>
81*4d6fc14bSjoerginline constexpr bool __false = false;
82*4d6fc14bSjoerg
83*4d6fc14bSjoergtemplate <class T>
84*4d6fc14bSjoergstruct __illformed
85*4d6fc14bSjoerg{
86*4d6fc14bSjoerg  static_assert(__false<T>, "A program that instantiates a primary template of a mathematical constant variable template is ill-formed.");
87*4d6fc14bSjoerg};
88*4d6fc14bSjoerg
89*4d6fc14bSjoergtemplate <class T> inline constexpr T e_v =          __illformed<T>{};
90*4d6fc14bSjoergtemplate <class T> inline constexpr T log2e_v =      __illformed<T>{};
91*4d6fc14bSjoergtemplate <class T> inline constexpr T log10e_v =     __illformed<T>{};
92*4d6fc14bSjoergtemplate <class T> inline constexpr T pi_v =         __illformed<T>{};
93*4d6fc14bSjoergtemplate <class T> inline constexpr T inv_pi_v =     __illformed<T>{};
94*4d6fc14bSjoergtemplate <class T> inline constexpr T inv_sqrtpi_v = __illformed<T>{};
95*4d6fc14bSjoergtemplate <class T> inline constexpr T ln2_v =        __illformed<T>{};
96*4d6fc14bSjoergtemplate <class T> inline constexpr T ln10_v =       __illformed<T>{};
97*4d6fc14bSjoergtemplate <class T> inline constexpr T sqrt2_v =      __illformed<T>{};
98*4d6fc14bSjoergtemplate <class T> inline constexpr T sqrt3_v =      __illformed<T>{};
99*4d6fc14bSjoergtemplate <class T> inline constexpr T inv_sqrt3_v =  __illformed<T>{};
100*4d6fc14bSjoergtemplate <class T> inline constexpr T egamma_v =     __illformed<T>{};
101*4d6fc14bSjoergtemplate <class T> inline constexpr T phi_v =        __illformed<T>{};
102*4d6fc14bSjoerg
103*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T e_v<T>          = 2.718281828459045235360287471352662;
104*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T log2e_v<T>      = 1.442695040888963407359924681001892;
105*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T log10e_v<T>     = 0.434294481903251827651128918916605;
106*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T pi_v<T>         = 3.141592653589793238462643383279502;
107*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T inv_pi_v<T>     = 0.318309886183790671537767526745028;
108*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T inv_sqrtpi_v<T> = 0.564189583547756286948079451560772;
109*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T ln2_v<T>        = 0.693147180559945309417232121458176;
110*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T ln10_v<T>       = 2.302585092994045684017991454684364;
111*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T sqrt2_v<T>      = 1.414213562373095048801688724209698;
112*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T sqrt3_v<T>      = 1.732050807568877293527446341505872;
113*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T inv_sqrt3_v<T>  = 0.577350269189625764509148780501957;
114*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T egamma_v<T>     = 0.577215664901532860606512090082402;
115*4d6fc14bSjoergtemplate <floating_point T> inline constexpr T phi_v<T>        = 1.618033988749894848204586834365638;
116*4d6fc14bSjoerg
117*4d6fc14bSjoerginline constexpr double e          = e_v<double>;
118*4d6fc14bSjoerginline constexpr double log2e      = log2e_v<double>;
119*4d6fc14bSjoerginline constexpr double log10e     = log10e_v<double>;
120*4d6fc14bSjoerginline constexpr double pi         = pi_v<double>;
121*4d6fc14bSjoerginline constexpr double inv_pi     = inv_pi_v<double>;
122*4d6fc14bSjoerginline constexpr double inv_sqrtpi = inv_sqrtpi_v<double>;
123*4d6fc14bSjoerginline constexpr double ln2        = ln2_v<double>;
124*4d6fc14bSjoerginline constexpr double ln10       = ln10_v<double>;
125*4d6fc14bSjoerginline constexpr double sqrt2      = sqrt2_v<double>;
126*4d6fc14bSjoerginline constexpr double sqrt3      = sqrt3_v<double>;
127*4d6fc14bSjoerginline constexpr double inv_sqrt3  = inv_sqrt3_v<double>;
128*4d6fc14bSjoerginline constexpr double egamma     = egamma_v<double>;
129*4d6fc14bSjoerginline constexpr double phi        = phi_v<double>;
130*4d6fc14bSjoerg
131*4d6fc14bSjoerg} // namespace numbers
132*4d6fc14bSjoerg
133*4d6fc14bSjoerg_LIBCPP_END_NAMESPACE_STD
134*4d6fc14bSjoerg
135*4d6fc14bSjoerg_LIBCPP_POP_MACROS
136*4d6fc14bSjoerg
137*4d6fc14bSjoerg#endif //_LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CONCEPTS)
138*4d6fc14bSjoerg
139*4d6fc14bSjoerg#endif // _LIBCPP_NUMBERS
140