Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 31 additions & 15 deletions code_snippets/chapter12/chapter12.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
# Copyright Christopher Kormanyos 2023.
# Copyright Christopher Kormanyos 2023 - 2025.
# Distributed under the Boost Software License,
# Version 1.0. (See accompanying file LICENSE_1_0.txt
# or copy at http://www.boost.org/LICENSE_1_0.txt)
Expand All @@ -24,28 +24,44 @@ rm -f ./bin/*.*

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

$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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
$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.cpp -o ./bin/chapter12_05-003_complex.exe
$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-004_complex_sinc_function.cpp -o ./bin/chapter12_05-004_complex_sinc_function.exe
$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
$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
$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
$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
$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
$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_deriv_quadratic.cpp -o ./bin/chapter12_07-002_deriv_quadratic.exe
$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-003_integral_j2.cpp -o ./bin/chapter12_07-003_integral_j2.exe

ls -la \
./bin/chapter12_01-001_sinc_function.exe \
./bin/chapter12_04-001_ellint_1.exe \
./bin/chapter12_01-001_area_of_circle.exe \
./bin/chapter12_01-002_sinc_function.exe \
./bin/chapter12_02-001_numbers_pi.exe \
./bin/chapter12_02-002_area_of_circle.exe \
./bin/chapter12_02-003_zeta_three.exe \
./bin/chapter12_03-001_elem_func_sin.exe \
./bin/chapter12_04-001_tgamma.exe \
./bin/chapter12_04-002_euler_gamma_approx.exe \
./bin/chapter12_04-002_cyl_bessel_j.exe \
./bin/chapter12_04-003_ellint_1.exe \
./bin/chapter12_04-004_euler_gamma_approx.exe \
./bin/chapter12_05-001_complex.exe \
./bin/chapter12_05-002_complex_sinc_function.exe \
./bin/chapter12_05-002_complex.exe \
./bin/chapter12_05-003_complex.exe \
./bin/chapter12_05-004_complex_sinc_function.exe \
./bin/chapter12_06-001_constexpr_sine.exe \
./bin/chapter12_06-002_constexpr_exp.exe \
./bin/chapter12_07-001_area_of_a_circle.exe \
./bin/chapter12_07-002_derivative.exe
./bin/chapter12_07-001_derivative.exe \
./bin/chapter12_07-002_deriv_quadratic.exe \
./bin/chapter12_07-003_integral_j2.exe

result_ls=$?

Expand Down
33 changes: 33 additions & 0 deletions code_snippets/chapter12/chapter12_01-001_area_of_circle.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright Christopher Kormanyos 2025.
// Distributed under the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//

// chapter12_01-001_area_of_circle.cpp

#include <cmath>
#include <format>
#include <limits>
#include <iomanip>
#include <iostream>
#include <numbers>
#include <sstream>

constexpr auto area_of_a_circle(float r) -> float
{
return (std::numbers::pi_v<float> * r) * r;
}

auto main() -> int;

auto main() -> int
{
std::stringstream strm { };

strm << "area_of_a_circle(0.5F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << area_of_a_circle(0.5F) << '\n';
strm << "area_of_a_circle(1.5F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << area_of_a_circle(1.5F) << '\n';

std::cout << strm.str() << std::endl;
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright Christopher Kormanyos 2017 - 2018.
// Copyright Christopher Kormanyos 2025.
// Distributed under the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//

// chapter12_01-001_sinc_function.cpp
// chapter12_01-002_sinc_function.cpp

#include <cmath>
#include <limits>
#include <iomanip>
#include <iostream>
#include <limits>
#include <sstream>

float sinc(const float& x)
auto sinc(const float& x) -> float
{
if(std::fabs(x) <
std::numeric_limits<float>::epsilon())
Expand All @@ -36,20 +37,19 @@ float sinc(const float& x)
}
}

int main()
auto main() -> int;

auto main() -> int
{
// 1
std::cout << std::setprecision(std::numeric_limits<float>::digits10)
<< sinc(1.0E-10F)
<< std::endl;

// 0.999904
std::cout << std::setprecision(std::numeric_limits<float>::digits10)
<< sinc(0.024F)
<< std::endl;

// 0.664997
std::cout << std::setprecision(std::numeric_limits<float>::digits10)
<< sinc(1.5F)
<< std::endl;
std::stringstream strm { };

// N[Sin[1/64]/(1/64), 12]
// N[Sin[1/8]/(1/8), 12]
// N[Sin[5/4]/(5/4), 12]

strm << "sinc(0.015625F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << sinc(0.0078125F) << '\n';
strm << "sinc(0.125F) : " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << sinc(0.125F) << '\n';
strm << "sinc(1.25F) : " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << sinc(1.25F) << '\n';

std::cout << strm.str() << std::endl;
}
29 changes: 29 additions & 0 deletions code_snippets/chapter12/chapter12_02-001_numbers_pi.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright Christopher Kormanyos 2025.
// Distributed under the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//

// chapter12_02-001_numbers_pi.cpp

#include <limits>
#include <iomanip>
#include <iostream>
#include <numbers>
#include <sstream>

auto main() -> int;

auto main() -> int
{
std::stringstream strm { };

constexpr float pi_f = std::numbers::pi_v<float>;
constexpr double pi_d = std::numbers::pi_v<double>;

strm << "pi_f: " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << pi_f << '\n';
strm << "pi_d: " << std::fixed << std::setprecision(std::numeric_limits<double>::digits10) << pi_d << '\n';

std::cout << strm.str() << std::endl;
}
35 changes: 35 additions & 0 deletions code_snippets/chapter12/chapter12_02-002_area_of_circle.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright Christopher Kormanyos 2025.
// Distributed under the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//

// chapter12_02-002_area_of_circle.cpp

#include <cmath>
#include <concepts>
#include <limits>
#include <iomanip>
#include <iostream>
#include <numbers>
#include <sstream>

template<typename T>
requires std::floating_point<T>
constexpr auto area_of_a_circle(T r) -> T
{
return (std::numbers::pi_v<T> * r) * r;
}

auto main() -> int;

auto main() -> int
{
std::stringstream strm { };

strm << "area_of_a_circle(0.5F): " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << area_of_a_circle(0.5F) << '\n';
strm << "area_of_a_circle(1.5) : " << std::fixed << std::setprecision(std::numeric_limits<double>::digits10) << area_of_a_circle(1.5) << '\n';

std::cout << strm.str() << std::endl;
}
36 changes: 36 additions & 0 deletions code_snippets/chapter12/chapter12_02-003_zeta_three.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright Christopher Kormanyos 2025.
// Distributed under the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//

// chapter12_02-003_zeta_three.cpp

#include <concepts>
#include <limits>
#include <iomanip>
#include <iostream>
#include <numbers>
#include <sstream>

template<typename T>
requires std::floating_point<T>
constexpr T zeta_three_v =
T(1.2020569031'5959428539'9738161511'4499907650L);

auto main() -> int;

auto main() -> int
{
std::stringstream strm { };

constexpr float z3_f = zeta_three_v<float>;
constexpr double z3_d = zeta_three_v<double>;

strm << "z3_f: " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << z3_f << '\n';
strm << "z3_d: " << std::fixed << std::setprecision(std::numeric_limits<double>::digits10) << z3_d << '\n';

std::cout << strm.str() << std::endl;
}

27 changes: 27 additions & 0 deletions code_snippets/chapter12/chapter12_03-001_elem_func_sin.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright Christopher Kormanyos 2025.
// Distributed under the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
//

// chapter12_03-001_elem_func_sin.cpp

#include <cmath>
#include <limits>
#include <iomanip>
#include <iostream>
#include <sstream>

auto main() -> int;

auto main() -> int
{
std::stringstream strm { };

const float s { std::sin(1.23F) };

strm << "s: " << std::fixed << std::setprecision(std::numeric_limits<float>::digits10) << s << '\n';

std::cout << strm.str() << std::endl;
}
37 changes: 0 additions & 37 deletions code_snippets/chapter12/chapter12_04-001_ellint_1.cpp

This file was deleted.

Loading