Skip to content

Commit 1a7be5d

Browse files
authored
Merge pull request #999 from boostorg/develop
Merge develop for 1.83
2 parents c56f334 + 8bb0d16 commit 1a7be5d

File tree

200 files changed

+5924
-1993
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

200 files changed

+5924
-1993
lines changed

Diff for: .drone.star

+5
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ windowsglobalimage="cppalliance/dronevs2019"
1616
def main(ctx):
1717

1818
things_to_test = [ "special_fun", "distribution_tests", "mp", "misc", "interpolators", "quadrature", "autodiff", "long-running-tests", "float128_tests" ]
19+
gcc13_things_to_test = [ "special_fun", "distribution_tests", "mp", "misc", "interpolators", "quadrature", "autodiff", "long-running-tests", "float128_tests", "new_floats" ]
1920
sanitizer_test = [ "special_fun", "distribution_tests", "misc", "interpolators", "quadrature", "float128_tests" ]
2021
gnu_5_stds = [ "gnu++14", "c++14" ]
2122
gnu_6_stds = [ "gnu++14", "c++14", "gnu++17", "c++17" ]
2223
clang_6_stds = [ "c++14", "c++17" ]
2324
gnu_9_stds = [ "gnu++14", "c++14", "gnu++17", "c++17", "gnu++2a", "c++2a" ]
2425
clang_10_stds = [ "c++14", "c++17", "c++2a" ]
2526
gnu_non_native = [ "gnu++17" ]
27+
gcc13_stds = [ "c++23" ]
2628

2729
result = []
2830

@@ -59,6 +61,9 @@ def main(ctx):
5961
result.append(linux_cxx("Ubuntu g++ ARM64" + cxx + " " + suite, "g++", packages="g++", buildtype="boost", image="cppalliance/droneubuntu2204:multiarch", arch="arm64", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++', 'CXXSTD': cxx, 'TEST_SUITE': suite, }, globalenv=globalenv))
6062
for cxx in gnu_non_native:
6163
result.append(osx_cxx("M1 Clang " + cxx + " " + suite, "clang++", buildscript="drone", buildtype="boost", xcode_version="14.1", environment={'TOOLSET': 'clang', 'CXXSTD': cxx, 'TEST_SUITE': suite, 'DEFINE': 'BOOST_MATH_NO_REAL_CONCEPT_TESTS,BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS,BOOST_MATH_MULTI_ARCH_CI_RUN', }, globalenv=globalenv))
64+
for suite in gcc13_things_to_test:
65+
for cxx in gcc13_stds:
66+
result.append(linux_cxx("Ubuntu g++-13 " + cxx + " " + suite, "g++-13", packages="g++-13", buildtype="boost", image="cppalliance/droneubuntu2304:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-13', 'CXXSTD': cxx, 'TEST_SUITE': suite, }, globalenv=globalenv))
6267

6368
return result
6469

Diff for: .github/workflows/ci.yml

+9-8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ on:
99
branches:
1010
- master
1111
- develop
12+
- feature/**
1213
pull_request:
1314
release:
1415
types: [published, created, edited]
@@ -47,7 +48,7 @@ jobs:
4748
if: steps.retry1.outcome=='failure'
4849
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
4950
- name: Install packages
50-
run: sudo apt install g++-12 clang-14 libgmp-dev libmpfr-dev libfftw3-dev
51+
run: sudo apt-get install -y g++-12 clang-14 libgmp-dev libmpfr-dev libfftw3-dev
5152
- name: Checkout main boost
5253
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
5354
- name: Update tools/boostdep
@@ -75,7 +76,7 @@ jobs:
7576
run: ./config_info_travis
7677
working-directory: ../boost-root/libs/config/test
7778
- name: Test
78-
run: ../../../b2 toolset=$TOOLSET ${{ matrix.suite }} define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER
79+
run: ../../../b2 toolset=$TOOLSET ${{ matrix.suite }} define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER define=BOOST_MATH_RUN_MP_TESTS
7980
working-directory: ../boost-root/libs/math/test
8081
ubuntu-focal-no-eh:
8182
runs-on: ubuntu-20.04
@@ -105,7 +106,7 @@ jobs:
105106
if: steps.retry1.outcome=='failure'
106107
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
107108
- name: Install packages
108-
run: sudo apt install g++-9 g++-11 clang-9 clang-10 libgmp-dev libmpfr-dev libfftw3-dev
109+
run: sudo apt-get install -y g++-9 g++-11 clang-9 clang-10 libgmp-dev libmpfr-dev libfftw3-dev
109110
- name: Checkout main boost
110111
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
111112
- name: Update tools/boostdep
@@ -214,7 +215,7 @@ jobs:
214215
run: config_info_travis
215216
working-directory: ../boost-root/libs/config/test
216217
- name: Test
217-
run: ..\..\..\b2 --hash %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES debug-symbols=off ${{ matrix.suite }}
218+
run: ..\..\..\b2 --hash %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES debug-symbols=off ${{ matrix.suite }} pch=off
218219
working-directory: ../boost-root/libs/math/test
219220
windows_gcc:
220221
runs-on: windows-2019
@@ -299,7 +300,7 @@ jobs:
299300
run: config_info_travis
300301
working-directory: ../boost-root/libs/config/test
301302
- name: Test
302-
run: ..\..\..\b2 --hash %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES ${{ matrix.suite }}
303+
run: ..\..\..\b2 --hash %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES ${{ matrix.suite }} pch=off
303304
working-directory: ../boost-root/libs/math/test
304305
cygwin:
305306
runs-on: windows-latest
@@ -364,7 +365,7 @@ jobs:
364365
if: steps.retry1.outcome=='failure'
365366
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
366367
- name: Install packages
367-
run: sudo apt install g++-10 libgmp-dev libmpfr-dev libfftw3-dev
368+
run: sudo apt-get install -y g++-10 libgmp-dev libmpfr-dev libfftw3-dev
368369
- name: Checkout main boost
369370
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
370371
- name: Update tools/boostdep
@@ -404,7 +405,7 @@ jobs:
404405
if: steps.retry1.outcome=='failure'
405406
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
406407
- name: Install packages
407-
run: sudo apt install clang-10 libgmp-dev libmpfr-dev libfftw3-dev
408+
run: sudo apt-get install -y clang-10 libgmp-dev libmpfr-dev libfftw3-dev libtbb-dev
408409
- name: Checkout main boost
409410
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
410411
- name: Update tools/boostdep
@@ -448,7 +449,7 @@ jobs:
448449
if: steps.retry1.outcome=='failure'
449450
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
450451
- name: Install packages
451-
run: sudo apt install g++-10 libgmp-dev libmpfr-dev libfftw3-dev
452+
run: sudo apt-get install -y g++-10 libgmp-dev libmpfr-dev libfftw3-dev
452453
- name: Checkout main boost
453454
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
454455
- name: Update tools/boostdep

Diff for: README.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ Boost Math Library
22
[![Build Status](https://drone.cpp.al/api/badges/boostorg/math/status.svg)](https://drone.cpp.al/boostorg/math)[![Build Status](https://github.com/boostorg/math/workflows/CI/badge.svg?branch=develop)](https://github.com/boostorg/math/actions)
33
==================
44

5-
>ANNOUNCEMENT: Support for C++11 will be deprecated in this library starting in July 2023 (Boost 1.82).
6-
>New features will require *at least* C++14, as will existing features starting with the deprecation release.
5+
>ANNOUNCEMENT: This library now requires a compliant C++14 compiler.
76
87
This library is divided into several interconnected parts:
98

Diff for: doc/background/references.qbk

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ The Wolfram Research Documentation Center is a collection of online reference ma
3434
Statistical Distributions (Wiley Series in Probability & Statistics) (Paperback)
3535
by N.A.J. Hastings, Brian Peacock, Merran Evans, ISBN: 0471371246, Wiley 2000.
3636

37-
[@http://www.worldscibooks.com/mathematics/p191.html Extreme Value Distributions, Theory and Applications]
37+
[@https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0 Extreme Value Distributions, Theory and Applications]
3838
Samuel Kotz & Saralees Nadarajah, ISBN 978-1-86094-224-2 & 1-86094-224-5 Oct 2000,
3939
Chapter 1.2 discusses the various extreme value distributions.
4040

Diff for: doc/distributions/exponential.qbk

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ In the following table [lambda] is the parameter lambda of the distribution,
9393
(See also the reference documentation for the related __extreme_distrib.)
9494

9595
*
96-
[@http://www.worldscibooks.com/mathematics/p191.html Extreme Value Distributions, Theory and Applications
96+
[@https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0 Extreme Value Distributions, Theory and Applications
9797
Samuel Kotz & Saralees Nadarajah]
9898
discuss the relationship of the types of extreme value distributions.
9999

Diff for: doc/distributions/extreme_value.qbk

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ websites.
3838

3939
The relationship of the types of extreme value distributions, of which this is but one, is
4040
discussed by
41-
[@http://www.worldscibooks.com/mathematics/p191.html Extreme Value Distributions, Theory and Applications
41+
[@https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0 Extreme Value Distributions, Theory and Applications
4242
Samuel Kotz & Saralees Nadarajah].
4343

4444
The distribution has a PDF given by:

Diff for: doc/distributions/hypergeometric.qbk

+9-9
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
typedef RealType value_type;
1616
typedef Policy policy_type;
1717
// Construct:
18-
hypergeometric_distribution(unsigned r, unsigned n, unsigned N); // r=defective/failures/success, n=trials/draws, N=total population.
18+
hypergeometric_distribution(uint64_t r, uint64_t n, uint64_t N); // r=defective/failures/success, n=trials/draws, N=total population.
1919
// Accessors:
20-
unsigned total()const;
21-
unsigned defective()const;
22-
unsigned sample_count()const;
20+
uint64_t total()const;
21+
uint64_t defective()const;
22+
uint64_t sample_count()const;
2323
};
2424

2525
typedef hypergeometric_distribution<> hypergeometric;
@@ -56,20 +56,20 @@ then we obtain basically the same graphs:
5656

5757
[h4 Member Functions]
5858

59-
hypergeometric_distribution(unsigned r, unsigned n, unsigned N);
59+
hypergeometric_distribution(uint64_t r, uint64_t n, uint64_t N);
6060

6161
Constructs a hypergeometric distribution with a population of /N/ objects,
6262
of which /r/ are defective, and from which /n/ are sampled.
6363

64-
unsigned total()const;
64+
uint64_t total()const;
6565

6666
Returns the total number of objects /N/.
6767

68-
unsigned defective()const;
68+
uint64_t defective()const;
6969

7070
Returns the number of objects /r/ in population /N/ which are defective.
7171

72-
unsigned sample_count()const;
72+
uint64_t sample_count()const;
7373

7474
Returns the number of objects /n/ which are sampled from the population /N/.
7575

@@ -87,7 +87,7 @@ and Python
8787
All the [link math_toolkit.dist_ref.nmp usual non-member accessor functions]
8888
that are generic to all distributions are supported: __usual_accessors.
8989

90-
The domain of the random variable is the unsigned integers in the range
90+
The domain of the random variable are the 64-bit unsigned integers in the range
9191
\[max(0, n + r - N), min(n, r)\]. A __domain_error is raised if the
9292
random variable is outside this range, or is not an integral value.
9393

Diff for: doc/distributions/triangular.qbk

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ The triangular distribution is often used where the distribution is only vaguely
3838
but, like the [@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 uniform distribution],
3939
upper and limits are 'known', but a 'best guess', the mode or center point, is also added.
4040
It has been recommended as a
41-
[@http://www.worldscibooks.com/mathematics/etextbook/5720/5720_chap1.pdf proxy for the beta distribution.]
41+
[@https://www.jstor.org/stable/2988573 proxy for the beta distribution.]
4242
The distribution is used in business decision making and project planning.
4343

4444
The [@http://en.wikipedia.org/wiki/Triangular_distribution triangular distribution]

Diff for: doc/distributions/weibull.qbk

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ When ['[alpha]] = 1, the Weibull distribution reduces to the
5959
[@http://en.wikipedia.org/wiki/Exponential_distribution exponential distribution].
6060
The relationship of the types of extreme value distributions, of which the Weibull is but one, is
6161
discussed by
62-
[@http://www.worldscibooks.com/mathematics/p191.html Extreme Value Distributions, Theory and Applications
62+
[@https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0 Extreme Value Distributions, Theory and Applications
6363
Samuel Kotz & Saralees Nadarajah].
6464

6565

Diff for: doc/graphs/fourier_transform_daubechies.png

451 KB
Loading

Diff for: doc/html/math_toolkit/dist_ref/dists/exp_dist.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ <h5>
305305
Distributions</a>.)
306306
</p>
307307
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
308-
<a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme
308+
<a href="https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0" target="_top">Extreme
309309
Value Distributions, Theory and Applications Samuel Kotz &amp; Saralees
310310
Nadarajah</a> discuss the relationship of the types of extreme
311311
value distributions.

Diff for: doc/html/math_toolkit/dist_ref/dists/extreme_dist.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
</p>
6666
<p>
6767
The relationship of the types of extreme value distributions, of which
68-
this is but one, is discussed by <a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme
68+
this is but one, is discussed by <a href="https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0" target="_top">Extreme
6969
Value Distributions, Theory and Applications Samuel Kotz &amp; Saralees
7070
Nadarajah</a>.
7171
</p>

Diff for: doc/html/math_toolkit/dist_ref/dists/triangular_dist.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
vaguely known, but, like the <a href="http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29" target="_top">uniform
6565
distribution</a>, upper and limits are 'known', but a 'best guess',
6666
the mode or center point, is also added. It has been recommended as a
67-
<a href="http://www.worldscibooks.com/mathematics/etextbook/5720/5720_chap1.pdf" target="_top">proxy
67+
<a href="https://www.jstor.org/stable/2988573" target="_top">proxy
6868
for the beta distribution.</a> The distribution is used in business
6969
decision making and project planning.
7070
</p>

Diff for: doc/html/math_toolkit/dist_ref/dists/weibull_dist.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ <h5>
108108
distribution</a>. When <span class="emphasis"><em>α</em></span> = 1, the Weibull distribution
109109
reduces to the <a href="http://en.wikipedia.org/wiki/Exponential_distribution" target="_top">exponential
110110
distribution</a>. The relationship of the types of extreme value distributions,
111-
of which the Weibull is but one, is discussed by <a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme
111+
of which the Weibull is but one, is discussed by <a href="https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0" target="_top">Extreme
112112
Value Distributions, Theory and Applications Samuel Kotz &amp; Saralees
113113
Nadarajah</a>.
114114
</p>

Diff for: doc/html/math_toolkit/refs.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ <h5>
7878
by N.A.J. Hastings, Brian Peacock, Merran Evans, ISBN: 0471371246, Wiley 2000.
7979
</p>
8080
<p>
81-
<a href="http://www.worldscibooks.com/mathematics/p191.html" target="_top">Extreme Value
81+
<a href="https://www.google.com/books/edition/Extreme_Value_Distributions/GwBqDQAAQBAJ?hl=en&gbpv=0" target="_top">Extreme Value
8282
Distributions, Theory and Applications</a> Samuel Kotz &amp; Saralees Nadarajah,
8383
ISBN 978-1-86094-224-2 &amp; 1-86094-224-5 Oct 2000, Chapter 1.2 discusses
8484
the various extreme value distributions.

Diff for: doc/math.qbk

+1
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,7 @@ and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22.
615615
[include statistics/runs_test.qbk]
616616
[include statistics/ljung_box.qbk]
617617
[include statistics/linear_regression.qbk]
618+
[include statistics/chatterjee_correlation.qbk]
618619
[endmathpart] [/section:statistics Statistics]
619620

620621
[mathpart vector_functionals Vector Functionals - Norms]

Diff for: doc/sf/daubechies.qbk

+42
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,48 @@ The 2 vanishing moment scaling function.
127127
[$../graphs/daubechies_8_scaling.svg]
128128
The 8 vanishing moment scaling function.
129129

130+
Boost.Math also provides numerical evaluation of the Fourier transform of these functions.
131+
This is useful in sparse recovery problems where the measurements are taken in the Fourier basis.
132+
The usage is exhibited below:
133+
134+
#include <boost/math/special_functions/fourier_transform_daubechies_scaling.hpp>
135+
using boost::math::fourier_transform_daubechies_scaling;
136+
// Evaluate the Fourier transform of the 4-vanishing moment Daubechies scaling function at ω=1.8:
137+
std::complex<float> hat_phi = fourier_transform_daubechies_scaling<float, 4>(1.8f);
138+
139+
The Fourier transform convention is unitary with the sign of the imaginary unit being given in Daubechies Ten Lectures.
140+
In particular, this means that `fourier_transform_daubechies_scaling<float, p>(0.0)` returns 1/sqrt(2π).
141+
142+
The implementation computes an infinite product of trigonometric polynomials as can be found from recursive application of the identity 𝓕[φ](ω) = m(ω/2)𝓕[φ](ω/2).
143+
This is neither particularly fast nor accurate, but there appears to be no literature on this extremely useful topic, and hence the naive method must suffice.
144+
145+
[$../graphs/fourier_transform_daubechies.png]
146+
147+
A benchmark can be found in `reporting/performance/fourier_transform_daubechies_performance.cpp`; the results on a ~2021 M1 Macbook pro are presented below:
148+
149+
150+
Run on (10 X 24.1212 MHz CPU s)
151+
CPU Caches:
152+
L1 Data 64 KiB (x10)
153+
L1 Instruction 128 KiB (x10)
154+
L2 Unified 4096 KiB (x5)
155+
Load Average: 1.33, 1.52, 1.62
156+
-----------------------------------------------------------
157+
Benchmark Time
158+
-----------------------------------------------------------
159+
FourierTransformDaubechiesScaling<double, 1> 70.3 ns
160+
FourierTransformDaubechiesScaling<double, 2> 330 ns
161+
FourierTransformDaubechiesScaling<double, 3> 335 ns
162+
FourierTransformDaubechiesScaling<double, 4> 364 ns
163+
FourierTransformDaubechiesScaling<double, 5> 386 ns
164+
FourierTransformDaubechiesScaling<double, 6> 436 ns
165+
FourierTransformDaubechiesScaling<double, 7> 447 ns
166+
FourierTransformDaubechiesScaling<double, 8> 473 ns
167+
FourierTransformDaubechiesScaling<double, 9> 503 ns
168+
FourierTransformDaubechiesScaling<double, 10> 554 ns
169+
170+
Due to the low accuracy of this method, `float` precision is arg-promoted to `double`, and hence takes just as long as `double` precision to execute.
171+
130172
[heading References]
131173

132174
* Daubechies, Ingrid. ['Ten Lectures on Wavelets.] Vol. 61. Siam, 1992.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// (C) Copyright Nick Thompson 2023.
2+
// Use, modification and distribution are subject to the
3+
// Boost Software License, Version 1.0. (See accompanying file
4+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5+
6+
#include <utility>
7+
#include <boost/math/filters/daubechies.hpp>
8+
#include <boost/math/tools/polynomial.hpp>
9+
#include <boost/multiprecision/cpp_bin_float.hpp>
10+
#include <boost/math/constants/constants.hpp>
11+
12+
using std::pow;
13+
using boost::multiprecision::cpp_bin_float_100;
14+
using boost::math::filters::daubechies_scaling_filter;
15+
using boost::math::tools::polynomial;
16+
using boost::math::constants::half;
17+
using boost::math::constants::root_two;
18+
19+
template<typename Real, size_t N>
20+
std::vector<Real> get_constants() {
21+
auto h = daubechies_scaling_filter<cpp_bin_float_100, N>();
22+
auto p = polynomial<cpp_bin_float_100>(h.begin(), h.end());
23+
24+
auto q = polynomial({half<cpp_bin_float_100>(), half<cpp_bin_float_100>()});
25+
q = pow(q, N);
26+
auto l = p/q;
27+
return l.data();
28+
}
29+
30+
template<typename Real>
31+
void print_constants(std::vector<Real> const & l) {
32+
std::cout << std::setprecision(std::numeric_limits<Real>::digits10 -10);
33+
std::cout << "return std::array<Real, " << l.size() << ">{";
34+
for (size_t i = 0; i < l.size() - 1; ++i) {
35+
std::cout << "BOOST_MATH_BIG_CONSTANT(Real, std::numeric_limits<Real>::digits, " << l[i]/root_two<Real>() << "), ";
36+
}
37+
std::cout << "BOOST_MATH_BIG_CONSTANT(Real, std::numeric_limits<Real>::digits, " << l.back()/root_two<Real>() << ")};\n";
38+
}
39+
40+
int main() {
41+
auto constants = get_constants<cpp_bin_float_100, 1>();
42+
print_constants(constants);
43+
}

0 commit comments

Comments
 (0)