Skip to content

Commit fafbbcb

Browse files
committed
More modernization
1 parent b3b8187 commit fafbbcb

21 files changed

Lines changed: 480 additions & 344 deletions

code_snippets/chapter12/chapter12.sh

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22
#
3-
# Copyright Christopher Kormanyos 2023.
3+
# Copyright Christopher Kormanyos 2023 - 2025.
44
# Distributed under the Boost Software License,
55
# Version 1.0. (See accompanying file LICENSE_1_0.txt
66
# or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -24,28 +24,39 @@ rm -f ./bin/*.*
2424

2525
echo build snippets with GCC=$GCC STD=$STD
2626

27-
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_01-001_sinc_function.cpp -o ./bin/chapter12_01-001_sinc_function.exe
28-
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_04-001_ellint_1.cpp -o ./bin/chapter12_04-001_ellint_1.exe
27+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_01-001_area_of_circle.cpp -o ./bin/chapter12_01-001_area_of_circle.exe
28+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_01-002_sinc_function.cpp -o ./bin/chapter12_01-002_sinc_function.exe
29+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_02-001_numbers_pi.cpp -o ./bin/chapter12_02-001_numbers_pi.exe
30+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_02-002_area_of_circle.cpp -o ./bin/chapter12_02-002_area_of_circle.exe
31+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_02-003_zeta_three.cpp -o ./bin/chapter12_02-003_zeta_three.exe
32+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_03-001_elem_func_sin.cpp -o ./bin/chapter12_03-001_elem_func_sin.exe
2933
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_04-001_tgamma.cpp -o ./bin/chapter12_04-001_tgamma.exe
30-
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_04-002_euler_gamma_approx.cpp -o ./bin/chapter12_04-002_euler_gamma_approx.exe
34+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_04-002_cyl_bessel_j.cpp -o ./bin/chapter12_04-002_cyl_bessel_j.exe
35+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_04-003_ellint_1.cpp -o ./bin/chapter12_04-003_ellint_1.exe
36+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_04-004_euler_gamma_approx.cpp -o ./bin/chapter12_04-004_euler_gamma_approx.exe
3137
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_05-001_complex.cpp -o ./bin/chapter12_05-001_complex.exe
32-
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_05-002_complex_sinc_function.cpp -o ./bin/chapter12_05-002_complex_sinc_function.exe
38+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_05-002_complex.cpp -o ./bin/chapter12_05-002_complex.exe
39+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_05-003_complex_sinc_function.cpp -o ./bin/chapter12_05-003_complex_sinc_function.exe
3340
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_06-001_constexpr_sine.cpp -o ./bin/chapter12_06-001_constexpr_sine.exe
34-
$GCC -std=c++11 -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_06-002_constexpr_exp.cpp -o ./bin/chapter12_06-002_constexpr_exp.exe
35-
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_07-001_area_of_a_circle.cpp -o ./bin/chapter12_07-001_area_of_a_circle.exe
36-
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_07-002_derivative.cpp -o ./bin/chapter12_07-002_derivative.exe
41+
$GCC -std=$STD -Wall -Wextra -Wpedantic -Werror -O3 -m64 -fsanitize=address -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=null -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=enum ./chapter12_07-001_derivative.cpp -o ./bin/chapter12_07-001_derivative.exe
3742

3843
ls -la \
39-
./bin/chapter12_01-001_sinc_function.exe \
40-
./bin/chapter12_04-001_ellint_1.exe \
44+
./bin/chapter12_01-001_area_of_circle.exe \
45+
./bin/chapter12_01-002_sinc_function.exe \
46+
./bin/chapter12_02-001_numbers_pi.exe \
47+
./bin/chapter12_02-002_area_of_circle.exe \
48+
./bin/chapter12_02-003_zeta_three.exe \
49+
./bin/chapter12_03-001_elem_func_sin.exe \
4150
./bin/chapter12_04-001_tgamma.exe \
42-
./bin/chapter12_04-002_euler_gamma_approx.exe \
51+
./bin/chapter12_04-002_cyl_bessel_j.exe \
52+
./bin/chapter12_04-003_ellint_1.exe \
53+
./bin/chapter12_04-004_euler_gamma_approx.exe \
4354
./bin/chapter12_05-001_complex.exe \
44-
./bin/chapter12_05-002_complex_sinc_function.exe \
55+
./bin/chapter12_05-002_complex.exe \
56+
./bin/chapter12_05-003_complex_sinc_function.exe \
4557
./bin/chapter12_06-001_constexpr_sine.exe \
4658
./bin/chapter12_06-002_constexpr_exp.exe \
47-
./bin/chapter12_07-001_area_of_a_circle.exe \
48-
./bin/chapter12_07-002_derivative.exe
59+
./bin/chapter12_07-001_derivative.exe
4960

5061
result_ls=$?
5162

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
///////////////////////////////////////////////////////////////////////////////
2+
// Copyright Christopher Kormanyos 2025.
3+
// Distributed under the Boost Software License,
4+
// Version 1.0. (See accompanying file LICENSE_1_0.txt
5+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
6+
//
7+
8+
// chapter12_01-001_area_of_circle.cpp
9+
10+
#include <cmath>
11+
#include <format>
12+
#include <limits>
13+
#include <iomanip>
14+
#include <iostream>
15+
#include <numbers>
16+
#include <sstream>
17+
18+
constexpr auto area_of_a_circle(float r) -> float
19+
{
20+
return (std::numbers::pi_v<float> * r) * r;
21+
}
22+
23+
auto main() -> int;
24+
25+
auto main() -> int
26+
{
27+
std::stringstream strm { };
28+
29+
strm << "area_of_a_circle(0.5F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << area_of_a_circle(0.5F) << '\n';
30+
strm << "area_of_a_circle(1.5F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << area_of_a_circle(1.5F) << '\n';
31+
32+
std::cout << strm.str() << std::endl;
33+
}

code_snippets/chapter12/chapter12_01-001_sinc_function.cpp renamed to code_snippets/chapter12/chapter12_01-002_sinc_function.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
///////////////////////////////////////////////////////////////////////////////
2-
// Copyright Christopher Kormanyos 2017 - 2018.
2+
// Copyright Christopher Kormanyos 2025.
33
// Distributed under the Boost Software License,
44
// Version 1.0. (See accompanying file LICENSE_1_0.txt
55
// or copy at http://www.boost.org/LICENSE_1_0.txt)
66
//
77

8-
// chapter12_01-001_sinc_function.cpp
8+
// chapter12_01-002_sinc_function.cpp
99

1010
#include <cmath>
11+
#include <limits>
1112
#include <iomanip>
1213
#include <iostream>
13-
#include <limits>
14+
#include <sstream>
1415

15-
float sinc(const float& x)
16+
auto sinc(const float& x) -> float
1617
{
1718
if(std::fabs(x) <
1819
std::numeric_limits<float>::epsilon())
@@ -36,20 +37,19 @@ float sinc(const float& x)
3637
}
3738
}
3839

39-
int main()
40+
auto main() -> int;
41+
42+
auto main() -> int
4043
{
41-
// 1
42-
std::cout << std::setprecision(std::numeric_limits<float>::digits10)
43-
<< sinc(1.0E-10F)
44-
<< std::endl;
45-
46-
// 0.999904
47-
std::cout << std::setprecision(std::numeric_limits<float>::digits10)
48-
<< sinc(0.024F)
49-
<< std::endl;
50-
51-
// 0.664997
52-
std::cout << std::setprecision(std::numeric_limits<float>::digits10)
53-
<< sinc(1.5F)
54-
<< std::endl;
44+
std::stringstream strm { };
45+
46+
// N[Sin[1/64]/(1/64), 12]
47+
// N[Sin[1/8]/(1/8), 12]
48+
// N[Sin[5/4]/(5/4), 12]
49+
50+
strm << "sinc(0.015625F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << sinc(0.0078125F) << '\n';
51+
strm << "sinc(0.125F) : " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << sinc(0.125F) << '\n';
52+
strm << "sinc(1.25F) : " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << sinc(1.25F) << '\n';
53+
54+
std::cout << strm.str() << std::endl;
5555
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
///////////////////////////////////////////////////////////////////////////////
2+
// Copyright Christopher Kormanyos 2025.
3+
// Distributed under the Boost Software License,
4+
// Version 1.0. (See accompanying file LICENSE_1_0.txt
5+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
6+
//
7+
8+
// chapter12_02-001_numbers_pi.cpp
9+
10+
#include <limits>
11+
#include <iomanip>
12+
#include <iostream>
13+
#include <numbers>
14+
#include <sstream>
15+
16+
auto main() -> int;
17+
18+
auto main() -> int
19+
{
20+
std::stringstream strm { };
21+
22+
constexpr float pi_f = std::numbers::pi_v<float>;
23+
constexpr double pi_d = std::numbers::pi_v<double>;
24+
25+
strm << "pi_f: " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << pi_f << '\n';
26+
strm << "pi_d: " << std::fixed << std::setprecision(std::numeric_limits<double>::digits10) << pi_d << '\n';
27+
28+
std::cout << strm.str() << std::endl;
29+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
///////////////////////////////////////////////////////////////////////////////
2+
// Copyright Christopher Kormanyos 2025.
3+
// Distributed under the Boost Software License,
4+
// Version 1.0. (See accompanying file LICENSE_1_0.txt
5+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
6+
//
7+
8+
// chapter12_02-002_area_of_circle.cpp
9+
10+
#include <cmath>
11+
#include <concepts>
12+
#include <limits>
13+
#include <iomanip>
14+
#include <iostream>
15+
#include <numbers>
16+
#include <sstream>
17+
18+
template<typename T>
19+
requires std::floating_point<T>
20+
constexpr auto area_of_a_circle(T r) -> T
21+
{
22+
return (std::numbers::pi_v<T> * r) * r;
23+
}
24+
25+
auto main() -> int;
26+
27+
auto main() -> int
28+
{
29+
std::stringstream strm { };
30+
31+
strm << "area_of_a_circle(0.5F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << area_of_a_circle(0.5F) << '\n';
32+
strm << "area_of_a_circle(1.5) : " << std::fixed << std::setprecision(std::numeric_limits<double>::digits10) << area_of_a_circle(1.5) << '\n';
33+
34+
std::cout << strm.str() << std::endl;
35+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
///////////////////////////////////////////////////////////////////////////////
2+
// Copyright Christopher Kormanyos 2025.
3+
// Distributed under the Boost Software License,
4+
// Version 1.0. (See accompanying file LICENSE_1_0.txt
5+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
6+
//
7+
8+
// chapter12_02-003_zeta_three.cpp
9+
10+
#include <concepts>
11+
#include <limits>
12+
#include <iomanip>
13+
#include <iostream>
14+
#include <numbers>
15+
#include <sstream>
16+
17+
template<typename T>
18+
requires std::floating_point<T>
19+
constexpr T zeta_three_v =
20+
T(1.2020569031'5959428539'9738161511'4499907650L);
21+
22+
auto main() -> int;
23+
24+
auto main() -> int
25+
{
26+
std::stringstream strm { };
27+
28+
constexpr float z3_f = zeta_three_v<float>;
29+
constexpr double z3_d = zeta_three_v<double>;
30+
31+
strm << "z3_f: " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << z3_f << '\n';
32+
strm << "z3_d: " << std::fixed << std::setprecision(std::numeric_limits<double>::digits10) << z3_d << '\n';
33+
34+
std::cout << strm.str() << std::endl;
35+
}
36+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
///////////////////////////////////////////////////////////////////////////////
2+
// Copyright Christopher Kormanyos 2025.
3+
// Distributed under the Boost Software License,
4+
// Version 1.0. (See accompanying file LICENSE_1_0.txt
5+
// or copy at http://www.boost.org/LICENSE_1_0.txt)
6+
//
7+
8+
// chapter12_03-001_elem_func_sin.cpp
9+
10+
#include <cmath>
11+
#include <limits>
12+
#include <iomanip>
13+
#include <iostream>
14+
#include <sstream>
15+
16+
auto main() -> int;
17+
18+
auto main() -> int
19+
{
20+
std::stringstream strm { };
21+
22+
const float s { std::sin(1.23F) };
23+
24+
strm << "s: " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << s << '\n';
25+
26+
std::cout << strm.str() << std::endl;
27+
}

code_snippets/chapter12/chapter12_04-001_ellint_1.cpp

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)