From 610756ffedfda5ac2fb97c3de462c4dee99ea457 Mon Sep 17 00:00:00 2001 From: Andrey Pokidov Date: Mon, 23 Mar 2026 18:55:33 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=B2=D0=B0=D0=BB=D0=B8=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D1=82=D0=BE=D1=80=D0=B0=20const,=20=D0=BA=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D1=8B=D0=B9=20=D0=B7=D0=B0=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D1=89=D0=B0=D0=B5=D1=82=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic-geometry/complex.c | 128 ++++++++--------- basic-geometry/complex.h | 128 ++++++++--------- basic-geometry/dual-number.c | 96 ++++++------- basic-geometry/dual-number.h | 108 +++++++------- basic-geometry/dual-quaternion.c | 136 +++++++++--------- basic-geometry/dual-quaternion.h | 136 +++++++++--------- basic-geometry/quaternion.c | 188 ++++++++++++------------ basic-geometry/quaternion.h | 188 ++++++++++++------------ basic-geometry/rigid-pose3.c | 108 +++++++------- basic-geometry/rigid-pose3.h | 108 +++++++------- basic-geometry/vector2.c | 158 ++++++++++----------- basic-geometry/vector2.h | 136 +++++++++--------- basic-geometry/vector3.c | 236 ++++++++++++++++++------------- basic-geometry/vector3.h | 204 ++++++++++---------------- 14 files changed, 1019 insertions(+), 1039 deletions(-) diff --git a/basic-geometry/complex.c b/basic-geometry/complex.c index 9f5f9cd..0890bc3 100644 --- a/basic-geometry/complex.c +++ b/basic-geometry/complex.c @@ -1,101 +1,101 @@ #include "./complex.h" -extern inline void bgc_fp32_complex_reset(BGC_FP32_Complex* complex); -extern inline void bgc_fp64_complex_reset(BGC_FP64_Complex* complex); +extern inline void bgc_fp32_complex_reset(BGC_FP32_Complex* const complex); +extern inline void bgc_fp64_complex_reset(BGC_FP64_Complex* const complex); -extern inline void bgc_fp32_complex_make(BGC_FP32_Complex* complex, const float real, const float imaginary); -extern inline void bgc_fp64_complex_make(BGC_FP64_Complex* complex, const double real, const double imaginary); +extern inline void bgc_fp32_complex_make(BGC_FP32_Complex* const complex, const float real, const float imaginary); +extern inline void bgc_fp64_complex_make(BGC_FP64_Complex* const complex, const double real, const double imaginary); -extern inline float bgc_fp32_complex_get_square_modulus(const BGC_FP32_Complex* number); -extern inline double bgc_fp64_complex_get_square_modulus(const BGC_FP64_Complex* number); +extern inline float bgc_fp32_complex_get_square_modulus(const BGC_FP32_Complex* const number); +extern inline double bgc_fp64_complex_get_square_modulus(const BGC_FP64_Complex* const number); -extern inline float bgc_fp32_complex_get_modulus(const BGC_FP32_Complex* number); -extern inline double bgc_fp64_complex_get_modulus(const BGC_FP64_Complex* number); +extern inline float bgc_fp32_complex_get_modulus(const BGC_FP32_Complex* const number); +extern inline double bgc_fp64_complex_get_modulus(const BGC_FP64_Complex* const number); -extern inline int bgc_fp32_complex_is_zero(const BGC_FP32_Complex* number); -extern inline int bgc_fp64_complex_is_zero(const BGC_FP64_Complex* number); +extern inline int bgc_fp32_complex_is_zero(const BGC_FP32_Complex* const number); +extern inline int bgc_fp64_complex_is_zero(const BGC_FP64_Complex* const number); -extern inline int bgc_fp32_complex_is_unit(const BGC_FP32_Complex* number); -extern inline int bgc_fp64_complex_is_unit(const BGC_FP64_Complex* number); +extern inline int bgc_fp32_complex_is_unit(const BGC_FP32_Complex* const number); +extern inline int bgc_fp64_complex_is_unit(const BGC_FP64_Complex* const number); -extern inline void bgc_fp32_complex_copy(BGC_FP32_Complex* destination, const BGC_FP32_Complex* source); -extern inline void bgc_fp64_complex_copy(BGC_FP64_Complex* destination, const BGC_FP64_Complex* source); +extern inline void bgc_fp32_complex_copy(BGC_FP32_Complex* const destination, const BGC_FP32_Complex* const source); +extern inline void bgc_fp64_complex_copy(BGC_FP64_Complex* const destination, const BGC_FP64_Complex* const source); -extern inline void bgc_fp32_complex_swap(BGC_FP32_Complex* number1, BGC_FP32_Complex* number2); -extern inline void bgc_fp64_complex_swap(BGC_FP64_Complex* number1, BGC_FP64_Complex* number2); +extern inline void bgc_fp32_complex_swap(BGC_FP32_Complex* const number1, BGC_FP32_Complex* const number2); +extern inline void bgc_fp64_complex_swap(BGC_FP64_Complex* const number1, BGC_FP64_Complex* const number2); -extern inline void bgc_fp64_complex_convert_to_fp32(BGC_FP32_Complex* destination, const BGC_FP64_Complex* source); -extern inline void bgc_fp32_complex_convert_to_fp64(BGC_FP64_Complex* destination, const BGC_FP32_Complex* source); +extern inline void bgc_fp64_complex_convert_to_fp32(BGC_FP32_Complex* const destination, const BGC_FP64_Complex* const source); +extern inline void bgc_fp32_complex_convert_to_fp64(BGC_FP64_Complex* const destination, const BGC_FP32_Complex* const source); -extern inline void bgc_fp32_complex_revert(BGC_FP32_Complex* number); -extern inline void bgc_fp64_complex_revert(BGC_FP64_Complex* number); +extern inline void bgc_fp32_complex_revert(BGC_FP32_Complex* const number); +extern inline void bgc_fp64_complex_revert(BGC_FP64_Complex* const number); -extern inline void bgc_fp32_complex_get_reverse(BGC_FP32_Complex* reverse, const BGC_FP32_Complex* number); -extern inline void bgc_fp64_complex_get_reverse(BGC_FP64_Complex* reverse, const BGC_FP64_Complex* number); +extern inline void bgc_fp32_complex_get_reverse(BGC_FP32_Complex* const reverse, const BGC_FP32_Complex* const number); +extern inline void bgc_fp64_complex_get_reverse(BGC_FP64_Complex* const reverse, const BGC_FP64_Complex* const number); -extern inline int bgc_fp32_complex_normalize(BGC_FP32_Complex* number); -extern inline int bgc_fp64_complex_normalize(BGC_FP64_Complex* number); +extern inline int bgc_fp32_complex_normalize(BGC_FP32_Complex* const number); +extern inline int bgc_fp64_complex_normalize(BGC_FP64_Complex* const number); -extern inline int bgc_fp32_complex_get_normalized(BGC_FP32_Complex* normalized, const BGC_FP32_Complex* number); -extern inline int bgc_fp64_complex_get_normalized(BGC_FP64_Complex* normalized, const BGC_FP64_Complex* number); +extern inline int bgc_fp32_complex_get_normalized(BGC_FP32_Complex* const normalized, const BGC_FP32_Complex* const number); +extern inline int bgc_fp64_complex_get_normalized(BGC_FP64_Complex* const normalized, const BGC_FP64_Complex* const number); -extern inline void bgc_fp32_complex_conjugate(BGC_FP32_Complex* number); -extern inline void bgc_fp64_complex_conjugate(BGC_FP64_Complex* number); +extern inline void bgc_fp32_complex_conjugate(BGC_FP32_Complex* const number); +extern inline void bgc_fp64_complex_conjugate(BGC_FP64_Complex* const number); -extern inline void bgc_fp32_complex_get_conjugate(BGC_FP32_Complex* conjugate, const BGC_FP32_Complex* number); -extern inline void bgc_fp64_complex_get_conjugate(BGC_FP64_Complex* conjugate, const BGC_FP64_Complex* number); +extern inline void bgc_fp32_complex_get_conjugate(BGC_FP32_Complex* const conjugate, const BGC_FP32_Complex* const number); +extern inline void bgc_fp64_complex_get_conjugate(BGC_FP64_Complex* const conjugate, const BGC_FP64_Complex* const number); -extern inline int bgc_fp32_complex_invert(BGC_FP32_Complex* number); -extern inline int bgc_fp64_complex_invert(BGC_FP64_Complex* number); +extern inline int bgc_fp32_complex_invert(BGC_FP32_Complex* const number); +extern inline int bgc_fp64_complex_invert(BGC_FP64_Complex* const number); -extern inline int bgc_fp32_complex_get_inverse(BGC_FP32_Complex* inverse, const BGC_FP32_Complex* number); -extern inline int bgc_fp64_complex_get_inverse(BGC_FP64_Complex* inverse, const BGC_FP64_Complex* number); +extern inline int bgc_fp32_complex_get_inverse(BGC_FP32_Complex* const inverse, const BGC_FP32_Complex* const number); +extern inline int bgc_fp64_complex_get_inverse(BGC_FP64_Complex* const inverse, const BGC_FP64_Complex* const number); -extern inline void bgc_fp32_complex_add(BGC_FP32_Complex* sum, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2); -extern inline void bgc_fp64_complex_add(BGC_FP64_Complex* sum, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2); +extern inline void bgc_fp32_complex_add(BGC_FP32_Complex* const sum, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2); +extern inline void bgc_fp64_complex_add(BGC_FP64_Complex* const sum, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2); -extern inline void bgc_fp32_complex_add_scaled(BGC_FP32_Complex* sum, const BGC_FP32_Complex* basic_number, const BGC_FP32_Complex* scalable_number, const float scale); -extern inline void bgc_fp64_complex_add_scaled(BGC_FP64_Complex* sum, const BGC_FP64_Complex* basic_number, const BGC_FP64_Complex* scalable_number, const double scale); +extern inline void bgc_fp32_complex_add_scaled(BGC_FP32_Complex* const sum, const BGC_FP32_Complex* const basic_number, const BGC_FP32_Complex* const scalable_number, const float scale); +extern inline void bgc_fp64_complex_add_scaled(BGC_FP64_Complex* const sum, const BGC_FP64_Complex* const basic_number, const BGC_FP64_Complex* const scalable_number, const double scale); -extern inline void bgc_fp32_complex_subtract(BGC_FP32_Complex* difference, const BGC_FP32_Complex* minuend, const BGC_FP32_Complex* subtrahend); -extern inline void bgc_fp64_complex_subtract(BGC_FP64_Complex* difference, const BGC_FP64_Complex* minuend, const BGC_FP64_Complex* subtrahend); +extern inline void bgc_fp32_complex_subtract(BGC_FP32_Complex* const difference, const BGC_FP32_Complex* const minuend, const BGC_FP32_Complex* const subtrahend); +extern inline void bgc_fp64_complex_subtract(BGC_FP64_Complex* const difference, const BGC_FP64_Complex* const minuend, const BGC_FP64_Complex* const subtrahend); -extern inline void bgc_fp32_complex_subtract_scaled(BGC_FP32_Complex* difference, const BGC_FP32_Complex* basic_number, const BGC_FP32_Complex* scalable_number, const float scale); -extern inline void bgc_fp64_complex_subtract_scaled(BGC_FP64_Complex* difference, const BGC_FP64_Complex* basic_number, const BGC_FP64_Complex* scalable_number, const double scale); +extern inline void bgc_fp32_complex_subtract_scaled(BGC_FP32_Complex* const difference, const BGC_FP32_Complex* const basic_number, const BGC_FP32_Complex* const scalable_number, const float scale); +extern inline void bgc_fp64_complex_subtract_scaled(BGC_FP64_Complex* const difference, const BGC_FP64_Complex* const basic_number, const BGC_FP64_Complex* const scalable_number, const double scale); -extern inline void bgc_fp32_complex_multiply_by_real(BGC_FP32_Complex* product, const BGC_FP32_Complex* multiplicand, const float multiplier); -extern inline void bgc_fp64_complex_multiply_by_real(BGC_FP64_Complex* product, const BGC_FP64_Complex* multiplicand, const double multiplier); +extern inline void bgc_fp32_complex_multiply_by_real(BGC_FP32_Complex* const product, const BGC_FP32_Complex* const multiplicand, const float multiplier); +extern inline void bgc_fp64_complex_multiply_by_real(BGC_FP64_Complex* const product, const BGC_FP64_Complex* const multiplicand, const double multiplier); -extern inline void bgc_fp32_complex_multiply_by_complex(BGC_FP32_Complex* product, const BGC_FP32_Complex* multiplicand, const BGC_FP32_Complex* multiplier); -extern inline void bgc_fp64_complex_multiply_by_complex(BGC_FP64_Complex* product, const BGC_FP64_Complex* multiplicand, const BGC_FP64_Complex* multiplier); +extern inline void bgc_fp32_complex_multiply_by_complex(BGC_FP32_Complex* const product, const BGC_FP32_Complex* const multiplicand, const BGC_FP32_Complex* const multiplier); +extern inline void bgc_fp64_complex_multiply_by_complex(BGC_FP64_Complex* const product, const BGC_FP64_Complex* const multiplicand, const BGC_FP64_Complex* const multiplier); -extern inline void bgc_fp32_complex_multiply_by_conjugate(BGC_FP32_Complex* product, const BGC_FP32_Complex* multiplicand, const BGC_FP32_Complex* multiplier_to_conjugate); -extern inline void bgc_fp64_complex_multiply_by_conjugate(BGC_FP64_Complex* product, const BGC_FP64_Complex* multiplicand, const BGC_FP64_Complex* multiplier_to_conjugate); +extern inline void bgc_fp32_complex_multiply_by_conjugate(BGC_FP32_Complex* const product, const BGC_FP32_Complex* const multiplicand, const BGC_FP32_Complex* const multiplier_to_conjugate); +extern inline void bgc_fp64_complex_multiply_by_conjugate(BGC_FP64_Complex* const product, const BGC_FP64_Complex* const multiplicand, const BGC_FP64_Complex* const multiplier_to_conjugate); -extern inline int bgc_fp32_complex_divide_by_real(BGC_FP32_Complex* quotient, const BGC_FP32_Complex* dividend, const float divisor); -extern inline int bgc_fp64_complex_divide_by_real(BGC_FP64_Complex* quotient, const BGC_FP64_Complex* dividend, const double divisor); +extern inline int bgc_fp32_complex_divide_by_real(BGC_FP32_Complex* const quotient, const BGC_FP32_Complex* const dividend, const float divisor); +extern inline int bgc_fp64_complex_divide_by_real(BGC_FP64_Complex* const quotient, const BGC_FP64_Complex* const dividend, const double divisor); -extern inline int bgc_fp32_complex_divide_by_complex(BGC_FP32_Complex* quotient, const BGC_FP32_Complex* divident, const BGC_FP32_Complex* divisor); -extern inline int bgc_fp64_complex_divide_by_complex(BGC_FP64_Complex* quotient, const BGC_FP64_Complex* divident, const BGC_FP64_Complex* divisor); +extern inline int bgc_fp32_complex_divide_by_complex(BGC_FP32_Complex* const quotient, const BGC_FP32_Complex* const divident, const BGC_FP32_Complex* const divisor); +extern inline int bgc_fp64_complex_divide_by_complex(BGC_FP64_Complex* const quotient, const BGC_FP64_Complex* const divident, const BGC_FP64_Complex* const divisor); -extern inline int bgc_fp32_complex_divide_by_conjugate(BGC_FP32_Complex* quotient, const BGC_FP32_Complex* divident, const BGC_FP32_Complex* divisor_to_conjugate); -extern inline int bgc_fp64_complex_divide_by_conjugate(BGC_FP64_Complex* quotient, const BGC_FP64_Complex* divident, const BGC_FP64_Complex* divisor_to_conjugate); +extern inline int bgc_fp32_complex_divide_by_conjugate(BGC_FP32_Complex* const quotient, const BGC_FP32_Complex* const divident, const BGC_FP32_Complex* const divisor_to_conjugate); +extern inline int bgc_fp64_complex_divide_by_conjugate(BGC_FP64_Complex* const quotient, const BGC_FP64_Complex* const divident, const BGC_FP64_Complex* const divisor_to_conjugate); -extern inline void bgc_fp32_complex_get_mean2(BGC_FP32_Complex* mean, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2); -extern inline void bgc_fp64_complex_get_mean2(BGC_FP64_Complex* mean, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2); +extern inline void bgc_fp32_complex_get_mean2(BGC_FP32_Complex* const mean, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2); +extern inline void bgc_fp64_complex_get_mean2(BGC_FP64_Complex* const mean, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2); -extern inline void bgc_fp32_complex_get_mean3(BGC_FP32_Complex* mean, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2, const BGC_FP32_Complex* number3); -extern inline void bgc_fp64_complex_get_mean3(BGC_FP64_Complex* mean, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2, const BGC_FP64_Complex* number3); +extern inline void bgc_fp32_complex_get_mean3(BGC_FP32_Complex* const mean, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2, const BGC_FP32_Complex* const number3); +extern inline void bgc_fp64_complex_get_mean3(BGC_FP64_Complex* const mean, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2, const BGC_FP64_Complex* const number3); -extern inline void bgc_fp32_complex_interpolate(BGC_FP32_Complex* interpolation, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2, const float phase); -extern inline void bgc_fp64_complex_interpolate(BGC_FP64_Complex* interpolation, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2, const double phase); +extern inline void bgc_fp32_complex_interpolate(BGC_FP32_Complex* const interpolation, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2, const float phase); +extern inline void bgc_fp64_complex_interpolate(BGC_FP64_Complex* const interpolation, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2, const double phase); -extern inline int bgc_fp32_complex_are_close(const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2); -extern inline int bgc_fp64_complex_are_close(const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2); +extern inline int bgc_fp32_complex_are_close(const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2); +extern inline int bgc_fp64_complex_are_close(const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2); // =============== Get Exponation =============== // -void bgc_fp32_complex_get_power(BGC_FP32_Complex* power, const BGC_FP32_Complex* base, const float real_exponent, const float imaginary_exponent) +void bgc_fp32_complex_get_power(BGC_FP32_Complex* const power, const BGC_FP32_Complex* const base, const float real_exponent, const float imaginary_exponent) { const float square_modulus = bgc_fp32_complex_get_square_modulus(base); @@ -115,7 +115,7 @@ void bgc_fp32_complex_get_power(BGC_FP32_Complex* power, const BGC_FP32_Complex* power->imaginary = power_modulus * sinf(power_angle); } -void bgc_fp64_complex_get_power(BGC_FP64_Complex* power, const BGC_FP64_Complex* base, const double real_exponent, const double imaginary_exponent) +void bgc_fp64_complex_get_power(BGC_FP64_Complex* const power, const BGC_FP64_Complex* const base, const double real_exponent, const double imaginary_exponent) { const double square_modulus = bgc_fp64_complex_get_square_modulus(base); diff --git a/basic-geometry/complex.h b/basic-geometry/complex.h index efda841..a3f4fc7 100644 --- a/basic-geometry/complex.h +++ b/basic-geometry/complex.h @@ -9,13 +9,13 @@ // =================== Reset ==================== // -inline void bgc_fp32_complex_reset(BGC_FP32_Complex* complex) +inline void bgc_fp32_complex_reset(BGC_FP32_Complex* const complex) { complex->real = 0.0f; complex->imaginary = 0.0f; } -inline void bgc_fp64_complex_reset(BGC_FP64_Complex* complex) +inline void bgc_fp64_complex_reset(BGC_FP64_Complex* const complex) { complex->real = 0.0; complex->imaginary = 0.0; @@ -23,13 +23,13 @@ inline void bgc_fp64_complex_reset(BGC_FP64_Complex* complex) // ==================== Set ===================== // -inline void bgc_fp32_complex_make(BGC_FP32_Complex* complex, const float real, const float imaginary) +inline void bgc_fp32_complex_make(BGC_FP32_Complex* const complex, const float real, const float imaginary) { complex->real = real; complex->imaginary = imaginary; } -inline void bgc_fp64_complex_make(BGC_FP64_Complex* complex, const double real, const double imaginary) +inline void bgc_fp64_complex_make(BGC_FP64_Complex* const complex, const double real, const double imaginary) { complex->real = real; complex->imaginary = imaginary; @@ -37,57 +37,57 @@ inline void bgc_fp64_complex_make(BGC_FP64_Complex* complex, const double real, // ================== Modulus =================== // -inline float bgc_fp32_complex_get_square_modulus(const BGC_FP32_Complex* number) +inline float bgc_fp32_complex_get_square_modulus(const BGC_FP32_Complex* const number) { return number->real * number->real + number->imaginary * number->imaginary; } -inline double bgc_fp64_complex_get_square_modulus(const BGC_FP64_Complex* number) +inline double bgc_fp64_complex_get_square_modulus(const BGC_FP64_Complex* const number) { return number->real * number->real + number->imaginary * number->imaginary; } -inline float bgc_fp32_complex_get_modulus(const BGC_FP32_Complex* number) +inline float bgc_fp32_complex_get_modulus(const BGC_FP32_Complex* const number) { return sqrtf(bgc_fp32_complex_get_square_modulus(number)); } -inline double bgc_fp64_complex_get_modulus(const BGC_FP64_Complex* number) +inline double bgc_fp64_complex_get_modulus(const BGC_FP64_Complex* const number) { return sqrt(bgc_fp64_complex_get_square_modulus(number)); } // ================= Comparison ================= // -inline int bgc_fp32_complex_is_zero(const BGC_FP32_Complex* number) +inline int bgc_fp32_complex_is_zero(const BGC_FP32_Complex* const number) { return bgc_fp32_complex_get_square_modulus(number) <= BGC_FP32_SQUARE_EPSILON; } -inline int bgc_fp64_complex_is_zero(const BGC_FP64_Complex* number) +inline int bgc_fp64_complex_is_zero(const BGC_FP64_Complex* const number) { return bgc_fp64_complex_get_square_modulus(number) <= BGC_FP64_SQUARE_EPSILON; } -inline int bgc_fp32_complex_is_unit(const BGC_FP32_Complex* number) +inline int bgc_fp32_complex_is_unit(const BGC_FP32_Complex* const number) { return bgc_fp32_is_square_unit(bgc_fp32_complex_get_square_modulus(number)); } -inline int bgc_fp64_complex_is_unit(const BGC_FP64_Complex* number) +inline int bgc_fp64_complex_is_unit(const BGC_FP64_Complex* const number) { return bgc_fp64_is_square_unit(bgc_fp64_complex_get_square_modulus(number)); } // ==================== Copy ==================== // -inline void bgc_fp32_complex_copy(BGC_FP32_Complex* destination, const BGC_FP32_Complex* source) +inline void bgc_fp32_complex_copy(BGC_FP32_Complex* const destination, const BGC_FP32_Complex* const source) { destination->real = source->real; destination->imaginary = source->imaginary; } -inline void bgc_fp64_complex_copy(BGC_FP64_Complex* destination, const BGC_FP64_Complex* source) +inline void bgc_fp64_complex_copy(BGC_FP64_Complex* const destination, const BGC_FP64_Complex* const source) { destination->real = source->real; destination->imaginary = source->imaginary; @@ -95,7 +95,7 @@ inline void bgc_fp64_complex_copy(BGC_FP64_Complex* destination, const BGC_FP64_ // ==================== Swap ==================== // -inline void bgc_fp32_complex_swap(BGC_FP32_Complex* number1, BGC_FP32_Complex* number2) +inline void bgc_fp32_complex_swap(BGC_FP32_Complex* const number1, BGC_FP32_Complex* const number2) { const float real = number2->real; const float imaginary = number2->imaginary; @@ -107,7 +107,7 @@ inline void bgc_fp32_complex_swap(BGC_FP32_Complex* number1, BGC_FP32_Complex* n number1->imaginary = imaginary; } -inline void bgc_fp64_complex_swap(BGC_FP64_Complex* number1, BGC_FP64_Complex* number2) +inline void bgc_fp64_complex_swap(BGC_FP64_Complex* const number1, BGC_FP64_Complex* const number2) { const double real = number2->real; const double imaginary = number2->imaginary; @@ -121,13 +121,13 @@ inline void bgc_fp64_complex_swap(BGC_FP64_Complex* number1, BGC_FP64_Complex* n // ================== Convert =================== // -inline void bgc_fp64_complex_convert_to_fp32(BGC_FP32_Complex* destination, const BGC_FP64_Complex* source) +inline void bgc_fp64_complex_convert_to_fp32(BGC_FP32_Complex* const destination, const BGC_FP64_Complex* const source) { destination->real = (float)source->real; destination->imaginary = (float)source->imaginary; } -inline void bgc_fp32_complex_convert_to_fp64(BGC_FP64_Complex* destination, const BGC_FP32_Complex* source) +inline void bgc_fp32_complex_convert_to_fp64(BGC_FP64_Complex* const destination, const BGC_FP32_Complex* const source) { destination->real = source->real; destination->imaginary = source->imaginary; @@ -135,25 +135,25 @@ inline void bgc_fp32_complex_convert_to_fp64(BGC_FP64_Complex* destination, cons // ================== Negative ================== // -inline void bgc_fp32_complex_revert(BGC_FP32_Complex* number) +inline void bgc_fp32_complex_revert(BGC_FP32_Complex* const number) { number->real = -number->real; number->imaginary = -number->imaginary; } -inline void bgc_fp64_complex_revert(BGC_FP64_Complex* number) +inline void bgc_fp64_complex_revert(BGC_FP64_Complex* const number) { number->real = -number->real; number->imaginary = -number->imaginary; } -inline void bgc_fp32_complex_get_reverse(BGC_FP32_Complex* reverse, const BGC_FP32_Complex* number) +inline void bgc_fp32_complex_get_reverse(BGC_FP32_Complex* const reverse, const BGC_FP32_Complex* const number) { reverse->real = -number->real; reverse->imaginary = -number->imaginary; } -inline void bgc_fp64_complex_get_reverse(BGC_FP64_Complex* reverse, const BGC_FP64_Complex* number) +inline void bgc_fp64_complex_get_reverse(BGC_FP64_Complex* const reverse, const BGC_FP64_Complex* const number) { reverse->real = -number->real; reverse->imaginary = -number->imaginary; @@ -161,7 +161,7 @@ inline void bgc_fp64_complex_get_reverse(BGC_FP64_Complex* reverse, const BGC_FP // ================= Normalize ================== // -inline int bgc_fp32_complex_normalize(BGC_FP32_Complex* number) +inline int bgc_fp32_complex_normalize(BGC_FP32_Complex* const number) { const float square_modulus = bgc_fp32_complex_get_square_modulus(number); @@ -181,7 +181,7 @@ inline int bgc_fp32_complex_normalize(BGC_FP32_Complex* number) return BGC_SUCCESS; } -inline int bgc_fp64_complex_normalize(BGC_FP64_Complex* number) +inline int bgc_fp64_complex_normalize(BGC_FP64_Complex* const number) { const double square_modulus = bgc_fp64_complex_get_square_modulus(number); @@ -201,7 +201,7 @@ inline int bgc_fp64_complex_normalize(BGC_FP64_Complex* number) return BGC_SUCCESS; } -inline int bgc_fp32_complex_get_normalized(BGC_FP32_Complex* normalized, const BGC_FP32_Complex* number) +inline int bgc_fp32_complex_get_normalized(BGC_FP32_Complex* const normalized, const BGC_FP32_Complex* const number) { const float square_modulus = bgc_fp32_complex_get_square_modulus(number); @@ -225,7 +225,7 @@ inline int bgc_fp32_complex_get_normalized(BGC_FP32_Complex* normalized, const B return BGC_SUCCESS; } -inline int bgc_fp64_complex_get_normalized(BGC_FP64_Complex* normalized, const BGC_FP64_Complex* number) +inline int bgc_fp64_complex_get_normalized(BGC_FP64_Complex* const normalized, const BGC_FP64_Complex* const number) { const double square_modulus = bgc_fp64_complex_get_square_modulus(number); @@ -251,23 +251,23 @@ inline int bgc_fp64_complex_get_normalized(BGC_FP64_Complex* normalized, const B // ================= Conjugate ================== // -inline void bgc_fp32_complex_conjugate(BGC_FP32_Complex* number) +inline void bgc_fp32_complex_conjugate(BGC_FP32_Complex* const number) { number->imaginary = -number->imaginary; } -inline void bgc_fp64_complex_conjugate(BGC_FP64_Complex* number) +inline void bgc_fp64_complex_conjugate(BGC_FP64_Complex* const number) { number->imaginary = -number->imaginary; } -inline void bgc_fp32_complex_get_conjugate(BGC_FP32_Complex* conjugate, const BGC_FP32_Complex* number) +inline void bgc_fp32_complex_get_conjugate(BGC_FP32_Complex* const conjugate, const BGC_FP32_Complex* const number) { conjugate->real = number->real; conjugate->imaginary = -number->imaginary; } -inline void bgc_fp64_complex_get_conjugate(BGC_FP64_Complex* conjugate, const BGC_FP64_Complex* number) +inline void bgc_fp64_complex_get_conjugate(BGC_FP64_Complex* const conjugate, const BGC_FP64_Complex* const number) { conjugate->real = number->real; conjugate->imaginary = -number->imaginary; @@ -275,7 +275,7 @@ inline void bgc_fp64_complex_get_conjugate(BGC_FP64_Complex* conjugate, const BG // =================== Invert =================== // -inline int bgc_fp32_complex_get_inverse(BGC_FP32_Complex* inverse, const BGC_FP32_Complex* number) +inline int bgc_fp32_complex_get_inverse(BGC_FP32_Complex* const inverse, const BGC_FP32_Complex* const number) { const float square_modulus = bgc_fp32_complex_get_square_modulus(number); @@ -291,7 +291,7 @@ inline int bgc_fp32_complex_get_inverse(BGC_FP32_Complex* inverse, const BGC_FP3 return BGC_SUCCESS; } -inline int bgc_fp64_complex_get_inverse(BGC_FP64_Complex* inverse, const BGC_FP64_Complex* number) +inline int bgc_fp64_complex_get_inverse(BGC_FP64_Complex* const inverse, const BGC_FP64_Complex* const number) { const double square_modulus = bgc_fp64_complex_get_square_modulus(number); @@ -307,31 +307,31 @@ inline int bgc_fp64_complex_get_inverse(BGC_FP64_Complex* inverse, const BGC_FP6 return BGC_SUCCESS; } -inline int bgc_fp32_complex_invert(BGC_FP32_Complex* number) +inline int bgc_fp32_complex_invert(BGC_FP32_Complex* const number) { return bgc_fp32_complex_get_inverse(number, number); } -inline int bgc_fp64_complex_invert(BGC_FP64_Complex* number) +inline int bgc_fp64_complex_invert(BGC_FP64_Complex* const number) { return bgc_fp64_complex_get_inverse(number, number); } // ================= Get Power ================== // -void bgc_fp32_complex_get_power(BGC_FP32_Complex* power, const BGC_FP32_Complex* base, const float real_exponent, const float imaginary_exponent); +void bgc_fp32_complex_get_power(BGC_FP32_Complex* const power, const BGC_FP32_Complex* const base, const float real_exponent, const float imaginary_exponent); -void bgc_fp64_complex_get_power(BGC_FP64_Complex* power, const BGC_FP64_Complex* base, const double real_exponent, const double imaginary_exponent); +void bgc_fp64_complex_get_power(BGC_FP64_Complex* const power, const BGC_FP64_Complex* const base, const double real_exponent, const double imaginary_exponent); // ==================== Add ===================== // -inline void bgc_fp32_complex_add(BGC_FP32_Complex* sum, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2) +inline void bgc_fp32_complex_add(BGC_FP32_Complex* const sum, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2) { sum->real = number1->real + number2->real; sum->imaginary = number1->imaginary + number2->imaginary; } -inline void bgc_fp64_complex_add(BGC_FP64_Complex* sum, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2) +inline void bgc_fp64_complex_add(BGC_FP64_Complex* const sum, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2) { sum->real = number1->real + number2->real; sum->imaginary = number1->imaginary + number2->imaginary; @@ -339,13 +339,13 @@ inline void bgc_fp64_complex_add(BGC_FP64_Complex* sum, const BGC_FP64_Complex* // ================= Add Scaled ================= // -inline void bgc_fp32_complex_add_scaled(BGC_FP32_Complex* sum, const BGC_FP32_Complex* basic_number, const BGC_FP32_Complex* scalable_number, const float scale) +inline void bgc_fp32_complex_add_scaled(BGC_FP32_Complex* const sum, const BGC_FP32_Complex* const basic_number, const BGC_FP32_Complex* const scalable_number, const float scale) { sum->real = basic_number->real + scalable_number->real * scale; sum->imaginary = basic_number->imaginary + scalable_number->imaginary * scale; } -inline void bgc_fp64_complex_add_scaled(BGC_FP64_Complex* sum, const BGC_FP64_Complex* basic_number, const BGC_FP64_Complex* scalable_number, const double scale) +inline void bgc_fp64_complex_add_scaled(BGC_FP64_Complex* const sum, const BGC_FP64_Complex* const basic_number, const BGC_FP64_Complex* const scalable_number, const double scale) { sum->real = basic_number->real + scalable_number->real * scale; sum->imaginary = basic_number->imaginary + scalable_number->imaginary * scale; @@ -353,13 +353,13 @@ inline void bgc_fp64_complex_add_scaled(BGC_FP64_Complex* sum, const BGC_FP64_Co // ================== Subtract ================== // -inline void bgc_fp32_complex_subtract(BGC_FP32_Complex* difference, const BGC_FP32_Complex* minuend, const BGC_FP32_Complex* subtrahend) +inline void bgc_fp32_complex_subtract(BGC_FP32_Complex* const difference, const BGC_FP32_Complex* const minuend, const BGC_FP32_Complex* const subtrahend) { difference->real = minuend->real - subtrahend->real; difference->imaginary = minuend->imaginary - subtrahend->imaginary; } -inline void bgc_fp64_complex_subtract(BGC_FP64_Complex* difference, const BGC_FP64_Complex* minuend, const BGC_FP64_Complex* subtrahend) +inline void bgc_fp64_complex_subtract(BGC_FP64_Complex* const difference, const BGC_FP64_Complex* const minuend, const BGC_FP64_Complex* const subtrahend) { difference->real = minuend->real - subtrahend->real; difference->imaginary = minuend->imaginary - subtrahend->imaginary; @@ -367,13 +367,13 @@ inline void bgc_fp64_complex_subtract(BGC_FP64_Complex* difference, const BGC_FP // ============== Subtract Scaled =============== // -inline void bgc_fp32_complex_subtract_scaled(BGC_FP32_Complex* difference, const BGC_FP32_Complex* basic_number, const BGC_FP32_Complex* scalable_number, const float scale) +inline void bgc_fp32_complex_subtract_scaled(BGC_FP32_Complex* const difference, const BGC_FP32_Complex* const basic_number, const BGC_FP32_Complex* const scalable_number, const float scale) { difference->real = basic_number->real - scalable_number->real * scale; difference->imaginary = basic_number->imaginary - scalable_number->imaginary * scale; } -inline void bgc_fp64_complex_subtract_scaled(BGC_FP64_Complex* difference, const BGC_FP64_Complex* basic_number, const BGC_FP64_Complex* scalable_number, const double scale) +inline void bgc_fp64_complex_subtract_scaled(BGC_FP64_Complex* const difference, const BGC_FP64_Complex* const basic_number, const BGC_FP64_Complex* const scalable_number, const double scale) { difference->real = basic_number->real - scalable_number->real * scale; difference->imaginary = basic_number->imaginary - scalable_number->imaginary * scale; @@ -381,13 +381,13 @@ inline void bgc_fp64_complex_subtract_scaled(BGC_FP64_Complex* difference, const // ========== Multiply By Real Number =========== // -inline void bgc_fp32_complex_multiply_by_real(BGC_FP32_Complex* product, const BGC_FP32_Complex* multiplicand, const float multiplier) +inline void bgc_fp32_complex_multiply_by_real(BGC_FP32_Complex* const product, const BGC_FP32_Complex* const multiplicand, const float multiplier) { product->real = multiplicand->real * multiplier; product->imaginary = multiplicand->imaginary * multiplier; } -inline void bgc_fp64_complex_multiply_by_real(BGC_FP64_Complex* product, const BGC_FP64_Complex* multiplicand, const double multiplier) +inline void bgc_fp64_complex_multiply_by_real(BGC_FP64_Complex* const product, const BGC_FP64_Complex* const multiplicand, const double multiplier) { product->real = multiplicand->real * multiplier; product->imaginary = multiplicand->imaginary * multiplier; @@ -395,7 +395,7 @@ inline void bgc_fp64_complex_multiply_by_real(BGC_FP64_Complex* product, const B // ========= Multiply By Complex Number ========= // -inline void bgc_fp32_complex_multiply_by_complex(BGC_FP32_Complex* product, const BGC_FP32_Complex* multiplicand, const BGC_FP32_Complex* multiplier) +inline void bgc_fp32_complex_multiply_by_complex(BGC_FP32_Complex* const product, const BGC_FP32_Complex* const multiplicand, const BGC_FP32_Complex* const multiplier) { const float real = multiplicand->real * multiplier->real - multiplicand->imaginary * multiplier->imaginary; const float imaginary = multiplicand->real * multiplier->imaginary + multiplicand->imaginary * multiplier->real; @@ -404,7 +404,7 @@ inline void bgc_fp32_complex_multiply_by_complex(BGC_FP32_Complex* product, cons product->imaginary = imaginary; } -inline void bgc_fp64_complex_multiply_by_complex(BGC_FP64_Complex* product, const BGC_FP64_Complex* multiplicand, const BGC_FP64_Complex* multiplier) +inline void bgc_fp64_complex_multiply_by_complex(BGC_FP64_Complex* const product, const BGC_FP64_Complex* const multiplicand, const BGC_FP64_Complex* const multiplier) { const double real = multiplicand->real * multiplier->real - multiplicand->imaginary * multiplier->imaginary; const double imaginary = multiplicand->real * multiplier->imaginary + multiplicand->imaginary * multiplier->real; @@ -415,7 +415,7 @@ inline void bgc_fp64_complex_multiply_by_complex(BGC_FP64_Complex* product, cons // ======== Multiply By Conjugate Number ======== // -inline void bgc_fp32_complex_multiply_by_conjugate(BGC_FP32_Complex* product, const BGC_FP32_Complex* multiplicand, const BGC_FP32_Complex* multiplier_to_conjugate) +inline void bgc_fp32_complex_multiply_by_conjugate(BGC_FP32_Complex* const product, const BGC_FP32_Complex* const multiplicand, const BGC_FP32_Complex* const multiplier_to_conjugate) { const float real = multiplicand->real * multiplier_to_conjugate->real + multiplicand->imaginary * multiplier_to_conjugate->imaginary; const float imaginary = multiplicand->imaginary * multiplier_to_conjugate->real - multiplicand->real * multiplier_to_conjugate->imaginary; @@ -424,7 +424,7 @@ inline void bgc_fp32_complex_multiply_by_conjugate(BGC_FP32_Complex* product, co product->imaginary = imaginary; } -inline void bgc_fp64_complex_multiply_by_conjugate(BGC_FP64_Complex* product, const BGC_FP64_Complex* multiplicand, const BGC_FP64_Complex* multiplier_to_conjugate) +inline void bgc_fp64_complex_multiply_by_conjugate(BGC_FP64_Complex* const product, const BGC_FP64_Complex* const multiplicand, const BGC_FP64_Complex* const multiplier_to_conjugate) { const double real = multiplicand->real * multiplier_to_conjugate->real + multiplicand->imaginary * multiplier_to_conjugate->imaginary; const double imaginary = multiplicand->imaginary * multiplier_to_conjugate->real - multiplicand->real * multiplier_to_conjugate->imaginary; @@ -435,7 +435,7 @@ inline void bgc_fp64_complex_multiply_by_conjugate(BGC_FP64_Complex* product, co // =========== Divide by Real Number ============ // -inline int bgc_fp32_complex_divide_by_real(BGC_FP32_Complex* quotient, const BGC_FP32_Complex* dividend, const float divisor) +inline int bgc_fp32_complex_divide_by_real(BGC_FP32_Complex* const quotient, const BGC_FP32_Complex* const dividend, const float divisor) { if (bgc_fp32_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -446,7 +446,7 @@ inline int bgc_fp32_complex_divide_by_real(BGC_FP32_Complex* quotient, const BGC return BGC_SUCCESS; } -inline int bgc_fp64_complex_divide_by_real(BGC_FP64_Complex* quotient, const BGC_FP64_Complex* dividend, const double divisor) +inline int bgc_fp64_complex_divide_by_real(BGC_FP64_Complex* const quotient, const BGC_FP64_Complex* const dividend, const double divisor) { if (bgc_fp64_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -459,7 +459,7 @@ inline int bgc_fp64_complex_divide_by_real(BGC_FP64_Complex* quotient, const BGC // ========== Divide by Complex Number ========== // -inline int bgc_fp32_complex_divide_by_complex(BGC_FP32_Complex* quotient, const BGC_FP32_Complex* divident, const BGC_FP32_Complex* divisor) +inline int bgc_fp32_complex_divide_by_complex(BGC_FP32_Complex* const quotient, const BGC_FP32_Complex* const divident, const BGC_FP32_Complex* const divisor) { const float square_modulus = bgc_fp32_complex_get_square_modulus(divisor); @@ -473,7 +473,7 @@ inline int bgc_fp32_complex_divide_by_complex(BGC_FP32_Complex* quotient, const return BGC_SUCCESS; } -inline int bgc_fp64_complex_divide_by_complex(BGC_FP64_Complex* quotient, const BGC_FP64_Complex* divident, const BGC_FP64_Complex* divisor) +inline int bgc_fp64_complex_divide_by_complex(BGC_FP64_Complex* const quotient, const BGC_FP64_Complex* const divident, const BGC_FP64_Complex* const divisor) { const double square_modulus = bgc_fp64_complex_get_square_modulus(divisor); @@ -489,7 +489,7 @@ inline int bgc_fp64_complex_divide_by_complex(BGC_FP64_Complex* quotient, const // ========= Divide By Conjugate Number ========= // -inline int bgc_fp32_complex_divide_by_conjugate(BGC_FP32_Complex* quotient, const BGC_FP32_Complex* divident, const BGC_FP32_Complex* divisor_to_conjugate) +inline int bgc_fp32_complex_divide_by_conjugate(BGC_FP32_Complex* const quotient, const BGC_FP32_Complex* const divident, const BGC_FP32_Complex* const divisor_to_conjugate) { const float square_modulus = bgc_fp32_complex_get_square_modulus(divisor_to_conjugate); @@ -503,7 +503,7 @@ inline int bgc_fp32_complex_divide_by_conjugate(BGC_FP32_Complex* quotient, cons return BGC_SUCCESS; } -inline int bgc_fp64_complex_divide_by_conjugate(BGC_FP64_Complex* quotient, const BGC_FP64_Complex* divident, const BGC_FP64_Complex* divisor_to_conjugate) +inline int bgc_fp64_complex_divide_by_conjugate(BGC_FP64_Complex* const quotient, const BGC_FP64_Complex* const divident, const BGC_FP64_Complex* const divisor_to_conjugate) { const double square_modulus = bgc_fp64_complex_get_square_modulus(divisor_to_conjugate); @@ -519,13 +519,13 @@ inline int bgc_fp64_complex_divide_by_conjugate(BGC_FP64_Complex* quotient, cons // ================== Average2 ================== // -inline void bgc_fp32_complex_get_mean2(BGC_FP32_Complex* mean, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2) +inline void bgc_fp32_complex_get_mean2(BGC_FP32_Complex* const mean, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2) { mean->real = (number1->real + number2->real) * 0.5f; mean->imaginary = (number1->imaginary + number2->imaginary) * 0.5f; } -inline void bgc_fp64_complex_get_mean2(BGC_FP64_Complex* mean, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2) +inline void bgc_fp64_complex_get_mean2(BGC_FP64_Complex* const mean, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2) { mean->real = (number1->real + number2->real) * 0.5; mean->imaginary = (number1->imaginary + number2->imaginary) * 0.5; @@ -533,13 +533,13 @@ inline void bgc_fp64_complex_get_mean2(BGC_FP64_Complex* mean, const BGC_FP64_Co // ================== Average3 ================== // -inline void bgc_fp32_complex_get_mean3(BGC_FP32_Complex* mean, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2, const BGC_FP32_Complex* number3) +inline void bgc_fp32_complex_get_mean3(BGC_FP32_Complex* const mean, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2, const BGC_FP32_Complex* const number3) { mean->real = (number1->real + number2->real + number3->real) * BGC_FP32_ONE_THIRD; mean->imaginary = (number1->imaginary + number2->imaginary + number3->imaginary) * BGC_FP32_ONE_THIRD; } -inline void bgc_fp64_complex_get_mean3(BGC_FP64_Complex* mean, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2, const BGC_FP64_Complex* number3) +inline void bgc_fp64_complex_get_mean3(BGC_FP64_Complex* const mean, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2, const BGC_FP64_Complex* const number3) { mean->real = (number1->real + number2->real + number3->real) * BGC_FP64_ONE_THIRD; mean->imaginary = (number1->imaginary + number2->imaginary + number3->imaginary) * BGC_FP64_ONE_THIRD; @@ -547,7 +547,7 @@ inline void bgc_fp64_complex_get_mean3(BGC_FP64_Complex* mean, const BGC_FP64_Co // =================== Linear =================== // -inline void bgc_fp32_complex_interpolate(BGC_FP32_Complex* interpolation, const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2, const float phase) +inline void bgc_fp32_complex_interpolate(BGC_FP32_Complex* const interpolation, const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2, const float phase) { const float counter_phase = 1.0f - phase; @@ -555,7 +555,7 @@ inline void bgc_fp32_complex_interpolate(BGC_FP32_Complex* interpolation, const interpolation->imaginary = number1->imaginary * counter_phase + number2->imaginary * phase; } -inline void bgc_fp64_complex_interpolate(BGC_FP64_Complex* interpolation, const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2, const double phase) +inline void bgc_fp64_complex_interpolate(BGC_FP64_Complex* const interpolation, const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2, const double phase) { const double counter_phase = 1.0 - phase; @@ -565,7 +565,7 @@ inline void bgc_fp64_complex_interpolate(BGC_FP64_Complex* interpolation, const // ================== Are Close ================= // -inline int bgc_fp32_complex_are_close(const BGC_FP32_Complex* number1, const BGC_FP32_Complex* number2) +inline int bgc_fp32_complex_are_close(const BGC_FP32_Complex* const number1, const BGC_FP32_Complex* const number2) { const float square_modulus1 = bgc_fp32_complex_get_square_modulus(number1); const float square_modulus2 = bgc_fp32_complex_get_square_modulus(number2); @@ -582,7 +582,7 @@ inline int bgc_fp32_complex_are_close(const BGC_FP32_Complex* number1, const BGC return square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus1 && square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus2; } -inline int bgc_fp64_complex_are_close(const BGC_FP64_Complex* number1, const BGC_FP64_Complex* number2) +inline int bgc_fp64_complex_are_close(const BGC_FP64_Complex* const number1, const BGC_FP64_Complex* const number2) { const double square_modulus1 = bgc_fp64_complex_get_square_modulus(number1); const double square_modulus2 = bgc_fp64_complex_get_square_modulus(number2); diff --git a/basic-geometry/dual-number.c b/basic-geometry/dual-number.c index 35222ec..36622cf 100644 --- a/basic-geometry/dual-number.c +++ b/basic-geometry/dual-number.c @@ -1,73 +1,73 @@ #include "./dual-number.h" -extern inline void bgc_fp32_dual_number_reset(BGC_FP32_DualNumber* number); -extern inline void bgc_fp64_dual_number_reset(BGC_FP64_DualNumber* number); +extern inline void bgc_fp32_dual_number_reset(BGC_FP32_DualNumber* const number); +extern inline void bgc_fp64_dual_number_reset(BGC_FP64_DualNumber* const number); -extern inline void bgc_fp32_dual_number_make(BGC_FP32_DualNumber* number, const float real_part, const float dual_part); -extern inline void bgc_fp64_dual_number_make(BGC_FP64_DualNumber* number, const double real_part, const double dual_part); +extern inline void bgc_fp32_dual_number_make(BGC_FP32_DualNumber* const number, const float real_part, const float dual_part); +extern inline void bgc_fp64_dual_number_make(BGC_FP64_DualNumber* const number, const double real_part, const double dual_part); -extern inline void bgc_fp32_dual_number_copy(BGC_FP32_DualNumber* destination, const BGC_FP32_DualNumber* source); -extern inline void bgc_fp64_dual_number_copy(BGC_FP64_DualNumber* destination, const BGC_FP64_DualNumber* source); +extern inline void bgc_fp32_dual_number_copy(BGC_FP32_DualNumber* const destination, const BGC_FP32_DualNumber* const source); +extern inline void bgc_fp64_dual_number_copy(BGC_FP64_DualNumber* const destination, const BGC_FP64_DualNumber* const source); -extern inline void bgc_fp32_dual_number_swap(BGC_FP32_DualNumber* first, BGC_FP32_DualNumber* second); -extern inline void bgc_fp64_dual_number_swap(BGC_FP64_DualNumber* first, BGC_FP64_DualNumber* second); +extern inline void bgc_fp32_dual_number_swap(BGC_FP32_DualNumber* const first, BGC_FP32_DualNumber* const second); +extern inline void bgc_fp64_dual_number_swap(BGC_FP64_DualNumber* const first, BGC_FP64_DualNumber* const second); -extern inline void bgc_fp64_dual_number_convert_to_fp32(BGC_FP32_DualNumber* first, BGC_FP64_DualNumber* second); -extern inline void bgc_fp32_dual_number_convert_to_fp64(BGC_FP64_DualNumber* first, BGC_FP32_DualNumber* second); +extern inline void bgc_fp64_dual_number_convert_to_fp32(BGC_FP32_DualNumber* const destination, const BGC_FP64_DualNumber* const source); +extern inline void bgc_fp32_dual_number_convert_to_fp64(BGC_FP64_DualNumber* const destination, const BGC_FP32_DualNumber* const source); -extern inline void bgc_fp32_dual_number_revert(BGC_FP32_DualNumber* number); -extern inline void bgc_fp64_dual_number_revert(BGC_FP64_DualNumber* number); +extern inline void bgc_fp32_dual_number_revert(BGC_FP32_DualNumber* const number); +extern inline void bgc_fp64_dual_number_revert(BGC_FP64_DualNumber* const number); -extern inline void bgc_fp32_dual_number_get_reverse(BGC_FP32_DualNumber* reverse, const BGC_FP32_DualNumber* number); -extern inline void bgc_fp64_dual_number_get_reverse(BGC_FP64_DualNumber* reverse, const BGC_FP64_DualNumber* number); +extern inline void bgc_fp32_dual_number_get_reverse(BGC_FP32_DualNumber* const reverse, const BGC_FP32_DualNumber* const number); +extern inline void bgc_fp64_dual_number_get_reverse(BGC_FP64_DualNumber* const reverse, const BGC_FP64_DualNumber* const number); -extern inline int bgc_fp32_dual_number_invert(BGC_FP32_DualNumber* number); -extern inline int bgc_fp64_dual_number_invert(BGC_FP64_DualNumber* number); +extern inline int bgc_fp32_dual_number_invert(BGC_FP32_DualNumber* const number); +extern inline int bgc_fp64_dual_number_invert(BGC_FP64_DualNumber* const number); -extern inline int bgc_fp32_dual_number_get_inverse(BGC_FP32_DualNumber* inverse, const BGC_FP32_DualNumber* number); -extern inline int bgc_fp64_dual_number_get_inverse(BGC_FP64_DualNumber* inverse, const BGC_FP64_DualNumber* number); +extern inline int bgc_fp32_dual_number_get_inverse(BGC_FP32_DualNumber* const inverse, const BGC_FP32_DualNumber* const number); +extern inline int bgc_fp64_dual_number_get_inverse(BGC_FP64_DualNumber* const inverse, const BGC_FP64_DualNumber* const number); -extern inline void bgc_fp32_dual_number_conjugate(BGC_FP32_DualNumber* number); -extern inline void bgc_fp64_dual_number_conjugate(BGC_FP64_DualNumber* number); +extern inline void bgc_fp32_dual_number_conjugate(BGC_FP32_DualNumber* const number); +extern inline void bgc_fp64_dual_number_conjugate(BGC_FP64_DualNumber* const number); -extern inline void bgc_fp32_dual_number_get_conjugate(BGC_FP32_DualNumber* conjugate, const BGC_FP32_DualNumber* number); -extern inline void bgc_fp64_dual_number_get_conjugate(BGC_FP64_DualNumber* conjugate, const BGC_FP64_DualNumber* number); +extern inline void bgc_fp32_dual_number_get_conjugate(BGC_FP32_DualNumber* const conjugate, const BGC_FP32_DualNumber* const number); +extern inline void bgc_fp64_dual_number_get_conjugate(BGC_FP64_DualNumber* const conjugate, const BGC_FP64_DualNumber* const number); -extern inline void bgc_fp32_dual_number_add(BGC_FP32_DualNumber* sum, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second); -extern inline void bgc_fp64_dual_number_add(BGC_FP64_DualNumber* sum, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second); +extern inline void bgc_fp32_dual_number_add(BGC_FP32_DualNumber* const sum, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second); +extern inline void bgc_fp64_dual_number_add(BGC_FP64_DualNumber* const sum, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second); -extern inline void bgc_fp32_dual_number_add_scaled(BGC_FP32_DualNumber* sum, const BGC_FP32_DualNumber* base_number, const BGC_FP32_DualNumber* scalable_number, const float scale); -extern inline void bgc_fp64_dual_number_add_scaled(BGC_FP64_DualNumber* sum, const BGC_FP64_DualNumber* base_number, const BGC_FP64_DualNumber* scalable_number, const double scale); +extern inline void bgc_fp32_dual_number_add_scaled(BGC_FP32_DualNumber* const sum, const BGC_FP32_DualNumber* const base_number, const BGC_FP32_DualNumber* const scalable_number, const float scale); +extern inline void bgc_fp64_dual_number_add_scaled(BGC_FP64_DualNumber* const sum, const BGC_FP64_DualNumber* const base_number, const BGC_FP64_DualNumber* const scalable_number, const double scale); -extern inline void bgc_fp32_dual_number_subtract(BGC_FP32_DualNumber* difference, const BGC_FP32_DualNumber* minuend, const BGC_FP32_DualNumber* subtrahend); -extern inline void bgc_fp64_dual_number_subtract(BGC_FP64_DualNumber* difference, const BGC_FP64_DualNumber* minuend, const BGC_FP64_DualNumber* subtrahend); +extern inline void bgc_fp32_dual_number_subtract(BGC_FP32_DualNumber* const difference, const BGC_FP32_DualNumber* const minuend, const BGC_FP32_DualNumber* const subtrahend); +extern inline void bgc_fp64_dual_number_subtract(BGC_FP64_DualNumber* const difference, const BGC_FP64_DualNumber* const minuend, const BGC_FP64_DualNumber* const subtrahend); -extern inline void bgc_fp32_dual_number_subtract_scaled(BGC_FP32_DualNumber* difference, const BGC_FP32_DualNumber* base_number, const BGC_FP32_DualNumber* scalable_number, const float scale); -extern inline void bgc_fp64_dual_number_subtract_scaled(BGC_FP64_DualNumber* difference, const BGC_FP64_DualNumber* base_number, const BGC_FP64_DualNumber* scalable_number, const double scale); +extern inline void bgc_fp32_dual_number_subtract_scaled(BGC_FP32_DualNumber* const difference, const BGC_FP32_DualNumber* const base_number, const BGC_FP32_DualNumber* const scalable_number, const float scale); +extern inline void bgc_fp64_dual_number_subtract_scaled(BGC_FP64_DualNumber* const difference, const BGC_FP64_DualNumber* const base_number, const BGC_FP64_DualNumber* const scalable_number, const double scale); -extern inline void bgc_fp32_dual_number_multiply_by_real(BGC_FP32_DualNumber* product, const BGC_FP32_DualNumber* multiplicand, const float multiplier); -extern inline void bgc_fp64_dual_number_multiply_by_real(BGC_FP64_DualNumber* product, const BGC_FP64_DualNumber* multiplicand, const double multiplier); +extern inline void bgc_fp32_dual_number_multiply_by_real(BGC_FP32_DualNumber* const product, const BGC_FP32_DualNumber* const multiplicand, const float multiplier); +extern inline void bgc_fp64_dual_number_multiply_by_real(BGC_FP64_DualNumber* const product, const BGC_FP64_DualNumber* const multiplicand, const double multiplier); -extern inline void bgc_fp32_dual_number_multiply_by_dual(BGC_FP32_DualNumber* product, const BGC_FP32_DualNumber* multiplicand, const BGC_FP32_DualNumber* multiplier); -extern inline void bgc_fp64_dual_number_multiply_by_dual(BGC_FP64_DualNumber* product, const BGC_FP64_DualNumber* multiplicand, const BGC_FP64_DualNumber* multiplier); +extern inline void bgc_fp32_dual_number_multiply_by_dual(BGC_FP32_DualNumber* const product, const BGC_FP32_DualNumber* const multiplicand, const BGC_FP32_DualNumber* const multiplier); +extern inline void bgc_fp64_dual_number_multiply_by_dual(BGC_FP64_DualNumber* const product, const BGC_FP64_DualNumber* const multiplicand, const BGC_FP64_DualNumber* const multiplier); -extern inline void bgc_fp32_dual_number_multiply_by_conjugate(BGC_FP32_DualNumber* product, const BGC_FP32_DualNumber* multiplicand, const BGC_FP32_DualNumber* multiplier_to_conjugate); -extern inline void bgc_fp64_dual_number_multiply_by_conjugate(BGC_FP64_DualNumber* product, const BGC_FP64_DualNumber* multiplicand, const BGC_FP64_DualNumber* multiplier_to_conjugate); +extern inline void bgc_fp32_dual_number_multiply_by_conjugate(BGC_FP32_DualNumber* const product, const BGC_FP32_DualNumber* const multiplicand, const BGC_FP32_DualNumber* const multiplier_to_conjugate); +extern inline void bgc_fp64_dual_number_multiply_by_conjugate(BGC_FP64_DualNumber* const product, const BGC_FP64_DualNumber* const multiplicand, const BGC_FP64_DualNumber* const multiplier_to_conjugate); -extern inline int bgc_fp32_dual_number_divide_by_real(BGC_FP32_DualNumber* quotient, const BGC_FP32_DualNumber* dividend, const float divisor); -extern inline int bgc_fp64_dual_number_divide_by_real(BGC_FP64_DualNumber* quotient, const BGC_FP64_DualNumber* dividend, const double divisor); +extern inline int bgc_fp32_dual_number_divide_by_real(BGC_FP32_DualNumber* const quotient, const BGC_FP32_DualNumber* const dividend, const float divisor); +extern inline int bgc_fp64_dual_number_divide_by_real(BGC_FP64_DualNumber* const quotient, const BGC_FP64_DualNumber* const dividend, const double divisor); -extern inline int bgc_fp32_dual_number_divide_by_dual(BGC_FP32_DualNumber* quotient, const BGC_FP32_DualNumber* dividend, const BGC_FP32_DualNumber* divisor); -extern inline int bgc_fp64_dual_number_divide_by_dual(BGC_FP64_DualNumber* quotient, const BGC_FP64_DualNumber* dividend, const BGC_FP64_DualNumber* divisor); +extern inline int bgc_fp32_dual_number_divide_by_dual(BGC_FP32_DualNumber* const quotient, const BGC_FP32_DualNumber* const dividend, const BGC_FP32_DualNumber* const divisor); +extern inline int bgc_fp64_dual_number_divide_by_dual(BGC_FP64_DualNumber* const quotient, const BGC_FP64_DualNumber* const dividend, const BGC_FP64_DualNumber* const divisor); -extern inline int bgc_fp32_dual_number_divide_by_conjugate(BGC_FP32_DualNumber* quotient, const BGC_FP32_DualNumber* dividend, const BGC_FP32_DualNumber* divisor_to_conjugate); -extern inline int bgc_fp64_dual_number_divide_by_conjugate(BGC_FP64_DualNumber* quotient, const BGC_FP64_DualNumber* dividend, const BGC_FP64_DualNumber* divisor_to_conjugate); +extern inline int bgc_fp32_dual_number_divide_by_conjugate(BGC_FP32_DualNumber* const quotient, const BGC_FP32_DualNumber* const dividend, const BGC_FP32_DualNumber* const divisor_to_conjugate); +extern inline int bgc_fp64_dual_number_divide_by_conjugate(BGC_FP64_DualNumber* const quotient, const BGC_FP64_DualNumber* const dividend, const BGC_FP64_DualNumber* const divisor_to_conjugate); -extern inline void bgc_fp32_dual_number_get_mean2(BGC_FP32_DualNumber* mean, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second); -extern inline void bgc_fp64_dual_number_get_mean2(BGC_FP64_DualNumber* mean, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second); +extern inline void bgc_fp32_dual_number_get_mean2(BGC_FP32_DualNumber* const mean, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second); +extern inline void bgc_fp64_dual_number_get_mean2(BGC_FP64_DualNumber* const mean, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second); -extern inline void bgc_fp32_dual_number_get_mean3(BGC_FP32_DualNumber* mean, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second, const BGC_FP32_DualNumber* third); -extern inline void bgc_fp64_dual_number_get_mean3(BGC_FP64_DualNumber* mean, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second, const BGC_FP64_DualNumber* third); +extern inline void bgc_fp32_dual_number_get_mean3(BGC_FP32_DualNumber* const mean, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second, const BGC_FP32_DualNumber* const third); +extern inline void bgc_fp64_dual_number_get_mean3(BGC_FP64_DualNumber* const mean, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second, const BGC_FP64_DualNumber* const third); -extern inline void bgc_fp32_dual_number_interpolate(BGC_FP32_DualNumber* interpolation, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second, const float phase); -extern inline void bgc_fp64_dual_number_interpolate(BGC_FP64_DualNumber* interpolation, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second, const double phase); +extern inline void bgc_fp32_dual_number_interpolate(BGC_FP32_DualNumber* const interpolation, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second, const float phase); +extern inline void bgc_fp64_dual_number_interpolate(BGC_FP64_DualNumber* const interpolation, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second, const double phase); diff --git a/basic-geometry/dual-number.h b/basic-geometry/dual-number.h index 0bd0656..7821a11 100644 --- a/basic-geometry/dual-number.h +++ b/basic-geometry/dual-number.h @@ -8,13 +8,13 @@ // =================== Reset ==================== // -inline void bgc_fp32_dual_number_reset(BGC_FP32_DualNumber* number) +inline void bgc_fp32_dual_number_reset(BGC_FP32_DualNumber* const number) { number->real_part = 0.0f; number->dual_part = 0.0f; } -inline void bgc_fp64_dual_number_reset(BGC_FP64_DualNumber* number) +inline void bgc_fp64_dual_number_reset(BGC_FP64_DualNumber* const number) { number->real_part = 0.0; number->dual_part = 0.0; @@ -22,13 +22,13 @@ inline void bgc_fp64_dual_number_reset(BGC_FP64_DualNumber* number) // ==================== Make ==================== // -inline void bgc_fp32_dual_number_make(BGC_FP32_DualNumber* number, const float real_part, const float dual_part) +inline void bgc_fp32_dual_number_make(BGC_FP32_DualNumber* const number, const float real_part, const float dual_part) { number->real_part = real_part; number->dual_part = dual_part; } -inline void bgc_fp64_dual_number_make(BGC_FP64_DualNumber* number, const double real_part, const double dual_part) +inline void bgc_fp64_dual_number_make(BGC_FP64_DualNumber* const number, const double real_part, const double dual_part) { number->real_part = real_part; number->dual_part = dual_part; @@ -36,13 +36,13 @@ inline void bgc_fp64_dual_number_make(BGC_FP64_DualNumber* number, const double // ==================== Copy ==================== // -inline void bgc_fp32_dual_number_copy(BGC_FP32_DualNumber* destination, const BGC_FP32_DualNumber* source) +inline void bgc_fp32_dual_number_copy(BGC_FP32_DualNumber* const destination, const BGC_FP32_DualNumber* const source) { destination->real_part = source->real_part; destination->dual_part = source->dual_part; } -inline void bgc_fp64_dual_number_copy(BGC_FP64_DualNumber* destination, const BGC_FP64_DualNumber* source) +inline void bgc_fp64_dual_number_copy(BGC_FP64_DualNumber* const destination, const BGC_FP64_DualNumber* const source) { destination->real_part = source->real_part; destination->dual_part = source->dual_part; @@ -50,13 +50,13 @@ inline void bgc_fp64_dual_number_copy(BGC_FP64_DualNumber* destination, const BG // ==================== Swap ==================== // -inline void bgc_fp32_dual_number_swap(BGC_FP32_DualNumber* first, BGC_FP32_DualNumber* second) +inline void bgc_fp32_dual_number_swap(BGC_FP32_DualNumber* const first, BGC_FP32_DualNumber* const second) { first->real_part = second->real_part; first->dual_part = second->dual_part; } -inline void bgc_fp64_dual_number_swap(BGC_FP64_DualNumber* first, BGC_FP64_DualNumber* second) +inline void bgc_fp64_dual_number_swap(BGC_FP64_DualNumber* const first, BGC_FP64_DualNumber* const second) { first->real_part = second->real_part; first->dual_part = second->dual_part; @@ -64,39 +64,39 @@ inline void bgc_fp64_dual_number_swap(BGC_FP64_DualNumber* first, BGC_FP64_DualN // ================== Modulus =================== // -inline double bgc_fp32_dual_number_get_modulus(const BGC_FP32_DualNumber* number) +inline double bgc_fp32_dual_number_get_modulus(const BGC_FP32_DualNumber* const number) { return fabsf(number->real_part); } -inline double bgc_fp64_dual_number_get_modulus(const BGC_FP64_DualNumber* number) +inline double bgc_fp64_dual_number_get_modulus(const BGC_FP64_DualNumber* const number) { return fabs(number->real_part); } // ================== Convert =================== // -inline void bgc_fp64_dual_number_convert_to_fp32(BGC_FP32_DualNumber* first, BGC_FP64_DualNumber* second) +inline void bgc_fp64_dual_number_convert_to_fp32(BGC_FP32_DualNumber* const destination, const BGC_FP64_DualNumber* const source) { - first->real_part = (float) second->real_part; - first->dual_part = (float) second->dual_part; + destination->real_part = (float) source->real_part; + destination->dual_part = (float) source->dual_part; } -inline void bgc_fp32_dual_number_convert_to_fp64(BGC_FP64_DualNumber* first, BGC_FP32_DualNumber* second) +inline void bgc_fp32_dual_number_convert_to_fp64(BGC_FP64_DualNumber* const destination, const BGC_FP32_DualNumber* const source) { - first->real_part = second->real_part; - first->dual_part = second->dual_part; + destination->real_part = source->real_part; + destination->dual_part = source->dual_part; } // =================== Revert =================== // -inline void bgc_fp32_dual_number_revert(BGC_FP32_DualNumber* number) +inline void bgc_fp32_dual_number_revert(BGC_FP32_DualNumber* const number) { number->real_part = -number->real_part; number->dual_part = -number->dual_part; } -inline void bgc_fp64_dual_number_revert(BGC_FP64_DualNumber* number) +inline void bgc_fp64_dual_number_revert(BGC_FP64_DualNumber* const number) { number->real_part = -number->real_part; number->dual_part = -number->dual_part; @@ -104,13 +104,13 @@ inline void bgc_fp64_dual_number_revert(BGC_FP64_DualNumber* number) // ================ Get Reverse ================= // -inline void bgc_fp32_dual_number_get_reverse(BGC_FP32_DualNumber* reverse, const BGC_FP32_DualNumber* number) +inline void bgc_fp32_dual_number_get_reverse(BGC_FP32_DualNumber* const reverse, const BGC_FP32_DualNumber* const number) { reverse->real_part = -number->real_part; reverse->dual_part = -number->dual_part; } -inline void bgc_fp64_dual_number_get_reverse(BGC_FP64_DualNumber* reverse, const BGC_FP64_DualNumber* number) +inline void bgc_fp64_dual_number_get_reverse(BGC_FP64_DualNumber* const reverse, const BGC_FP64_DualNumber* const number) { reverse->real_part = -number->real_part; reverse->dual_part = -number->dual_part; @@ -118,7 +118,7 @@ inline void bgc_fp64_dual_number_get_reverse(BGC_FP64_DualNumber* reverse, const // =================== Invert =================== // -inline int bgc_fp32_dual_number_invert(BGC_FP32_DualNumber* number) +inline int bgc_fp32_dual_number_invert(BGC_FP32_DualNumber* const number) { if (bgc_fp32_is_zero(number->real_part) || isnan(number->real_part)) { return BGC_FAILURE; @@ -132,7 +132,7 @@ inline int bgc_fp32_dual_number_invert(BGC_FP32_DualNumber* number) return BGC_SUCCESS; } -inline int bgc_fp64_dual_number_invert(BGC_FP64_DualNumber* number) +inline int bgc_fp64_dual_number_invert(BGC_FP64_DualNumber* const number) { if (bgc_fp64_is_zero(number->real_part) || isnan(number->real_part)) { return BGC_FAILURE; @@ -148,7 +148,7 @@ inline int bgc_fp64_dual_number_invert(BGC_FP64_DualNumber* number) // ================ Get Inverse ================= // -inline int bgc_fp32_dual_number_get_inverse(BGC_FP32_DualNumber* inverse, const BGC_FP32_DualNumber* number) +inline int bgc_fp32_dual_number_get_inverse(BGC_FP32_DualNumber* const inverse, const BGC_FP32_DualNumber* const number) { if (bgc_fp32_is_zero(number->real_part) || isnan(number->real_part)) { inverse->real_part = 0.0f; @@ -164,7 +164,7 @@ inline int bgc_fp32_dual_number_get_inverse(BGC_FP32_DualNumber* inverse, const return BGC_SUCCESS; } -inline int bgc_fp64_dual_number_get_inverse(BGC_FP64_DualNumber* inverse, const BGC_FP64_DualNumber* number) +inline int bgc_fp64_dual_number_get_inverse(BGC_FP64_DualNumber* const inverse, const BGC_FP64_DualNumber* const number) { if (bgc_fp64_is_zero(number->real_part) || isnan(number->real_part)) { inverse->real_part = 0.0; @@ -182,25 +182,25 @@ inline int bgc_fp64_dual_number_get_inverse(BGC_FP64_DualNumber* inverse, const // ================= Conjugate ================== // -inline void bgc_fp32_dual_number_conjugate(BGC_FP32_DualNumber* number) +inline void bgc_fp32_dual_number_conjugate(BGC_FP32_DualNumber* const number) { number->dual_part = -number->dual_part; } -inline void bgc_fp64_dual_number_conjugate(BGC_FP64_DualNumber* number) +inline void bgc_fp64_dual_number_conjugate(BGC_FP64_DualNumber* const number) { number->dual_part = -number->dual_part; } // =============== Get Conjugate ================ // -inline void bgc_fp32_dual_number_get_conjugate(BGC_FP32_DualNumber* conjugate, const BGC_FP32_DualNumber* number) +inline void bgc_fp32_dual_number_get_conjugate(BGC_FP32_DualNumber* const conjugate, const BGC_FP32_DualNumber* const number) { conjugate->real_part = number->real_part; conjugate->dual_part = -number->dual_part; } -inline void bgc_fp64_dual_number_get_conjugate(BGC_FP64_DualNumber* conjugate, const BGC_FP64_DualNumber* number) +inline void bgc_fp64_dual_number_get_conjugate(BGC_FP64_DualNumber* const conjugate, const BGC_FP64_DualNumber* const number) { conjugate->real_part = number->real_part; conjugate->dual_part = -number->dual_part; @@ -208,13 +208,13 @@ inline void bgc_fp64_dual_number_get_conjugate(BGC_FP64_DualNumber* conjugate, c // ==================== Add ===================== // -inline void bgc_fp32_dual_number_add(BGC_FP32_DualNumber* sum, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second) +inline void bgc_fp32_dual_number_add(BGC_FP32_DualNumber* const sum, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second) { sum->real_part = first->real_part + second->real_part; sum->dual_part = first->dual_part + second->dual_part; } -inline void bgc_fp64_dual_number_add(BGC_FP64_DualNumber* sum, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second) +inline void bgc_fp64_dual_number_add(BGC_FP64_DualNumber* const sum, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second) { sum->real_part = first->real_part + second->real_part; sum->dual_part = first->dual_part + second->dual_part; @@ -222,13 +222,13 @@ inline void bgc_fp64_dual_number_add(BGC_FP64_DualNumber* sum, const BGC_FP64_Du // ================= Add Scaled ================= // -inline void bgc_fp32_dual_number_add_scaled(BGC_FP32_DualNumber* sum, const BGC_FP32_DualNumber* base_number, const BGC_FP32_DualNumber* scalable_number, const float scale) +inline void bgc_fp32_dual_number_add_scaled(BGC_FP32_DualNumber* const sum, const BGC_FP32_DualNumber* const base_number, const BGC_FP32_DualNumber* const scalable_number, const float scale) { sum->real_part = base_number->real_part + scalable_number->real_part * scale; sum->dual_part = base_number->dual_part + scalable_number->dual_part * scale; } -inline void bgc_fp64_dual_number_add_scaled(BGC_FP64_DualNumber* sum, const BGC_FP64_DualNumber* base_number, const BGC_FP64_DualNumber* scalable_number, const double scale) +inline void bgc_fp64_dual_number_add_scaled(BGC_FP64_DualNumber* const sum, const BGC_FP64_DualNumber* const base_number, const BGC_FP64_DualNumber* const scalable_number, const double scale) { sum->real_part = base_number->real_part + scalable_number->real_part * scale; sum->dual_part = base_number->dual_part + scalable_number->dual_part * scale; @@ -236,13 +236,13 @@ inline void bgc_fp64_dual_number_add_scaled(BGC_FP64_DualNumber* sum, const BGC_ // ================== Subtract ================== // -inline void bgc_fp32_dual_number_subtract(BGC_FP32_DualNumber* difference, const BGC_FP32_DualNumber* minuend, const BGC_FP32_DualNumber* subtrahend) +inline void bgc_fp32_dual_number_subtract(BGC_FP32_DualNumber* const difference, const BGC_FP32_DualNumber* const minuend, const BGC_FP32_DualNumber* const subtrahend) { difference->real_part = minuend->real_part - subtrahend->real_part; difference->dual_part = minuend->dual_part - subtrahend->dual_part; } -inline void bgc_fp64_dual_number_subtract(BGC_FP64_DualNumber* difference, const BGC_FP64_DualNumber* minuend, const BGC_FP64_DualNumber* subtrahend) +inline void bgc_fp64_dual_number_subtract(BGC_FP64_DualNumber* const difference, const BGC_FP64_DualNumber* const minuend, const BGC_FP64_DualNumber* const subtrahend) { difference->real_part = minuend->real_part - subtrahend->real_part; difference->dual_part = minuend->dual_part - subtrahend->dual_part; @@ -250,13 +250,13 @@ inline void bgc_fp64_dual_number_subtract(BGC_FP64_DualNumber* difference, const // ============== Subtract Scaled =============== // -inline void bgc_fp32_dual_number_subtract_scaled(BGC_FP32_DualNumber* difference, const BGC_FP32_DualNumber* base_number, const BGC_FP32_DualNumber* scalable_number, const float scale) +inline void bgc_fp32_dual_number_subtract_scaled(BGC_FP32_DualNumber* const difference, const BGC_FP32_DualNumber* const base_number, const BGC_FP32_DualNumber* const scalable_number, const float scale) { difference->real_part = base_number->real_part - scalable_number->real_part * scale; difference->dual_part = base_number->dual_part - scalable_number->dual_part * scale; } -inline void bgc_fp64_dual_number_subtract_scaled(BGC_FP64_DualNumber* difference, const BGC_FP64_DualNumber* base_number, const BGC_FP64_DualNumber* scalable_number, const double scale) +inline void bgc_fp64_dual_number_subtract_scaled(BGC_FP64_DualNumber* const difference, const BGC_FP64_DualNumber* const base_number, const BGC_FP64_DualNumber* const scalable_number, const double scale) { difference->real_part = base_number->real_part - scalable_number->real_part * scale; difference->dual_part = base_number->dual_part - scalable_number->dual_part * scale; @@ -264,19 +264,19 @@ inline void bgc_fp64_dual_number_subtract_scaled(BGC_FP64_DualNumber* difference // ================== Multiply ================== // -inline void bgc_fp32_dual_number_multiply_by_real(BGC_FP32_DualNumber* product, const BGC_FP32_DualNumber* multiplicand, const float multiplier) +inline void bgc_fp32_dual_number_multiply_by_real(BGC_FP32_DualNumber* const product, const BGC_FP32_DualNumber* const multiplicand, const float multiplier) { product->real_part = multiplicand->real_part * multiplier; product->dual_part = multiplicand->dual_part * multiplier; } -inline void bgc_fp64_dual_number_multiply_by_real(BGC_FP64_DualNumber* product, const BGC_FP64_DualNumber* multiplicand, const double multiplier) +inline void bgc_fp64_dual_number_multiply_by_real(BGC_FP64_DualNumber* const product, const BGC_FP64_DualNumber* const multiplicand, const double multiplier) { product->real_part = multiplicand->real_part * multiplier; product->dual_part = multiplicand->dual_part * multiplier; } -inline void bgc_fp32_dual_number_multiply_by_dual(BGC_FP32_DualNumber* product, const BGC_FP32_DualNumber* multiplicand, const BGC_FP32_DualNumber* multiplier) +inline void bgc_fp32_dual_number_multiply_by_dual(BGC_FP32_DualNumber* const product, const BGC_FP32_DualNumber* const multiplicand, const BGC_FP32_DualNumber* const multiplier) { const float real_part = multiplicand->real_part * multiplier->real_part; const float dual_part = multiplicand->dual_part * multiplier->real_part + multiplicand->real_part * multiplier->dual_part; @@ -285,7 +285,7 @@ inline void bgc_fp32_dual_number_multiply_by_dual(BGC_FP32_DualNumber* product, product->dual_part = dual_part; } -inline void bgc_fp64_dual_number_multiply_by_dual(BGC_FP64_DualNumber* product, const BGC_FP64_DualNumber* multiplicand, const BGC_FP64_DualNumber* multiplier) +inline void bgc_fp64_dual_number_multiply_by_dual(BGC_FP64_DualNumber* const product, const BGC_FP64_DualNumber* const multiplicand, const BGC_FP64_DualNumber* const multiplier) { const double real_part = multiplicand->real_part * multiplier->real_part; const double dual_part = multiplicand->dual_part * multiplier->real_part + multiplicand->real_part * multiplier->dual_part; @@ -294,7 +294,7 @@ inline void bgc_fp64_dual_number_multiply_by_dual(BGC_FP64_DualNumber* product, product->dual_part = dual_part; } -inline void bgc_fp32_dual_number_multiply_by_conjugate(BGC_FP32_DualNumber* product, const BGC_FP32_DualNumber* multiplicand, const BGC_FP32_DualNumber* multiplier_to_conjugate) +inline void bgc_fp32_dual_number_multiply_by_conjugate(BGC_FP32_DualNumber* const product, const BGC_FP32_DualNumber* const multiplicand, const BGC_FP32_DualNumber* const multiplier_to_conjugate) { const float real_part = multiplicand->real_part * multiplier_to_conjugate->real_part; const float dual_part = multiplicand->dual_part * multiplier_to_conjugate->real_part - multiplicand->real_part * multiplier_to_conjugate->dual_part; @@ -303,7 +303,7 @@ inline void bgc_fp32_dual_number_multiply_by_conjugate(BGC_FP32_DualNumber* prod product->dual_part = dual_part; } -inline void bgc_fp64_dual_number_multiply_by_conjugate(BGC_FP64_DualNumber* product, const BGC_FP64_DualNumber* multiplicand, const BGC_FP64_DualNumber* multiplier_to_conjugate) +inline void bgc_fp64_dual_number_multiply_by_conjugate(BGC_FP64_DualNumber* const product, const BGC_FP64_DualNumber* const multiplicand, const BGC_FP64_DualNumber* const multiplier_to_conjugate) { const double real_part = multiplicand->real_part * multiplier_to_conjugate->real_part; const double dual_part = multiplicand->dual_part * multiplier_to_conjugate->real_part - multiplicand->real_part * multiplier_to_conjugate->dual_part; @@ -313,7 +313,7 @@ inline void bgc_fp64_dual_number_multiply_by_conjugate(BGC_FP64_DualNumber* prod } // =================== Divide =================== // -inline int bgc_fp32_dual_number_divide_by_real(BGC_FP32_DualNumber* quotient, const BGC_FP32_DualNumber* dividend, const float divisor) +inline int bgc_fp32_dual_number_divide_by_real(BGC_FP32_DualNumber* const quotient, const BGC_FP32_DualNumber* const dividend, const float divisor) { if (bgc_fp32_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -323,7 +323,7 @@ inline int bgc_fp32_dual_number_divide_by_real(BGC_FP32_DualNumber* quotient, co return BGC_SUCCESS; } -inline int bgc_fp64_dual_number_divide_by_real(BGC_FP64_DualNumber* quotient, const BGC_FP64_DualNumber* dividend, const double divisor) +inline int bgc_fp64_dual_number_divide_by_real(BGC_FP64_DualNumber* const quotient, const BGC_FP64_DualNumber* const dividend, const double divisor) { if (bgc_fp64_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -333,7 +333,7 @@ inline int bgc_fp64_dual_number_divide_by_real(BGC_FP64_DualNumber* quotient, co return BGC_SUCCESS; } -inline int bgc_fp32_dual_number_divide_by_dual(BGC_FP32_DualNumber* quotient, const BGC_FP32_DualNumber* dividend, const BGC_FP32_DualNumber* divisor) +inline int bgc_fp32_dual_number_divide_by_dual(BGC_FP32_DualNumber* const quotient, const BGC_FP32_DualNumber* const dividend, const BGC_FP32_DualNumber* const divisor) { if (bgc_fp32_is_zero(divisor->real_part)) { return BGC_FAILURE; @@ -350,7 +350,7 @@ inline int bgc_fp32_dual_number_divide_by_dual(BGC_FP32_DualNumber* quotient, co return BGC_SUCCESS; } -inline int bgc_fp64_dual_number_divide_by_dual(BGC_FP64_DualNumber* quotient, const BGC_FP64_DualNumber* dividend, const BGC_FP64_DualNumber* divisor) +inline int bgc_fp64_dual_number_divide_by_dual(BGC_FP64_DualNumber* const quotient, const BGC_FP64_DualNumber* const dividend, const BGC_FP64_DualNumber* const divisor) { if (bgc_fp64_is_zero(divisor->real_part)) { return BGC_FAILURE; @@ -367,7 +367,7 @@ inline int bgc_fp64_dual_number_divide_by_dual(BGC_FP64_DualNumber* quotient, co return BGC_SUCCESS; } -inline int bgc_fp32_dual_number_divide_by_conjugate(BGC_FP32_DualNumber* quotient, const BGC_FP32_DualNumber* dividend, const BGC_FP32_DualNumber* divisor_to_conjugate) +inline int bgc_fp32_dual_number_divide_by_conjugate(BGC_FP32_DualNumber* const quotient, const BGC_FP32_DualNumber* const dividend, const BGC_FP32_DualNumber* const divisor_to_conjugate) { if (bgc_fp32_is_zero(divisor_to_conjugate->real_part)) { return BGC_FAILURE; @@ -384,7 +384,7 @@ inline int bgc_fp32_dual_number_divide_by_conjugate(BGC_FP32_DualNumber* quotien return BGC_SUCCESS; } -inline int bgc_fp64_dual_number_divide_by_conjugate(BGC_FP64_DualNumber* quotient, const BGC_FP64_DualNumber* dividend, const BGC_FP64_DualNumber* divisor_to_conjugate) +inline int bgc_fp64_dual_number_divide_by_conjugate(BGC_FP64_DualNumber* const quotient, const BGC_FP64_DualNumber* const dividend, const BGC_FP64_DualNumber* const divisor_to_conjugate) { if (bgc_fp64_is_zero(divisor_to_conjugate->real_part)) { return BGC_FAILURE; @@ -403,13 +403,13 @@ inline int bgc_fp64_dual_number_divide_by_conjugate(BGC_FP64_DualNumber* quotien // ================ Mean of Two ================= // -inline void bgc_fp32_dual_number_get_mean2(BGC_FP32_DualNumber* mean, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second) +inline void bgc_fp32_dual_number_get_mean2(BGC_FP32_DualNumber* const mean, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second) { mean->real_part = (first->real_part + second->real_part) * 0.5f; mean->dual_part = (first->dual_part + second->dual_part) * 0.5f; } -inline void bgc_fp64_dual_number_get_mean2(BGC_FP64_DualNumber* mean, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second) +inline void bgc_fp64_dual_number_get_mean2(BGC_FP64_DualNumber* const mean, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second) { mean->real_part = (first->real_part + second->real_part) * 0.5; mean->dual_part = (first->dual_part + second->dual_part) * 0.5; @@ -417,13 +417,13 @@ inline void bgc_fp64_dual_number_get_mean2(BGC_FP64_DualNumber* mean, const BGC_ // =============== Mean of Three ================ // -inline void bgc_fp32_dual_number_get_mean3(BGC_FP32_DualNumber* mean, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second, const BGC_FP32_DualNumber* third) +inline void bgc_fp32_dual_number_get_mean3(BGC_FP32_DualNumber* const mean, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second, const BGC_FP32_DualNumber* const third) { mean->real_part = (first->real_part + second->real_part + third->real_part) * BGC_FP32_ONE_THIRD; mean->dual_part = (first->dual_part + second->dual_part + third->dual_part) * BGC_FP32_ONE_THIRD; } -inline void bgc_fp64_dual_number_get_mean3(BGC_FP64_DualNumber* mean, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second, const BGC_FP64_DualNumber* third) +inline void bgc_fp64_dual_number_get_mean3(BGC_FP64_DualNumber* const mean, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second, const BGC_FP64_DualNumber* const third) { mean->real_part = (first->real_part + second->real_part + third->real_part) * BGC_FP64_ONE_THIRD; mean->dual_part = (first->dual_part + second->dual_part + third->dual_part) * BGC_FP64_ONE_THIRD; @@ -431,7 +431,7 @@ inline void bgc_fp64_dual_number_get_mean3(BGC_FP64_DualNumber* mean, const BGC_ // ============ Linear Interpolation ============ // -inline void bgc_fp32_dual_number_interpolate(BGC_FP32_DualNumber* interpolation, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second, const float phase) +inline void bgc_fp32_dual_number_interpolate(BGC_FP32_DualNumber* const interpolation, const BGC_FP32_DualNumber* const first, const BGC_FP32_DualNumber* const second, const float phase) { const float counter_phase = 1.0f - phase; @@ -439,7 +439,7 @@ inline void bgc_fp32_dual_number_interpolate(BGC_FP32_DualNumber* interpolation, interpolation->dual_part = first->dual_part * counter_phase + second->dual_part * phase; } -inline void bgc_fp64_dual_number_interpolate(BGC_FP64_DualNumber* interpolation, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second, const double phase) +inline void bgc_fp64_dual_number_interpolate(BGC_FP64_DualNumber* const interpolation, const BGC_FP64_DualNumber* const first, const BGC_FP64_DualNumber* const second, const double phase) { const double counter_phase = 1.0 - phase; diff --git a/basic-geometry/dual-quaternion.c b/basic-geometry/dual-quaternion.c index 112333d..5edb857 100644 --- a/basic-geometry/dual-quaternion.c +++ b/basic-geometry/dual-quaternion.c @@ -1,103 +1,103 @@ #include "./dual-quaternion.h" -extern inline void bgc_fp32_dual_quaternion_reset(BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_reset(BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_reset(BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_reset(BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_copy(BGC_FP32_DualQuaternion* destination, const BGC_FP32_DualQuaternion* source); -extern inline void bgc_fp64_dual_quaternion_copy(BGC_FP64_DualQuaternion* destination, const BGC_FP64_DualQuaternion* source); +extern inline void bgc_fp32_dual_quaternion_copy(BGC_FP32_DualQuaternion* const destination, const BGC_FP32_DualQuaternion* const source); +extern inline void bgc_fp64_dual_quaternion_copy(BGC_FP64_DualQuaternion* const destination, const BGC_FP64_DualQuaternion* const source); -extern inline void bgc_fp32_dual_quaternion_swap(BGC_FP32_DualQuaternion* first, BGC_FP32_DualQuaternion* second); -extern inline void bgc_fp64_dual_quaternion_swap(BGC_FP64_DualQuaternion* first, BGC_FP64_DualQuaternion* second); +extern inline void bgc_fp32_dual_quaternion_swap(BGC_FP32_DualQuaternion* const first, BGC_FP32_DualQuaternion* const second); +extern inline void bgc_fp64_dual_quaternion_swap(BGC_FP64_DualQuaternion* const first, BGC_FP64_DualQuaternion* const second); -extern inline void bgc_fp32_dual_quaternion_convert_to_fp64(BGC_FP64_DualQuaternion* destination, const BGC_FP32_DualQuaternion* source); -extern inline void bgc_fp64_dual_quaternion_convert_to_fp32(BGC_FP32_DualQuaternion* destination, const BGC_FP64_DualQuaternion* source); +extern inline void bgc_fp32_dual_quaternion_convert_to_fp64(BGC_FP64_DualQuaternion* const destination, const BGC_FP32_DualQuaternion* const source); +extern inline void bgc_fp64_dual_quaternion_convert_to_fp32(BGC_FP32_DualQuaternion* const destination, const BGC_FP64_DualQuaternion* const source); -extern inline void bgc_fp32_dual_quaternion_revert(BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_revert(BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_revert(BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_revert(BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_get_reverse(BGC_FP32_DualQuaternion* reverse, const BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_get_reverse(BGC_FP64_DualQuaternion* reverse, const BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_get_reverse(BGC_FP32_DualQuaternion* const reverse, const BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_get_reverse(BGC_FP64_DualQuaternion* const reverse, const BGC_FP64_DualQuaternion* const quaternion); -extern inline int bgc_fp32_dual_quaternion_invert(BGC_FP32_DualQuaternion* quaternion); -extern inline int bgc_fp64_dual_quaternion_invert(BGC_FP64_DualQuaternion* quaternion); +extern inline int bgc_fp32_dual_quaternion_invert(BGC_FP32_DualQuaternion* const quaternion); +extern inline int bgc_fp64_dual_quaternion_invert(BGC_FP64_DualQuaternion* const quaternion); -extern inline int bgc_fp32_dual_quaternion_get_inverse(BGC_FP32_DualQuaternion* inverse, const BGC_FP32_DualQuaternion* quaternion); -extern inline int bgc_fp64_dual_quaternion_get_inverse(BGC_FP64_DualQuaternion* inverse, const BGC_FP64_DualQuaternion* quaternion); +extern inline int bgc_fp32_dual_quaternion_get_inverse(BGC_FP32_DualQuaternion* const inverse, const BGC_FP32_DualQuaternion* const quaternion); +extern inline int bgc_fp64_dual_quaternion_get_inverse(BGC_FP64_DualQuaternion* const inverse, const BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_component_conjugate(BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_component_conjugate(BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_component_conjugate(BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_component_conjugate(BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_get_component_conjugate(BGC_FP32_DualQuaternion* conjugate, const BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_get_component_conjugate(BGC_FP64_DualQuaternion* conjugate, const BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_get_component_conjugate(BGC_FP32_DualQuaternion* const conjugate, const BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_get_component_conjugate(BGC_FP64_DualQuaternion* const conjugate, const BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_dual_conjugate(BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_dual_conjugate(BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_dual_conjugate(BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_dual_conjugate(BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_get_dual_conjugate(BGC_FP32_DualQuaternion* conjugate, const BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_get_dual_conjugate(BGC_FP64_DualQuaternion* conjugate, const BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_get_dual_conjugate(BGC_FP32_DualQuaternion* const conjugate, const BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_get_dual_conjugate(BGC_FP64_DualQuaternion* const conjugate, const BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_fully_conjugate(BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_fully_conjugate(BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_fully_conjugate(BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_fully_conjugate(BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_get_fully_conjugate(BGC_FP32_DualQuaternion* conjugate, const BGC_FP32_DualQuaternion* quaternion); -extern inline void bgc_fp64_dual_quaternion_get_fully_conjugate(BGC_FP64_DualQuaternion* conjugate, const BGC_FP64_DualQuaternion* quaternion); +extern inline void bgc_fp32_dual_quaternion_get_fully_conjugate(BGC_FP32_DualQuaternion* const conjugate, const BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_dual_quaternion_get_fully_conjugate(BGC_FP64_DualQuaternion* const conjugate, const BGC_FP64_DualQuaternion* const quaternion); -extern inline int bgc_fp32_dual_quaternion_normalize(BGC_FP32_DualQuaternion* quaternion); -extern inline int bgc_fp64_dual_quaternion_normalize(BGC_FP64_DualQuaternion* quaternion); +extern inline int bgc_fp32_dual_quaternion_normalize(BGC_FP32_DualQuaternion* const quaternion); +extern inline int bgc_fp64_dual_quaternion_normalize(BGC_FP64_DualQuaternion* const quaternion); -extern inline int bgc_fp32_dual_quaternion_get_normalized(BGC_FP32_DualQuaternion* normalized, const BGC_FP32_DualQuaternion* quaternion); -extern inline int bgc_fp64_dual_quaternion_get_normalized(BGC_FP64_DualQuaternion* normalized, const BGC_FP64_DualQuaternion* quaternion); +extern inline int bgc_fp32_dual_quaternion_get_normalized(BGC_FP32_DualQuaternion* const normalized, const BGC_FP32_DualQuaternion* const quaternion); +extern inline int bgc_fp64_dual_quaternion_get_normalized(BGC_FP64_DualQuaternion* const normalized, const BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_dual_quaternion_add(BGC_FP32_DualQuaternion* sum, const BGC_FP32_DualQuaternion* first, const BGC_FP32_DualQuaternion* second); -extern inline void bgc_fp64_dual_quaternion_add(BGC_FP64_DualQuaternion* sum, const BGC_FP64_DualQuaternion* first, const BGC_FP64_DualQuaternion* second); +extern inline void bgc_fp32_dual_quaternion_add(BGC_FP32_DualQuaternion* const sum, const BGC_FP32_DualQuaternion* const first, const BGC_FP32_DualQuaternion* const second); +extern inline void bgc_fp64_dual_quaternion_add(BGC_FP64_DualQuaternion* const sum, const BGC_FP64_DualQuaternion* const first, const BGC_FP64_DualQuaternion* const second); -extern inline void bgc_fp32_dual_quaternion_add_scaled(BGC_FP32_DualQuaternion* sum, const BGC_FP32_DualQuaternion* base_quaternion, const BGC_FP32_DualQuaternion* scalable_quaternion, const float scale); -extern inline void bgc_fp64_dual_quaternion_add_scaled(BGC_FP64_DualQuaternion* sum, const BGC_FP64_DualQuaternion* base_quaternion, const BGC_FP64_DualQuaternion* scalable_quaternion, const double scale); +extern inline void bgc_fp32_dual_quaternion_add_scaled(BGC_FP32_DualQuaternion* const sum, const BGC_FP32_DualQuaternion* const base_quaternion, const BGC_FP32_DualQuaternion* const scalable_quaternion, const float scale); +extern inline void bgc_fp64_dual_quaternion_add_scaled(BGC_FP64_DualQuaternion* const sum, const BGC_FP64_DualQuaternion* const base_quaternion, const BGC_FP64_DualQuaternion* const scalable_quaternion, const double scale); -extern inline void bgc_fp32_dual_quaternion_subtract(BGC_FP32_DualQuaternion* difference, const BGC_FP32_DualQuaternion* minuend, const BGC_FP32_DualQuaternion* subtrahend); -extern inline void bgc_fp64_dual_quaternion_subtract(BGC_FP64_DualQuaternion* difference, const BGC_FP64_DualQuaternion* minuend, const BGC_FP64_DualQuaternion* subtrahend); +extern inline void bgc_fp32_dual_quaternion_subtract(BGC_FP32_DualQuaternion* const difference, const BGC_FP32_DualQuaternion* const minuend, const BGC_FP32_DualQuaternion* const subtrahend); +extern inline void bgc_fp64_dual_quaternion_subtract(BGC_FP64_DualQuaternion* const difference, const BGC_FP64_DualQuaternion* const minuend, const BGC_FP64_DualQuaternion* const subtrahend); -extern inline void bgc_fp32_dual_quaternion_subtract_scaled(BGC_FP32_DualQuaternion* difference, const BGC_FP32_DualQuaternion* base_quaternion, const BGC_FP32_DualQuaternion* scalable_quaternion, const float scale); -extern inline void bgc_fp64_dual_quaternion_subtract_scaled(BGC_FP64_DualQuaternion* difference, const BGC_FP64_DualQuaternion* base_quaternion, const BGC_FP64_DualQuaternion* scalable_quaternion, const double scale); +extern inline void bgc_fp32_dual_quaternion_subtract_scaled(BGC_FP32_DualQuaternion* const difference, const BGC_FP32_DualQuaternion* const base_quaternion, const BGC_FP32_DualQuaternion* const scalable_quaternion, const float scale); +extern inline void bgc_fp64_dual_quaternion_subtract_scaled(BGC_FP64_DualQuaternion* const difference, const BGC_FP64_DualQuaternion* const base_quaternion, const BGC_FP64_DualQuaternion* const scalable_quaternion, const double scale); -extern inline void bgc_fp32_dual_quaternion_multiply_by_real_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const float multiplier); -extern inline void bgc_fp64_dual_quaternion_multiply_by_real_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const double multiplier); +extern inline void bgc_fp32_dual_quaternion_multiply_by_real_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const float multiplier); +extern inline void bgc_fp64_dual_quaternion_multiply_by_real_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const double multiplier); -extern inline void bgc_fp32_dual_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_DualNumber* multiplier); -extern inline void bgc_fp64_dual_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_DualNumber* multiplier); +extern inline void bgc_fp32_dual_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_DualNumber* const multiplier); +extern inline void bgc_fp64_dual_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_DualNumber* const multiplier); -extern inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_DualNumber* multiplier_to_conjugate); -extern inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_DualNumber* multiplier_to_conjugate); +extern inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_DualNumber* const multiplier_to_conjugate); +extern inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_DualNumber* const multiplier_to_conjugate); -extern inline void bgc_fp32_dual_quaternion_multiply_by_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_Quaternion* multiplier); -extern inline void bgc_fp64_dual_quaternion_multiply_by_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_Quaternion* multiplier); +extern inline void bgc_fp32_dual_quaternion_multiply_by_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_Quaternion* const multiplier); +extern inline void bgc_fp64_dual_quaternion_multiply_by_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_Quaternion* const multiplier); -extern inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_Quaternion* multiplier_to_conjugate); -extern inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_Quaternion* multiplier_to_conjugate); +extern inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_Quaternion* const multiplier_to_conjugate); +extern inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_Quaternion* const multiplier_to_conjugate); -extern inline void bgc_fp32_dual_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* left, const BGC_FP32_DualQuaternion* right); -extern inline void bgc_fp64_dual_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* left, const BGC_FP64_DualQuaternion* right); +extern inline void bgc_fp32_dual_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const left, const BGC_FP32_DualQuaternion* const right); +extern inline void bgc_fp64_dual_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const left, const BGC_FP64_DualQuaternion* const right); -extern inline int bgc_fp32_dual_quaternion_divide_by_real_number(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* divident, const float divisor); -extern inline int bgc_fp64_dual_quaternion_divide_by_real_number(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* divident, const double divisor); +extern inline int bgc_fp32_dual_quaternion_divide_by_real_number(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const divident, const float divisor); +extern inline int bgc_fp64_dual_quaternion_divide_by_real_number(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const divident, const double divisor); -extern inline int bgc_fp32_dual_quaternion_divide_by_dual_number(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_DualNumber* divisor); -extern inline int bgc_fp64_dual_quaternion_divide_by_dual_number(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_DualNumber* divisor); +extern inline int bgc_fp32_dual_quaternion_divide_by_dual_number(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_DualNumber* const divisor); +extern inline int bgc_fp64_dual_quaternion_divide_by_dual_number(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_DualNumber* const divisor); -extern inline int bgc_fp32_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_DualNumber* divisor_to_conjugate); -extern inline int bgc_fp64_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_DualNumber* divisor_to_conjugate); +extern inline int bgc_fp32_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_DualNumber* const divisor_to_conjugate); +extern inline int bgc_fp64_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_DualNumber* const divisor_to_conjugate); -extern inline int bgc_fp32_dual_quaternion_divide_by_quaternion(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_Quaternion* divisor); -extern inline int bgc_fp64_dual_quaternion_divide_by_quaternion(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_Quaternion* divisor); +extern inline int bgc_fp32_dual_quaternion_divide_by_quaternion(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_Quaternion* const divisor); +extern inline int bgc_fp64_dual_quaternion_divide_by_quaternion(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_Quaternion* const divisor); -extern inline int bgc_fp32_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_Quaternion* divisor_to_conjugate); -extern inline int bgc_fp64_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_Quaternion* divisor_to_conjugate); +extern inline int bgc_fp32_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_Quaternion* const divisor_to_conjugate); +extern inline int bgc_fp64_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_Quaternion* const divisor_to_conjugate); -extern inline void bgc_fp32_dual_quaternion_get_mean2(BGC_FP32_DualQuaternion* mean, const BGC_FP32_DualQuaternion* quaternion1, const BGC_FP32_DualQuaternion* quaternion2); -extern inline void bgc_fp64_dual_quaternion_get_mean2(BGC_FP64_DualQuaternion* mean, const BGC_FP64_DualQuaternion* quaternion1, const BGC_FP64_DualQuaternion* quaternion2); +extern inline void bgc_fp32_dual_quaternion_get_mean2(BGC_FP32_DualQuaternion* const mean, const BGC_FP32_DualQuaternion* const quaternion1, const BGC_FP32_DualQuaternion* const quaternion2); +extern inline void bgc_fp64_dual_quaternion_get_mean2(BGC_FP64_DualQuaternion* const mean, const BGC_FP64_DualQuaternion* const quaternion1, const BGC_FP64_DualQuaternion* const quaternion2); -extern inline void bgc_fp32_dual_quaternion_get_mean3(BGC_FP32_DualQuaternion* mean, const BGC_FP32_DualQuaternion* quaternion1, const BGC_FP32_DualQuaternion* quaternion2, const BGC_FP32_DualQuaternion* quaternion3); -extern inline void bgc_fp64_dual_quaternion_get_mean3(BGC_FP64_DualQuaternion* mean, const BGC_FP64_DualQuaternion* quaternion1, const BGC_FP64_DualQuaternion* quaternion2, const BGC_FP64_DualQuaternion* quaternion3); +extern inline void bgc_fp32_dual_quaternion_get_mean3(BGC_FP32_DualQuaternion* const mean, const BGC_FP32_DualQuaternion* const quaternion1, const BGC_FP32_DualQuaternion* const quaternion2, const BGC_FP32_DualQuaternion* const quaternion3); +extern inline void bgc_fp64_dual_quaternion_get_mean3(BGC_FP64_DualQuaternion* const mean, const BGC_FP64_DualQuaternion* const quaternion1, const BGC_FP64_DualQuaternion* const quaternion2, const BGC_FP64_DualQuaternion* const quaternion3); -extern inline void bgc_fp32_dual_quaternion_interpolate(BGC_FP32_DualQuaternion* interpolation, const BGC_FP32_DualQuaternion* first, const BGC_FP32_DualQuaternion* second, const float phase); -extern inline void bgc_fp64_dual_quaternion_interpolate(BGC_FP64_DualQuaternion* interpolation, const BGC_FP64_DualQuaternion* first, const BGC_FP64_DualQuaternion* second, const double phase); +extern inline void bgc_fp32_dual_quaternion_interpolate(BGC_FP32_DualQuaternion* const interpolation, const BGC_FP32_DualQuaternion* const first, const BGC_FP32_DualQuaternion* const second, const float phase); +extern inline void bgc_fp64_dual_quaternion_interpolate(BGC_FP64_DualQuaternion* const interpolation, const BGC_FP64_DualQuaternion* const first, const BGC_FP64_DualQuaternion* const second, const double phase); diff --git a/basic-geometry/dual-quaternion.h b/basic-geometry/dual-quaternion.h index f0590b2..ce8966e 100644 --- a/basic-geometry/dual-quaternion.h +++ b/basic-geometry/dual-quaternion.h @@ -6,13 +6,13 @@ // =================== Reset ==================== // -inline void bgc_fp32_dual_quaternion_reset(BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_reset(BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_quaternion_reset(&quaternion->real_part); bgc_fp32_quaternion_reset(&quaternion->dual_part); } -inline void bgc_fp64_dual_quaternion_reset(BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_reset(BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_quaternion_reset(&quaternion->real_part); bgc_fp64_quaternion_reset(&quaternion->dual_part); @@ -20,13 +20,13 @@ inline void bgc_fp64_dual_quaternion_reset(BGC_FP64_DualQuaternion* quaternion) // ==================== Copy ==================== // -inline void bgc_fp32_dual_quaternion_copy(BGC_FP32_DualQuaternion* destination, const BGC_FP32_DualQuaternion* source) +inline void bgc_fp32_dual_quaternion_copy(BGC_FP32_DualQuaternion* const destination, const BGC_FP32_DualQuaternion* const source) { bgc_fp32_quaternion_copy(&destination->real_part, &source->real_part); bgc_fp32_quaternion_copy(&destination->dual_part, &source->dual_part); } -inline void bgc_fp64_dual_quaternion_copy(BGC_FP64_DualQuaternion* destination, const BGC_FP64_DualQuaternion* source) +inline void bgc_fp64_dual_quaternion_copy(BGC_FP64_DualQuaternion* const destination, const BGC_FP64_DualQuaternion* const source) { bgc_fp64_quaternion_copy(&destination->real_part, &source->real_part); bgc_fp64_quaternion_copy(&destination->dual_part, &source->dual_part); @@ -34,13 +34,13 @@ inline void bgc_fp64_dual_quaternion_copy(BGC_FP64_DualQuaternion* destination, // ==================== Swap ==================== // -inline void bgc_fp32_dual_quaternion_swap(BGC_FP32_DualQuaternion* first, BGC_FP32_DualQuaternion* second) +inline void bgc_fp32_dual_quaternion_swap(BGC_FP32_DualQuaternion* const first, BGC_FP32_DualQuaternion* const second) { bgc_fp32_quaternion_swap(&first->real_part, &second->real_part); bgc_fp32_quaternion_swap(&first->dual_part, &second->dual_part); } -inline void bgc_fp64_dual_quaternion_swap(BGC_FP64_DualQuaternion* first, BGC_FP64_DualQuaternion* second) +inline void bgc_fp64_dual_quaternion_swap(BGC_FP64_DualQuaternion* const first, BGC_FP64_DualQuaternion* const second) { bgc_fp64_quaternion_swap(&first->real_part, &second->real_part); bgc_fp64_quaternion_swap(&first->dual_part, &second->dual_part); @@ -48,13 +48,13 @@ inline void bgc_fp64_dual_quaternion_swap(BGC_FP64_DualQuaternion* first, BGC_FP // ================== Convert =================== // -inline void bgc_fp32_dual_quaternion_convert_to_fp64(BGC_FP64_DualQuaternion* destination, const BGC_FP32_DualQuaternion* source) +inline void bgc_fp32_dual_quaternion_convert_to_fp64(BGC_FP64_DualQuaternion* const destination, const BGC_FP32_DualQuaternion* const source) { bgc_fp32_quaternion_convert_to_fp64(&destination->real_part, &source->real_part); bgc_fp32_quaternion_convert_to_fp64(&destination->dual_part, &source->dual_part); } -inline void bgc_fp64_dual_quaternion_convert_to_fp32(BGC_FP32_DualQuaternion* destination, const BGC_FP64_DualQuaternion* source) +inline void bgc_fp64_dual_quaternion_convert_to_fp32(BGC_FP32_DualQuaternion* const destination, const BGC_FP64_DualQuaternion* const source) { bgc_fp64_quaternion_convert_to_fp32(&destination->real_part, &source->real_part); bgc_fp64_quaternion_convert_to_fp32(&destination->dual_part, &source->dual_part); @@ -62,13 +62,13 @@ inline void bgc_fp64_dual_quaternion_convert_to_fp32(BGC_FP32_DualQuaternion* de // =================== Revert =================== // -inline void bgc_fp32_dual_quaternion_revert(BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_revert(BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_quaternion_revert(&quaternion->real_part); bgc_fp32_quaternion_revert(&quaternion->dual_part); } -inline void bgc_fp64_dual_quaternion_revert(BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_revert(BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_quaternion_revert(&quaternion->real_part); bgc_fp64_quaternion_revert(&quaternion->dual_part); @@ -76,13 +76,13 @@ inline void bgc_fp64_dual_quaternion_revert(BGC_FP64_DualQuaternion* quaternion) // ================ Get Reverse ================= // -inline void bgc_fp32_dual_quaternion_get_reverse(BGC_FP32_DualQuaternion* reverse, const BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_get_reverse(BGC_FP32_DualQuaternion* const reverse, const BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_quaternion_get_reverse(&reverse->real_part, &quaternion->real_part); bgc_fp32_quaternion_get_reverse(&reverse->dual_part, &quaternion->dual_part); } -inline void bgc_fp64_dual_quaternion_get_reverse(BGC_FP64_DualQuaternion* reverse, const BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_get_reverse(BGC_FP64_DualQuaternion* const reverse, const BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_quaternion_get_reverse(&reverse->real_part, &quaternion->real_part); bgc_fp64_quaternion_get_reverse(&reverse->dual_part, &quaternion->dual_part); @@ -90,7 +90,7 @@ inline void bgc_fp64_dual_quaternion_get_reverse(BGC_FP64_DualQuaternion* revers // =================== Invert =================== // -inline int bgc_fp32_dual_quaternion_invert(BGC_FP32_DualQuaternion* quaternion) +inline int bgc_fp32_dual_quaternion_invert(BGC_FP32_DualQuaternion* const quaternion) { if (bgc_fp32_quaternion_get_inverse(&quaternion->real_part, &quaternion->real_part) != BGC_SUCCESS) { return BGC_FAILURE; @@ -106,7 +106,7 @@ inline int bgc_fp32_dual_quaternion_invert(BGC_FP32_DualQuaternion* quaternion) return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_invert(BGC_FP64_DualQuaternion* quaternion) +inline int bgc_fp64_dual_quaternion_invert(BGC_FP64_DualQuaternion* const quaternion) { if (bgc_fp64_quaternion_get_inverse(&quaternion->real_part, &quaternion->real_part) != BGC_SUCCESS) { return BGC_FAILURE; @@ -124,7 +124,7 @@ inline int bgc_fp64_dual_quaternion_invert(BGC_FP64_DualQuaternion* quaternion) // ================ Get Inverse ================= // -inline int bgc_fp32_dual_quaternion_get_inverse(BGC_FP32_DualQuaternion* inverse, const BGC_FP32_DualQuaternion* quaternion) +inline int bgc_fp32_dual_quaternion_get_inverse(BGC_FP32_DualQuaternion* const inverse, const BGC_FP32_DualQuaternion* const quaternion) { if (bgc_fp32_quaternion_get_inverse(&inverse->real_part, &quaternion->real_part) != BGC_SUCCESS) { return BGC_FAILURE; @@ -140,7 +140,7 @@ inline int bgc_fp32_dual_quaternion_get_inverse(BGC_FP32_DualQuaternion* inverse return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_get_inverse(BGC_FP64_DualQuaternion* inverse, const BGC_FP64_DualQuaternion* quaternion) +inline int bgc_fp64_dual_quaternion_get_inverse(BGC_FP64_DualQuaternion* const inverse, const BGC_FP64_DualQuaternion* const quaternion) { if (bgc_fp64_quaternion_get_inverse(&inverse->real_part, &quaternion->real_part) != BGC_SUCCESS) { return BGC_FAILURE; @@ -158,13 +158,13 @@ inline int bgc_fp64_dual_quaternion_get_inverse(BGC_FP64_DualQuaternion* inverse // ============ Component Conjugate ============= // -inline void bgc_fp32_dual_quaternion_component_conjugate(BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_component_conjugate(BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_quaternion_conjugate(&quaternion->real_part); bgc_fp32_quaternion_conjugate(&quaternion->dual_part); } -inline void bgc_fp64_dual_quaternion_component_conjugate(BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_component_conjugate(BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_quaternion_conjugate(&quaternion->real_part); bgc_fp64_quaternion_conjugate(&quaternion->dual_part); @@ -172,13 +172,13 @@ inline void bgc_fp64_dual_quaternion_component_conjugate(BGC_FP64_DualQuaternion // ========== Get Component Conjugate =========== // -inline void bgc_fp32_dual_quaternion_get_component_conjugate(BGC_FP32_DualQuaternion* conjugate, const BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_get_component_conjugate(BGC_FP32_DualQuaternion* const conjugate, const BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_quaternion_get_conjugate(&conjugate->real_part, &quaternion->real_part); bgc_fp32_quaternion_get_conjugate(&conjugate->dual_part, &quaternion->dual_part); } -inline void bgc_fp64_dual_quaternion_get_component_conjugate(BGC_FP64_DualQuaternion* conjugate, const BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_get_component_conjugate(BGC_FP64_DualQuaternion* const conjugate, const BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_quaternion_get_conjugate(&conjugate->real_part, &quaternion->real_part); bgc_fp64_quaternion_get_conjugate(&conjugate->dual_part, &quaternion->dual_part); @@ -186,25 +186,25 @@ inline void bgc_fp64_dual_quaternion_get_component_conjugate(BGC_FP64_DualQuater // =============== Dual Conjugate =============== // -inline void bgc_fp32_dual_quaternion_dual_conjugate(BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_dual_conjugate(BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_quaternion_revert(&quaternion->dual_part); } -inline void bgc_fp64_dual_quaternion_dual_conjugate(BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_dual_conjugate(BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_quaternion_revert(&quaternion->dual_part); } // ============= Get Dual Conjugate ============= // -inline void bgc_fp32_dual_quaternion_get_dual_conjugate(BGC_FP32_DualQuaternion* conjugate, const BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_get_dual_conjugate(BGC_FP32_DualQuaternion* const conjugate, const BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_quaternion_copy(&conjugate->real_part, &quaternion->real_part); bgc_fp32_quaternion_get_reverse(&conjugate->real_part, &quaternion->dual_part); } -inline void bgc_fp64_dual_quaternion_get_dual_conjugate(BGC_FP64_DualQuaternion* conjugate, const BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_get_dual_conjugate(BGC_FP64_DualQuaternion* const conjugate, const BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_quaternion_copy(&conjugate->real_part, &quaternion->real_part); bgc_fp64_quaternion_get_reverse(&conjugate->real_part, &quaternion->dual_part); @@ -212,7 +212,7 @@ inline void bgc_fp64_dual_quaternion_get_dual_conjugate(BGC_FP64_DualQuaternion* // ============== Fully Conjugate =============== // -inline void bgc_fp32_dual_quaternion_fully_conjugate(BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_fully_conjugate(BGC_FP32_DualQuaternion* const quaternion) { quaternion->real_part.x1 = -quaternion->real_part.x1; quaternion->real_part.x2 = -quaternion->real_part.x2; @@ -221,7 +221,7 @@ inline void bgc_fp32_dual_quaternion_fully_conjugate(BGC_FP32_DualQuaternion* qu quaternion->dual_part.s0 = -quaternion->dual_part.s0; } -inline void bgc_fp64_dual_quaternion_fully_conjugate(BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_fully_conjugate(BGC_FP64_DualQuaternion* const quaternion) { quaternion->real_part.x1 = -quaternion->real_part.x1; quaternion->real_part.x2 = -quaternion->real_part.x2; @@ -232,7 +232,7 @@ inline void bgc_fp64_dual_quaternion_fully_conjugate(BGC_FP64_DualQuaternion* qu // ============ Get Fully Conjugate ============= // -inline void bgc_fp32_dual_quaternion_get_fully_conjugate(BGC_FP32_DualQuaternion* conjugate, const BGC_FP32_DualQuaternion* quaternion) +inline void bgc_fp32_dual_quaternion_get_fully_conjugate(BGC_FP32_DualQuaternion* const conjugate, const BGC_FP32_DualQuaternion* const quaternion) { conjugate->real_part.s0 = quaternion->real_part.s0; conjugate->real_part.x1 = -quaternion->real_part.x1; @@ -245,7 +245,7 @@ inline void bgc_fp32_dual_quaternion_get_fully_conjugate(BGC_FP32_DualQuaternion conjugate->dual_part.x3 = quaternion->dual_part.x3; } -inline void bgc_fp64_dual_quaternion_get_fully_conjugate(BGC_FP64_DualQuaternion* conjugate, const BGC_FP64_DualQuaternion* quaternion) +inline void bgc_fp64_dual_quaternion_get_fully_conjugate(BGC_FP64_DualQuaternion* const conjugate, const BGC_FP64_DualQuaternion* const quaternion) { conjugate->real_part.s0 = quaternion->real_part.s0; conjugate->real_part.x1 = -quaternion->real_part.x1; @@ -260,7 +260,7 @@ inline void bgc_fp64_dual_quaternion_get_fully_conjugate(BGC_FP64_DualQuaternion // ================= Normalize ================== // -inline int bgc_fp32_dual_quaternion_normalize(BGC_FP32_DualQuaternion* quaternion) +inline int bgc_fp32_dual_quaternion_normalize(BGC_FP32_DualQuaternion* const quaternion) { const float square_magnitude = bgc_fp32_quaternion_get_square_magnitude(&quaternion->real_part); @@ -282,7 +282,7 @@ inline int bgc_fp32_dual_quaternion_normalize(BGC_FP32_DualQuaternion* quaternio return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_normalize(BGC_FP64_DualQuaternion* quaternion) +inline int bgc_fp64_dual_quaternion_normalize(BGC_FP64_DualQuaternion* const quaternion) { const double square_magnitude = bgc_fp64_quaternion_get_square_magnitude(&quaternion->real_part); @@ -306,7 +306,7 @@ inline int bgc_fp64_dual_quaternion_normalize(BGC_FP64_DualQuaternion* quaternio // =============== Get Normalized =============== // -inline int bgc_fp32_dual_quaternion_get_normalized(BGC_FP32_DualQuaternion* normalized, const BGC_FP32_DualQuaternion* quaternion) +inline int bgc_fp32_dual_quaternion_get_normalized(BGC_FP32_DualQuaternion* const normalized, const BGC_FP32_DualQuaternion* const quaternion) { const float square_magnitude = bgc_fp32_quaternion_get_square_magnitude(&quaternion->real_part); @@ -332,7 +332,7 @@ inline int bgc_fp32_dual_quaternion_get_normalized(BGC_FP32_DualQuaternion* norm return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_get_normalized(BGC_FP64_DualQuaternion* normalized, const BGC_FP64_DualQuaternion* quaternion) +inline int bgc_fp64_dual_quaternion_get_normalized(BGC_FP64_DualQuaternion* const normalized, const BGC_FP64_DualQuaternion* const quaternion) { const double square_magnitude = bgc_fp64_quaternion_get_square_magnitude(&quaternion->real_part); @@ -360,13 +360,13 @@ inline int bgc_fp64_dual_quaternion_get_normalized(BGC_FP64_DualQuaternion* norm // ==================== Add ===================== // -inline void bgc_fp32_dual_quaternion_add(BGC_FP32_DualQuaternion* sum, const BGC_FP32_DualQuaternion* first, const BGC_FP32_DualQuaternion* second) +inline void bgc_fp32_dual_quaternion_add(BGC_FP32_DualQuaternion* const sum, const BGC_FP32_DualQuaternion* const first, const BGC_FP32_DualQuaternion* const second) { bgc_fp32_quaternion_add(&sum->real_part, &first->real_part, &second->real_part); bgc_fp32_quaternion_add(&sum->dual_part, &first->dual_part, &second->dual_part); } -inline void bgc_fp64_dual_quaternion_add(BGC_FP64_DualQuaternion* sum, const BGC_FP64_DualQuaternion* first, const BGC_FP64_DualQuaternion* second) +inline void bgc_fp64_dual_quaternion_add(BGC_FP64_DualQuaternion* const sum, const BGC_FP64_DualQuaternion* const first, const BGC_FP64_DualQuaternion* const second) { bgc_fp64_quaternion_add(&sum->real_part, &first->real_part, &second->real_part); bgc_fp64_quaternion_add(&sum->dual_part, &first->dual_part, &second->dual_part); @@ -374,13 +374,13 @@ inline void bgc_fp64_dual_quaternion_add(BGC_FP64_DualQuaternion* sum, const BGC // ================= Add Scaled ================= // -inline void bgc_fp32_dual_quaternion_add_scaled(BGC_FP32_DualQuaternion* sum, const BGC_FP32_DualQuaternion* base_quaternion, const BGC_FP32_DualQuaternion* scalable_quaternion, const float scale) +inline void bgc_fp32_dual_quaternion_add_scaled(BGC_FP32_DualQuaternion* const sum, const BGC_FP32_DualQuaternion* const base_quaternion, const BGC_FP32_DualQuaternion* const scalable_quaternion, const float scale) { bgc_fp32_quaternion_add_scaled(&sum->real_part, &base_quaternion->real_part, &scalable_quaternion->real_part, scale); bgc_fp32_quaternion_add_scaled(&sum->dual_part, &base_quaternion->dual_part, &scalable_quaternion->dual_part, scale); } -inline void bgc_fp64_dual_quaternion_add_scaled(BGC_FP64_DualQuaternion* sum, const BGC_FP64_DualQuaternion* base_quaternion, const BGC_FP64_DualQuaternion* scalable_quaternion, const double scale) +inline void bgc_fp64_dual_quaternion_add_scaled(BGC_FP64_DualQuaternion* const sum, const BGC_FP64_DualQuaternion* const base_quaternion, const BGC_FP64_DualQuaternion* const scalable_quaternion, const double scale) { bgc_fp64_quaternion_add_scaled(&sum->real_part, &base_quaternion->real_part, &scalable_quaternion->real_part, scale); bgc_fp64_quaternion_add_scaled(&sum->dual_part, &base_quaternion->dual_part, &scalable_quaternion->dual_part, scale); @@ -388,13 +388,13 @@ inline void bgc_fp64_dual_quaternion_add_scaled(BGC_FP64_DualQuaternion* sum, co // ================== Subtract ================== // -inline void bgc_fp32_dual_quaternion_subtract(BGC_FP32_DualQuaternion* difference, const BGC_FP32_DualQuaternion* minuend, const BGC_FP32_DualQuaternion* subtrahend) +inline void bgc_fp32_dual_quaternion_subtract(BGC_FP32_DualQuaternion* const difference, const BGC_FP32_DualQuaternion* const minuend, const BGC_FP32_DualQuaternion* const subtrahend) { bgc_fp32_quaternion_subtract(&difference->real_part, &minuend->real_part, &subtrahend->real_part); bgc_fp32_quaternion_subtract(&difference->dual_part, &minuend->dual_part, &subtrahend->dual_part); } -inline void bgc_fp64_dual_quaternion_subtract(BGC_FP64_DualQuaternion* difference, const BGC_FP64_DualQuaternion* minuend, const BGC_FP64_DualQuaternion* subtrahend) +inline void bgc_fp64_dual_quaternion_subtract(BGC_FP64_DualQuaternion* const difference, const BGC_FP64_DualQuaternion* const minuend, const BGC_FP64_DualQuaternion* const subtrahend) { bgc_fp64_quaternion_subtract(&difference->real_part, &minuend->real_part, &subtrahend->real_part); bgc_fp64_quaternion_subtract(&difference->dual_part, &minuend->dual_part, &subtrahend->dual_part); @@ -402,13 +402,13 @@ inline void bgc_fp64_dual_quaternion_subtract(BGC_FP64_DualQuaternion* differenc // ============== Subtract Scaled =============== // -inline void bgc_fp32_dual_quaternion_subtract_scaled(BGC_FP32_DualQuaternion* difference, const BGC_FP32_DualQuaternion* base_quaternion, const BGC_FP32_DualQuaternion* scalable_quaternion, const float scale) +inline void bgc_fp32_dual_quaternion_subtract_scaled(BGC_FP32_DualQuaternion* const difference, const BGC_FP32_DualQuaternion* const base_quaternion, const BGC_FP32_DualQuaternion* const scalable_quaternion, const float scale) { bgc_fp32_quaternion_subtract_scaled(&difference->real_part, &base_quaternion->real_part, &scalable_quaternion->real_part, scale); bgc_fp32_quaternion_subtract_scaled(&difference->dual_part, &base_quaternion->dual_part, &scalable_quaternion->dual_part, scale); } -inline void bgc_fp64_dual_quaternion_subtract_scaled(BGC_FP64_DualQuaternion* difference, const BGC_FP64_DualQuaternion* base_quaternion, const BGC_FP64_DualQuaternion* scalable_quaternion, const double scale) +inline void bgc_fp64_dual_quaternion_subtract_scaled(BGC_FP64_DualQuaternion* const difference, const BGC_FP64_DualQuaternion* const base_quaternion, const BGC_FP64_DualQuaternion* const scalable_quaternion, const double scale) { bgc_fp64_quaternion_subtract_scaled(&difference->real_part, &base_quaternion->real_part, &scalable_quaternion->real_part, scale); bgc_fp64_quaternion_subtract_scaled(&difference->dual_part, &base_quaternion->dual_part, &scalable_quaternion->dual_part, scale); @@ -416,13 +416,13 @@ inline void bgc_fp64_dual_quaternion_subtract_scaled(BGC_FP64_DualQuaternion* di // ================== Multiply ================== // -inline void bgc_fp32_dual_quaternion_multiply_by_real_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const float multiplier) +inline void bgc_fp32_dual_quaternion_multiply_by_real_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const float multiplier) { bgc_fp32_quaternion_multiply_by_real_number(&product->real_part, &multiplicand->real_part, multiplier); bgc_fp32_quaternion_multiply_by_real_number(&product->dual_part, &multiplicand->dual_part, multiplier); } -inline void bgc_fp64_dual_quaternion_multiply_by_real_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const double multiplier) +inline void bgc_fp64_dual_quaternion_multiply_by_real_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const double multiplier) { bgc_fp64_quaternion_multiply_by_real_number(&product->real_part, &multiplicand->real_part, multiplier); bgc_fp64_quaternion_multiply_by_real_number(&product->dual_part, &multiplicand->dual_part, multiplier); @@ -430,7 +430,7 @@ inline void bgc_fp64_dual_quaternion_multiply_by_real_number(BGC_FP64_DualQuater // ========== Multiply by Dual Number =========== // -inline void bgc_fp32_dual_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_DualNumber* multiplier) +inline void bgc_fp32_dual_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_DualNumber* const multiplier) { BGC_FP32_Quaternion dual_part; @@ -441,7 +441,7 @@ inline void bgc_fp32_dual_quaternion_multiply_by_dual_number(BGC_FP32_DualQuater bgc_fp32_quaternion_copy(&product->dual_part, &dual_part); } -inline void bgc_fp64_dual_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_DualNumber* multiplier) +inline void bgc_fp64_dual_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_DualNumber* const multiplier) { BGC_FP64_Quaternion dual_part; @@ -454,7 +454,7 @@ inline void bgc_fp64_dual_quaternion_multiply_by_dual_number(BGC_FP64_DualQuater // ===== Multiply by Conjugate Dual Number ====== // -inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_DualNumber* multiplier_to_conjugate) +inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_DualNumber* const multiplier_to_conjugate) { BGC_FP32_Quaternion dual_part; @@ -465,7 +465,7 @@ inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP32_ bgc_fp32_quaternion_copy(&product->dual_part, &dual_part); } -inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_DualNumber* multiplier_to_conjugate) +inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_DualNumber* const multiplier_to_conjugate) { BGC_FP64_Quaternion dual_part; @@ -478,13 +478,13 @@ inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_dual_number(BGC_FP64_ // ====== Multiply by (Regular) Quaternion ====== // -inline void bgc_fp32_dual_quaternion_multiply_by_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_Quaternion* multiplier) +inline void bgc_fp32_dual_quaternion_multiply_by_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_Quaternion* const multiplier) { bgc_fp32_quaternion_multiply_by_quaternion(&product->real_part, &multiplicand->real_part, multiplier); bgc_fp32_quaternion_multiply_by_quaternion(&product->dual_part, &multiplicand->dual_part, multiplier); } -inline void bgc_fp64_dual_quaternion_multiply_by_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_Quaternion* multiplier) +inline void bgc_fp64_dual_quaternion_multiply_by_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_Quaternion* const multiplier) { bgc_fp64_quaternion_multiply_by_quaternion(&product->real_part, &multiplicand->real_part, multiplier); bgc_fp64_quaternion_multiply_by_quaternion(&product->dual_part, &multiplicand->dual_part, multiplier); @@ -492,13 +492,13 @@ inline void bgc_fp64_dual_quaternion_multiply_by_quaternion(BGC_FP64_DualQuatern // ====== Multiply by Conjugate Quaternion ====== // -inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* multiplicand, const BGC_FP32_Quaternion* multiplier_to_conjugate) +inline void bgc_fp32_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const multiplicand, const BGC_FP32_Quaternion* const multiplier_to_conjugate) { bgc_fp32_quaternion_multiply_by_conjugate(&product->real_part, &multiplicand->real_part, multiplier_to_conjugate); bgc_fp32_quaternion_multiply_by_conjugate(&product->dual_part, &multiplicand->dual_part, multiplier_to_conjugate); } -inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* multiplicand, const BGC_FP64_Quaternion* multiplier_to_conjugate) +inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const multiplicand, const BGC_FP64_Quaternion* const multiplier_to_conjugate) { bgc_fp64_quaternion_multiply_by_conjugate(&product->real_part, &multiplicand->real_part, multiplier_to_conjugate); bgc_fp64_quaternion_multiply_by_conjugate(&product->dual_part, &multiplicand->dual_part, multiplier_to_conjugate); @@ -506,7 +506,7 @@ inline void bgc_fp64_dual_quaternion_multiply_by_conjugate_quaternion(BGC_FP64_D // ======== Multiply by Dual Quaternion ========= // -inline void bgc_fp32_dual_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_DualQuaternion* left, const BGC_FP32_DualQuaternion* right) +inline void bgc_fp32_dual_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_DualQuaternion* const left, const BGC_FP32_DualQuaternion* const right) { BGC_FP32_Quaternion dual_part1, dual_part2; @@ -517,7 +517,7 @@ inline void bgc_fp32_dual_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQu bgc_fp32_quaternion_add(&product->dual_part, &dual_part1, &dual_part2); } -inline void bgc_fp64_dual_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_DualQuaternion* left, const BGC_FP64_DualQuaternion* right) +inline void bgc_fp64_dual_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_DualQuaternion* const left, const BGC_FP64_DualQuaternion* const right) { BGC_FP64_Quaternion dual_part1, dual_part2; @@ -530,7 +530,7 @@ inline void bgc_fp64_dual_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQu // =================== Divide =================== // -inline int bgc_fp32_dual_quaternion_divide_by_real_number(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const float divisor) +inline int bgc_fp32_dual_quaternion_divide_by_real_number(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const float divisor) { if (bgc_fp32_is_zero(divisor)) { return BGC_FAILURE; @@ -544,7 +544,7 @@ inline int bgc_fp32_dual_quaternion_divide_by_real_number(BGC_FP32_DualQuaternio return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_divide_by_real_number(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const double divisor) +inline int bgc_fp64_dual_quaternion_divide_by_real_number(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const double divisor) { if (bgc_fp64_is_zero(divisor)) { return BGC_FAILURE; @@ -560,7 +560,7 @@ inline int bgc_fp64_dual_quaternion_divide_by_real_number(BGC_FP64_DualQuaternio // =========== Divide by Dual Number ============ // -inline int bgc_fp32_dual_quaternion_divide_by_dual_number(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_DualNumber* divisor) +inline int bgc_fp32_dual_quaternion_divide_by_dual_number(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_DualNumber* const divisor) { const float square_modulus = divisor->real_part * divisor->real_part; @@ -574,7 +574,7 @@ inline int bgc_fp32_dual_quaternion_divide_by_dual_number(BGC_FP32_DualQuaternio return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_divide_by_dual_number(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_DualNumber* divisor) +inline int bgc_fp64_dual_quaternion_divide_by_dual_number(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_DualNumber* const divisor) { const double square_modulus = divisor->real_part * divisor->real_part; @@ -590,7 +590,7 @@ inline int bgc_fp64_dual_quaternion_divide_by_dual_number(BGC_FP64_DualQuaternio // ====== Divide by Conjugate Dual Number ======= // -inline int bgc_fp32_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_DualNumber* divisor_to_conjugate) +inline int bgc_fp32_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_DualNumber* const divisor_to_conjugate) { const float square_modulus = divisor_to_conjugate->real_part * divisor_to_conjugate->real_part; @@ -604,7 +604,7 @@ inline int bgc_fp32_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP32_Dua return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_DualNumber* divisor_to_conjugate) +inline int bgc_fp64_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_DualNumber* const divisor_to_conjugate) { const double square_modulus = divisor_to_conjugate->real_part * divisor_to_conjugate->real_part; @@ -620,7 +620,7 @@ inline int bgc_fp64_dual_quaternion_divide_by_conjugate_dual_number(BGC_FP64_Dua // ======= Divide by (Regular) Quaternion ======= // -inline int bgc_fp32_dual_quaternion_divide_by_quaternion(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_Quaternion* divisor) +inline int bgc_fp32_dual_quaternion_divide_by_quaternion(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_Quaternion* const divisor) { const float square_magnitude = bgc_fp32_quaternion_get_square_magnitude(divisor); @@ -639,7 +639,7 @@ inline int bgc_fp32_dual_quaternion_divide_by_quaternion(BGC_FP32_DualQuaternion return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_divide_by_quaternion(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_Quaternion* divisor) +inline int bgc_fp64_dual_quaternion_divide_by_quaternion(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_Quaternion* const divisor) { const double square_magnitude = bgc_fp64_quaternion_get_square_magnitude(divisor); @@ -660,7 +660,7 @@ inline int bgc_fp64_dual_quaternion_divide_by_quaternion(BGC_FP64_DualQuaternion // ======= Divide by Conjugate Quaternion ======= // -inline int bgc_fp32_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP32_DualQuaternion* quotient, const BGC_FP32_DualQuaternion* dividend, const BGC_FP32_Quaternion* divisor_to_conjugate) +inline int bgc_fp32_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP32_DualQuaternion* const quotient, const BGC_FP32_DualQuaternion* const dividend, const BGC_FP32_Quaternion* const divisor_to_conjugate) { const float square_magnitude = bgc_fp32_quaternion_get_square_magnitude(divisor_to_conjugate); @@ -679,7 +679,7 @@ inline int bgc_fp32_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP32_Dual return BGC_SUCCESS; } -inline int bgc_fp64_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP64_DualQuaternion* quotient, const BGC_FP64_DualQuaternion* dividend, const BGC_FP64_Quaternion* divisor_to_conjugate) +inline int bgc_fp64_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP64_DualQuaternion* const quotient, const BGC_FP64_DualQuaternion* const dividend, const BGC_FP64_Quaternion* const divisor_to_conjugate) { const double square_magnitude = bgc_fp64_quaternion_get_square_magnitude(divisor_to_conjugate); @@ -700,13 +700,13 @@ inline int bgc_fp64_dual_quaternion_divide_by_conjugate_quaternion(BGC_FP64_Dual // ================ Mean of Two ================= // -inline void bgc_fp32_dual_quaternion_get_mean2(BGC_FP32_DualQuaternion* mean, const BGC_FP32_DualQuaternion* quaternion1, const BGC_FP32_DualQuaternion* quaternion2) +inline void bgc_fp32_dual_quaternion_get_mean2(BGC_FP32_DualQuaternion* const mean, const BGC_FP32_DualQuaternion* const quaternion1, const BGC_FP32_DualQuaternion* const quaternion2) { bgc_fp32_quaternion_get_mean2(&mean->real_part, &quaternion1->real_part, &quaternion2->real_part); bgc_fp32_quaternion_get_mean2(&mean->dual_part, &quaternion1->dual_part, &quaternion2->dual_part); } -inline void bgc_fp64_dual_quaternion_get_mean2(BGC_FP64_DualQuaternion* mean, const BGC_FP64_DualQuaternion* quaternion1, const BGC_FP64_DualQuaternion* quaternion2) +inline void bgc_fp64_dual_quaternion_get_mean2(BGC_FP64_DualQuaternion* const mean, const BGC_FP64_DualQuaternion* const quaternion1, const BGC_FP64_DualQuaternion* const quaternion2) { bgc_fp64_quaternion_get_mean2(&mean->real_part, &quaternion1->real_part, &quaternion2->real_part); bgc_fp64_quaternion_get_mean2(&mean->dual_part, &quaternion1->dual_part, &quaternion2->dual_part); @@ -714,13 +714,13 @@ inline void bgc_fp64_dual_quaternion_get_mean2(BGC_FP64_DualQuaternion* mean, co // =============== Mean of Three ================ // -inline void bgc_fp32_dual_quaternion_get_mean3(BGC_FP32_DualQuaternion* mean, const BGC_FP32_DualQuaternion* quaternion1, const BGC_FP32_DualQuaternion* quaternion2, const BGC_FP32_DualQuaternion* quaternion3) +inline void bgc_fp32_dual_quaternion_get_mean3(BGC_FP32_DualQuaternion* const mean, const BGC_FP32_DualQuaternion* const quaternion1, const BGC_FP32_DualQuaternion* const quaternion2, const BGC_FP32_DualQuaternion* const quaternion3) { bgc_fp32_quaternion_get_mean3(&mean->real_part, &quaternion1->real_part, &quaternion2->real_part, &quaternion3->real_part); bgc_fp32_quaternion_get_mean3(&mean->dual_part, &quaternion1->dual_part, &quaternion2->dual_part, &quaternion3->dual_part); } -inline void bgc_fp64_dual_quaternion_get_mean3(BGC_FP64_DualQuaternion* mean, const BGC_FP64_DualQuaternion* quaternion1, const BGC_FP64_DualQuaternion* quaternion2, const BGC_FP64_DualQuaternion* quaternion3) +inline void bgc_fp64_dual_quaternion_get_mean3(BGC_FP64_DualQuaternion* const mean, const BGC_FP64_DualQuaternion* const quaternion1, const BGC_FP64_DualQuaternion* const quaternion2, const BGC_FP64_DualQuaternion* const quaternion3) { bgc_fp64_quaternion_get_mean3(&mean->real_part, &quaternion1->real_part, &quaternion2->real_part, &quaternion3->real_part); bgc_fp64_quaternion_get_mean3(&mean->dual_part, &quaternion1->dual_part, &quaternion2->dual_part, &quaternion3->dual_part); @@ -728,13 +728,13 @@ inline void bgc_fp64_dual_quaternion_get_mean3(BGC_FP64_DualQuaternion* mean, co // ============ Linear Interpolation ============ // -inline void bgc_fp32_dual_quaternion_interpolate(BGC_FP32_DualQuaternion* interpolation, const BGC_FP32_DualQuaternion* first, const BGC_FP32_DualQuaternion* second, const float phase) +inline void bgc_fp32_dual_quaternion_interpolate(BGC_FP32_DualQuaternion* const interpolation, const BGC_FP32_DualQuaternion* const first, const BGC_FP32_DualQuaternion* const second, const float phase) { bgc_fp32_quaternion_interpolate(&interpolation->real_part, &first->real_part, &second->real_part, phase); bgc_fp32_quaternion_interpolate(&interpolation->dual_part, &first->dual_part, &second->dual_part, phase); } -inline void bgc_fp64_dual_quaternion_interpolate(BGC_FP64_DualQuaternion* interpolation, const BGC_FP64_DualQuaternion* first, const BGC_FP64_DualQuaternion* second, const double phase) +inline void bgc_fp64_dual_quaternion_interpolate(BGC_FP64_DualQuaternion* const interpolation, const BGC_FP64_DualQuaternion* const first, const BGC_FP64_DualQuaternion* const second, const double phase) { bgc_fp64_quaternion_interpolate(&interpolation->real_part, &first->real_part, &second->real_part, phase); bgc_fp64_quaternion_interpolate(&interpolation->dual_part, &first->dual_part, &second->dual_part, phase); diff --git a/basic-geometry/quaternion.c b/basic-geometry/quaternion.c index 464880e..a69dd70 100644 --- a/basic-geometry/quaternion.c +++ b/basic-geometry/quaternion.c @@ -1,147 +1,147 @@ #include #include "./quaternion.h" -extern inline void bgc_fp32_quaternion_reset(BGC_FP32_Quaternion* quaternion); -extern inline void bgc_fp64_quaternion_reset(BGC_FP64_Quaternion* quaternion); +extern inline void bgc_fp32_quaternion_reset(BGC_FP32_Quaternion* const quaternion); +extern inline void bgc_fp64_quaternion_reset(BGC_FP64_Quaternion* const quaternion); -extern inline void bgc_fp32_quaternion_make_unit(BGC_FP32_Quaternion* quaternion); -extern inline void bgc_fp64_quaternion_make_unit(BGC_FP64_Quaternion* quaternion); +extern inline void bgc_fp32_quaternion_make_unit(BGC_FP32_Quaternion* const quaternion); +extern inline void bgc_fp64_quaternion_make_unit(BGC_FP64_Quaternion* const quaternion); -extern inline void bgc_fp32_quaternion_make(BGC_FP32_Quaternion* quaternion, const float s0, const float x1, const float x2, const float x3); -extern inline void bgc_fp64_quaternion_make(BGC_FP64_Quaternion* quaternion, const double s0, const double x1, const double x2, const double x3); +extern inline void bgc_fp32_quaternion_make(BGC_FP32_Quaternion* const quaternion, const float s0, const float x1, const float x2, const float x3); +extern inline void bgc_fp64_quaternion_make(BGC_FP64_Quaternion* const quaternion, const double s0, const double x1, const double x2, const double x3); -extern inline float bgc_fp32_quaternion_get_square_magnitude(const BGC_FP32_Quaternion* quaternion); -extern inline double bgc_fp64_quaternion_get_square_magnitude(const BGC_FP64_Quaternion* quaternion); +extern inline float bgc_fp32_quaternion_get_square_magnitude(const BGC_FP32_Quaternion* const quaternion); +extern inline double bgc_fp64_quaternion_get_square_magnitude(const BGC_FP64_Quaternion* const quaternion); -extern inline float bgc_fp32_quaternion_get_magnitude(const BGC_FP32_Quaternion* quaternion); -extern inline double bgc_fp64_quaternion_get_magnitude(const BGC_FP64_Quaternion* quaternion); +extern inline float bgc_fp32_quaternion_get_magnitude(const BGC_FP32_Quaternion* const quaternion); +extern inline double bgc_fp64_quaternion_get_magnitude(const BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_is_zero(const BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_is_zero(const BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_is_zero(const BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_is_zero(const BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_is_unit(const BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_is_unit(const BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_is_unit(const BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_is_unit(const BGC_FP64_Quaternion* const quaternion); -extern inline void bgc_fp32_quaternion_copy(BGC_FP32_Quaternion* destination, const BGC_FP32_Quaternion* source); -extern inline void bgc_fp64_quaternion_copy(BGC_FP64_Quaternion* destination, const BGC_FP64_Quaternion* source); +extern inline void bgc_fp32_quaternion_copy(BGC_FP32_Quaternion* const destination, const BGC_FP32_Quaternion* const source); +extern inline void bgc_fp64_quaternion_copy(BGC_FP64_Quaternion* const destination, const BGC_FP64_Quaternion* const source); -extern inline void bgc_fp32_quaternion_swap(BGC_FP32_Quaternion* quarternion1, BGC_FP32_Quaternion* quarternion2); -extern inline void bgc_fp64_quaternion_swap(BGC_FP64_Quaternion* quarternion1, BGC_FP64_Quaternion* quarternion2); +extern inline void bgc_fp32_quaternion_swap(BGC_FP32_Quaternion* const quarternion1, BGC_FP32_Quaternion* const quarternion2); +extern inline void bgc_fp64_quaternion_swap(BGC_FP64_Quaternion* const quarternion1, BGC_FP64_Quaternion* const quarternion2); -extern inline void bgc_fp32_quaternion_convert_to_fp64(BGC_FP64_Quaternion* destination, const BGC_FP32_Quaternion* source); -extern inline void bgc_fp64_quaternion_convert_to_fp32(BGC_FP32_Quaternion* destination, const BGC_FP64_Quaternion* source); +extern inline void bgc_fp32_quaternion_convert_to_fp64(BGC_FP64_Quaternion* const destination, const BGC_FP32_Quaternion* const source); +extern inline void bgc_fp64_quaternion_convert_to_fp32(BGC_FP32_Quaternion* const destination, const BGC_FP64_Quaternion* const source); -extern inline void bgc_fp32_quaternion_add(BGC_FP32_Quaternion* sum, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2); -extern inline void bgc_fp64_quaternion_add(BGC_FP64_Quaternion* sum, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2); +extern inline void bgc_fp32_quaternion_add(BGC_FP32_Quaternion* const sum, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2); +extern inline void bgc_fp64_quaternion_add(BGC_FP64_Quaternion* const sum, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2); -extern inline void bgc_fp32_quaternion_add_scaled(BGC_FP32_Quaternion* sum, const BGC_FP32_Quaternion* basic_quaternion, const BGC_FP32_Quaternion* scalable_quaternion, const float scale); -extern inline void bgc_fp64_quaternion_add_scaled(BGC_FP64_Quaternion* sum, const BGC_FP64_Quaternion* basic_quaternion, const BGC_FP64_Quaternion* scalable_quaternion, const double scale); +extern inline void bgc_fp32_quaternion_add_scaled(BGC_FP32_Quaternion* const sum, const BGC_FP32_Quaternion* const basic_quaternion, const BGC_FP32_Quaternion* const scalable_quaternion, const float scale); +extern inline void bgc_fp64_quaternion_add_scaled(BGC_FP64_Quaternion* const sum, const BGC_FP64_Quaternion* const basic_quaternion, const BGC_FP64_Quaternion* const scalable_quaternion, const double scale); -extern inline void bgc_fp32_quaternion_subtract(BGC_FP32_Quaternion* difference, const BGC_FP32_Quaternion* minuend, const BGC_FP32_Quaternion* subtrahend); -extern inline void bgc_fp64_quaternion_subtract(BGC_FP64_Quaternion* difference, const BGC_FP64_Quaternion* minuend, const BGC_FP64_Quaternion* subtrahend); +extern inline void bgc_fp32_quaternion_subtract(BGC_FP32_Quaternion* const difference, const BGC_FP32_Quaternion* const minuend, const BGC_FP32_Quaternion* const subtrahend); +extern inline void bgc_fp64_quaternion_subtract(BGC_FP64_Quaternion* const difference, const BGC_FP64_Quaternion* const minuend, const BGC_FP64_Quaternion* const subtrahend); -extern inline void bgc_fp32_quaternion_subtract_scaled(BGC_FP32_Quaternion* difference, const BGC_FP32_Quaternion* basic_quaternion, const BGC_FP32_Quaternion* scalable_quaternion, const float scale); -extern inline void bgc_fp64_quaternion_subtract_scaled(BGC_FP64_Quaternion* difference, const BGC_FP64_Quaternion* basic_quaternion, const BGC_FP64_Quaternion* scalable_quaternion, const double scale); +extern inline void bgc_fp32_quaternion_subtract_scaled(BGC_FP32_Quaternion* const difference, const BGC_FP32_Quaternion* const basic_quaternion, const BGC_FP32_Quaternion* const scalable_quaternion, const float scale); +extern inline void bgc_fp64_quaternion_subtract_scaled(BGC_FP64_Quaternion* const difference, const BGC_FP64_Quaternion* const basic_quaternion, const BGC_FP64_Quaternion* const scalable_quaternion, const double scale); -extern inline void bgc_fp32_quaternion_multiply_by_real_number(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* multiplicand, const float multiplier); -extern inline void bgc_fp64_quaternion_multiply_by_real_number(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* multiplicand, const double multiplier); +extern inline void bgc_fp32_quaternion_multiply_by_real_number(BGC_FP32_Quaternion* const product, const BGC_FP32_Quaternion* const multiplicand, const float multiplier); +extern inline void bgc_fp64_quaternion_multiply_by_real_number(BGC_FP64_Quaternion* const product, const BGC_FP64_Quaternion* const multiplicand, const double multiplier); -extern inline void bgc_fp32_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right); -extern inline void bgc_fp64_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right); +extern inline void bgc_fp32_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right); +extern inline void bgc_fp64_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right); -extern inline void bgc_fp32_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_Quaternion* multiplicand, const BGC_FP32_DualNumber* multiplier); -extern inline void bgc_fp64_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_Quaternion* multiplicand, const BGC_FP64_DualNumber* multiplier); +extern inline void bgc_fp32_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_Quaternion* const multiplicand, const BGC_FP32_DualNumber* const multiplier); +extern inline void bgc_fp64_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_Quaternion* const multiplicand, const BGC_FP64_DualNumber* const multiplier); -extern inline void bgc_fp32_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_Quaternion* left, const BGC_FP32_DualQuaternion* right); -extern inline void bgc_fp64_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_Quaternion* left, const BGC_FP64_DualQuaternion* right); +extern inline void bgc_fp32_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_DualQuaternion* const right); +extern inline void bgc_fp64_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_DualQuaternion* const right); -extern inline void bgc_fp32_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right); -extern inline void bgc_fp64_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right); +extern inline void bgc_fp32_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right); +extern inline void bgc_fp64_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right); -extern inline void _bgc_fp32_restrict_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* restrict product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right); -extern inline void _bgc_fp64_restrict_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* restrict product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right); +extern inline void _bgc_fp32_restrict_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* restrict const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right); +extern inline void _bgc_fp64_restrict_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* restrict const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right); -extern inline void _bgc_fp32_restrict_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* restrict product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right); -extern inline void _bgc_fp64_restrict_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* restrict product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right); +extern inline void _bgc_fp32_restrict_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* restrict const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right); +extern inline void _bgc_fp64_restrict_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* restrict const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right); -extern inline int bgc_fp32_quaternion_divide_by_real_number(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* dividend, const float divisor); -extern inline int bgc_fp64_quaternion_divide_by_real_number(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* dividend, const double divisor); +extern inline int bgc_fp32_quaternion_divide_by_real_number(BGC_FP32_Quaternion* const quotient, const BGC_FP32_Quaternion* const dividend, const float divisor); +extern inline int bgc_fp64_quaternion_divide_by_real_number(BGC_FP64_Quaternion* const quotient, const BGC_FP64_Quaternion* const dividend, const double divisor); -extern inline int bgc_fp32_quaternion_divide_by_quaternion(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* divident, const BGC_FP32_Quaternion* divisor); -extern inline int bgc_fp64_quaternion_divide_by_quaternion(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* divident, const BGC_FP64_Quaternion* divisor); +extern inline int bgc_fp32_quaternion_divide_by_quaternion(BGC_FP32_Quaternion* const quotient, const BGC_FP32_Quaternion* const divident, const BGC_FP32_Quaternion* const divisor); +extern inline int bgc_fp64_quaternion_divide_by_quaternion(BGC_FP64_Quaternion* const quotient, const BGC_FP64_Quaternion* const divident, const BGC_FP64_Quaternion* const divisor); -extern inline int bgc_fp32_quaternion_divide_by_conjugate(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* divident, const BGC_FP32_Quaternion* divisor_to_conjugate); -extern inline int bgc_fp64_quaternion_divide_by_conjugate(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* divident, const BGC_FP64_Quaternion* divisor_to_conjugate); +extern inline int bgc_fp32_quaternion_divide_by_conjugate(BGC_FP32_Quaternion* const quotient, const BGC_FP32_Quaternion* const divident, const BGC_FP32_Quaternion* const divisor_to_conjugate); +extern inline int bgc_fp64_quaternion_divide_by_conjugate(BGC_FP64_Quaternion* const quotient, const BGC_FP64_Quaternion* const divident, const BGC_FP64_Quaternion* const divisor_to_conjugate); -extern inline void bgc_fp32_quaternion_get_mean2(BGC_FP32_Quaternion* mean, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2); -extern inline void bgc_fp64_quaternion_get_mean2(BGC_FP64_Quaternion* mean, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2); +extern inline void bgc_fp32_quaternion_get_mean2(BGC_FP32_Quaternion* const mean, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2); +extern inline void bgc_fp64_quaternion_get_mean2(BGC_FP64_Quaternion* const mean, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2); -extern inline void bgc_fp32_quaternion_get_mean3(BGC_FP32_Quaternion* mean, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2, const BGC_FP32_Quaternion* quaternion3); -extern inline void bgc_fp64_quaternion_get_mean3(BGC_FP64_Quaternion* mean, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2, const BGC_FP64_Quaternion* quaternion3); +extern inline void bgc_fp32_quaternion_get_mean3(BGC_FP32_Quaternion* const mean, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2, const BGC_FP32_Quaternion* const quaternion3); +extern inline void bgc_fp64_quaternion_get_mean3(BGC_FP64_Quaternion* const mean, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2, const BGC_FP64_Quaternion* const quaternion3); -extern inline void bgc_fp32_quaternion_interpolate(BGC_FP32_Quaternion* interpolation, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2, const float phase); -extern inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* interpolation, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2, const double phase); +extern inline void bgc_fp32_quaternion_interpolate(BGC_FP32_Quaternion* const interpolation, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2, const float phase); +extern inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* const interpolation, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2, const double phase); -extern inline float bgc_fp32_quaternion_get_dot_product(const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2); -extern inline double bgc_fp64_quaternion_get_dot_product(const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2); +extern inline float bgc_fp32_quaternion_get_dot_product(const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2); +extern inline double bgc_fp64_quaternion_get_dot_product(const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2); -extern inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* quaternion); -extern inline void bgc_fp64_quaternion_conjugate(BGC_FP64_Quaternion* quaternion); +extern inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* const quaternion); +extern inline void bgc_fp64_quaternion_conjugate(BGC_FP64_Quaternion* const quaternion); -extern inline void bgc_fp32_quaternion_get_conjugate(BGC_FP32_Quaternion* conjugate, const BGC_FP32_Quaternion* quaternion); -extern inline void bgc_fp64_quaternion_get_conjugate(BGC_FP64_Quaternion* conjugate, const BGC_FP64_Quaternion* quaternion); +extern inline void bgc_fp32_quaternion_get_conjugate(BGC_FP32_Quaternion* const conjugate, const BGC_FP32_Quaternion* const quaternion); +extern inline void bgc_fp64_quaternion_get_conjugate(BGC_FP64_Quaternion* const conjugate, const BGC_FP64_Quaternion* const quaternion); -extern inline void bgc_fp32_quaternion_revert(BGC_FP32_Quaternion* quaternion); -extern inline void bgc_fp64_quaternion_revert(BGC_FP64_Quaternion* quaternion); +extern inline void bgc_fp32_quaternion_revert(BGC_FP32_Quaternion* const quaternion); +extern inline void bgc_fp64_quaternion_revert(BGC_FP64_Quaternion* const quaternion); -extern inline void bgc_fp32_quaternion_get_reverse(BGC_FP32_Quaternion* reverse, const BGC_FP32_Quaternion* quaternion); -extern inline void bgc_fp64_quaternion_get_reverse(BGC_FP64_Quaternion* reverse, const BGC_FP64_Quaternion* quaternion); +extern inline void bgc_fp32_quaternion_get_reverse(BGC_FP32_Quaternion* const reverse, const BGC_FP32_Quaternion* const quaternion); +extern inline void bgc_fp64_quaternion_get_reverse(BGC_FP64_Quaternion* const reverse, const BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_invert(BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_invert(BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_invert(BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_invert(BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_get_inverse(BGC_FP32_Quaternion* inverse, const BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_get_inverse(BGC_FP64_Quaternion* inverse, const BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_get_inverse(BGC_FP32_Quaternion* const inverse, const BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_get_inverse(BGC_FP64_Quaternion* const inverse, const BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_normalize(BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_normalize(BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_normalize(BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_normalize(BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_get_normalized(BGC_FP32_Quaternion* normalized, const BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_get_normalized(BGC_FP64_Quaternion* normalized, const BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_get_normalized(BGC_FP32_Quaternion* const normalized, const BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_get_normalized(BGC_FP64_Quaternion* const normalized, const BGC_FP64_Quaternion* const quaternion); -extern inline void _bgc_fp32_versor_turn_vector(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector); -extern inline void _bgc_fp64_versor_turn_vector(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector); +extern inline void _bgc_fp32_versor_turn_vector(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector); +extern inline void _bgc_fp64_versor_turn_vector(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector); -extern inline void _bgc_fp32_versor_turn_vector_back(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector); -extern inline void _bgc_fp64_versor_turn_vector_back(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector); +extern inline void _bgc_fp32_versor_turn_vector_back(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector); +extern inline void _bgc_fp64_versor_turn_vector_back(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector); -extern inline int bgc_fp32_quaternion_turn_vector(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector); -extern inline int bgc_fp64_quaternion_turn_vector(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector); +extern inline int bgc_fp32_quaternion_turn_vector(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector); +extern inline int bgc_fp64_quaternion_turn_vector(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector); -extern inline int bgc_fp32_quaternion_turn_vector_back(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector); -extern inline int bgc_fp64_quaternion_turn_vector_back(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector); +extern inline int bgc_fp32_quaternion_turn_vector_back(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector); +extern inline int bgc_fp64_quaternion_turn_vector_back(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector); -extern inline void _bgc_fp32_versor_get_rotation_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_Quaternion* versor); -extern inline void _bgc_fp64_versor_get_rotation_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_Quaternion* versor); +extern inline void _bgc_fp32_versor_get_rotation_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_Quaternion* const versor); +extern inline void _bgc_fp64_versor_get_rotation_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_Quaternion* const versor); -extern inline void _bgc_fp32_versor_get_reverse_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_Quaternion* versor); -extern inline void _bgc_fp64_versor_get_reverse_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_Quaternion* versor); +extern inline void _bgc_fp32_versor_get_reverse_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_Quaternion* const versor); +extern inline void _bgc_fp64_versor_get_reverse_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_Quaternion* const versor); -extern inline int bgc_fp32_quaternion_get_rotation_matrix(BGC_FP32_Matrix3x3* rotation, const BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_get_rotation_matrix(BGC_FP64_Matrix3x3* rotation, const BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_get_rotation_matrix(BGC_FP32_Matrix3x3* const rotation, const BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_get_rotation_matrix(BGC_FP64_Matrix3x3* const rotation, const BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_get_reverse_matrix(BGC_FP32_Matrix3x3* reverse, const BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_get_reverse_matrix(BGC_FP64_Matrix3x3* reverse, const BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_get_reverse_matrix(BGC_FP32_Matrix3x3* const reverse, const BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_get_reverse_matrix(BGC_FP64_Matrix3x3* const reverse, const BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_get_both_matrices(BGC_FP32_Matrix3x3* rotation, BGC_FP32_Matrix3x3* reverse, const BGC_FP32_Quaternion* quaternion); -extern inline int bgc_fp64_quaternion_get_both_matrices(BGC_FP64_Matrix3x3* rotation, BGC_FP64_Matrix3x3* reverse, const BGC_FP64_Quaternion* quaternion); +extern inline int bgc_fp32_quaternion_get_both_matrices(BGC_FP32_Matrix3x3* const rotation, BGC_FP32_Matrix3x3* const reverse, const BGC_FP32_Quaternion* const quaternion); +extern inline int bgc_fp64_quaternion_get_both_matrices(BGC_FP64_Matrix3x3* const rotation, BGC_FP64_Matrix3x3* const reverse, const BGC_FP64_Quaternion* const quaternion); -extern inline int bgc_fp32_quaternion_are_close(const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2); -extern inline int bgc_fp64_quaternion_are_close(const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2); +extern inline int bgc_fp32_quaternion_are_close(const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2); +extern inline int bgc_fp64_quaternion_are_close(const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2); // =============== Get Exponation =============== // -int bgc_fp32_quaternion_get_power(BGC_FP32_Quaternion* power, const BGC_FP32_Quaternion* base, const float exponent) +int bgc_fp32_quaternion_get_power(BGC_FP32_Quaternion* const power, const BGC_FP32_Quaternion* const base, const float exponent) { const float s0s0 = base->s0 * base->s0; const float x1x1 = base->x1 * base->x1; @@ -182,7 +182,7 @@ int bgc_fp32_quaternion_get_power(BGC_FP32_Quaternion* power, const BGC_FP32_Qua return BGC_SUCCESS; } -int bgc_fp64_quaternion_get_power(BGC_FP64_Quaternion* power, const BGC_FP64_Quaternion* base, const double exponent) +int bgc_fp64_quaternion_get_power(BGC_FP64_Quaternion* const power, const BGC_FP64_Quaternion* const base, const double exponent) { const double s0s0 = base->s0 * base->s0; const double x1x1 = base->x1 * base->x1; diff --git a/basic-geometry/quaternion.h b/basic-geometry/quaternion.h index 4fec0f8..b7f3481 100644 --- a/basic-geometry/quaternion.h +++ b/basic-geometry/quaternion.h @@ -10,7 +10,7 @@ // ==================== Reset =================== // -inline void bgc_fp32_quaternion_reset(BGC_FP32_Quaternion* quaternion) +inline void bgc_fp32_quaternion_reset(BGC_FP32_Quaternion* const quaternion) { quaternion->s0 = 0.0f; quaternion->x1 = 0.0f; @@ -18,7 +18,7 @@ inline void bgc_fp32_quaternion_reset(BGC_FP32_Quaternion* quaternion) quaternion->x3 = 0.0f; } -inline void bgc_fp64_quaternion_reset(BGC_FP64_Quaternion* quaternion) +inline void bgc_fp64_quaternion_reset(BGC_FP64_Quaternion* const quaternion) { quaternion->s0 = 0.0; quaternion->x1 = 0.0; @@ -28,7 +28,7 @@ inline void bgc_fp64_quaternion_reset(BGC_FP64_Quaternion* quaternion) // ================= Make Unit ================== // -inline void bgc_fp32_quaternion_make_unit(BGC_FP32_Quaternion* quaternion) +inline void bgc_fp32_quaternion_make_unit(BGC_FP32_Quaternion* const quaternion) { quaternion->s0 = 1.0f; quaternion->x1 = 0.0f; @@ -36,7 +36,7 @@ inline void bgc_fp32_quaternion_make_unit(BGC_FP32_Quaternion* quaternion) quaternion->x3 = 0.0f; } -inline void bgc_fp64_quaternion_make_unit(BGC_FP64_Quaternion* quaternion) +inline void bgc_fp64_quaternion_make_unit(BGC_FP64_Quaternion* const quaternion) { quaternion->s0 = 1.0; quaternion->x1 = 0.0; @@ -46,7 +46,7 @@ inline void bgc_fp64_quaternion_make_unit(BGC_FP64_Quaternion* quaternion) // ==================== Set ===================== // -inline void bgc_fp32_quaternion_make(BGC_FP32_Quaternion* quaternion, const float s0, const float x1, const float x2, const float x3) +inline void bgc_fp32_quaternion_make(BGC_FP32_Quaternion* const quaternion, const float s0, const float x1, const float x2, const float x3) { quaternion->s0 = s0; quaternion->x1 = x1; @@ -54,7 +54,7 @@ inline void bgc_fp32_quaternion_make(BGC_FP32_Quaternion* quaternion, const floa quaternion->x3 = x3; } -inline void bgc_fp64_quaternion_make(BGC_FP64_Quaternion* quaternion, const double s0, const double x1, const double x2, const double x3) +inline void bgc_fp64_quaternion_make(BGC_FP64_Quaternion* const quaternion, const double s0, const double x1, const double x2, const double x3) { quaternion->s0 = s0; quaternion->x1 = x1; @@ -64,55 +64,55 @@ inline void bgc_fp64_quaternion_make(BGC_FP64_Quaternion* quaternion, const doub // ============= Get Square Modulus ============= // -inline float bgc_fp32_quaternion_get_square_magnitude(const BGC_FP32_Quaternion* quaternion) +inline float bgc_fp32_quaternion_get_square_magnitude(const BGC_FP32_Quaternion* const quaternion) { return (quaternion->s0 * quaternion->s0 + quaternion->x1 * quaternion->x1) + (quaternion->x2 * quaternion->x2 + quaternion->x3 * quaternion->x3); } -inline double bgc_fp64_quaternion_get_square_magnitude(const BGC_FP64_Quaternion* quaternion) +inline double bgc_fp64_quaternion_get_square_magnitude(const BGC_FP64_Quaternion* const quaternion) { return (quaternion->s0 * quaternion->s0 + quaternion->x1 * quaternion->x1) + (quaternion->x2 * quaternion->x2 + quaternion->x3 * quaternion->x3); } // ================ Get Modulus ================= // -inline float bgc_fp32_quaternion_get_magnitude(const BGC_FP32_Quaternion* quaternion) +inline float bgc_fp32_quaternion_get_magnitude(const BGC_FP32_Quaternion* const quaternion) { return sqrtf(bgc_fp32_quaternion_get_square_magnitude(quaternion)); } -inline double bgc_fp64_quaternion_get_magnitude(const BGC_FP64_Quaternion* quaternion) +inline double bgc_fp64_quaternion_get_magnitude(const BGC_FP64_Quaternion* const quaternion) { return sqrt(bgc_fp64_quaternion_get_square_magnitude(quaternion)); } // ================== Is Zero =================== // -inline int bgc_fp32_quaternion_is_zero(const BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_is_zero(const BGC_FP32_Quaternion* const quaternion) { return bgc_fp32_quaternion_get_square_magnitude(quaternion) <= BGC_FP32_SQUARE_EPSILON; } -inline int bgc_fp64_quaternion_is_zero(const BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_is_zero(const BGC_FP64_Quaternion* const quaternion) { return bgc_fp64_quaternion_get_square_magnitude(quaternion) <= BGC_FP64_SQUARE_EPSILON; } // ================== Is Unit =================== // -inline int bgc_fp32_quaternion_is_unit(const BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_is_unit(const BGC_FP32_Quaternion* const quaternion) { return bgc_fp32_is_square_unit(bgc_fp32_quaternion_get_square_magnitude(quaternion)); } -inline int bgc_fp64_quaternion_is_unit(const BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_is_unit(const BGC_FP64_Quaternion* const quaternion) { return bgc_fp64_is_square_unit(bgc_fp64_quaternion_get_square_magnitude(quaternion)); } // ==================== Copy ==================== // -inline void bgc_fp32_quaternion_copy(BGC_FP32_Quaternion* destination, const BGC_FP32_Quaternion* source) +inline void bgc_fp32_quaternion_copy(BGC_FP32_Quaternion* const destination, const BGC_FP32_Quaternion* const source) { destination->s0 = source->s0; destination->x1 = source->x1; @@ -120,7 +120,7 @@ inline void bgc_fp32_quaternion_copy(BGC_FP32_Quaternion* destination, const BGC destination->x3 = source->x3; } -inline void bgc_fp64_quaternion_copy(BGC_FP64_Quaternion* destination, const BGC_FP64_Quaternion* source) +inline void bgc_fp64_quaternion_copy(BGC_FP64_Quaternion* const destination, const BGC_FP64_Quaternion* const source) { destination->s0 = source->s0; destination->x1 = source->x1; @@ -130,7 +130,7 @@ inline void bgc_fp64_quaternion_copy(BGC_FP64_Quaternion* destination, const BGC // ==================== Swap ==================== // -inline void bgc_fp32_quaternion_swap(BGC_FP32_Quaternion* quarternion1, BGC_FP32_Quaternion* quarternion2) +inline void bgc_fp32_quaternion_swap(BGC_FP32_Quaternion* const quarternion1, BGC_FP32_Quaternion* const quarternion2) { const float s0 = quarternion2->s0; const float x1 = quarternion2->x1; @@ -148,7 +148,7 @@ inline void bgc_fp32_quaternion_swap(BGC_FP32_Quaternion* quarternion1, BGC_FP32 quarternion1->x3 = x3; } -inline void bgc_fp64_quaternion_swap(BGC_FP64_Quaternion* quarternion1, BGC_FP64_Quaternion* quarternion2) +inline void bgc_fp64_quaternion_swap(BGC_FP64_Quaternion* const quarternion1, BGC_FP64_Quaternion* const quarternion2) { const double s0 = quarternion2->s0; const double x1 = quarternion2->x1; @@ -168,7 +168,7 @@ inline void bgc_fp64_quaternion_swap(BGC_FP64_Quaternion* quarternion1, BGC_FP64 // ================== Convert =================== // -inline void bgc_fp32_quaternion_convert_to_fp64(BGC_FP64_Quaternion* destination, const BGC_FP32_Quaternion* source) +inline void bgc_fp32_quaternion_convert_to_fp64(BGC_FP64_Quaternion* const destination, const BGC_FP32_Quaternion* const source) { destination->s0 = source->s0; destination->x1 = source->x1; @@ -176,7 +176,7 @@ inline void bgc_fp32_quaternion_convert_to_fp64(BGC_FP64_Quaternion* destination destination->x3 = source->x3; } -inline void bgc_fp64_quaternion_convert_to_fp32(BGC_FP32_Quaternion* destination, const BGC_FP64_Quaternion* source) +inline void bgc_fp64_quaternion_convert_to_fp32(BGC_FP32_Quaternion* const destination, const BGC_FP64_Quaternion* const source) { destination->s0 = (float)source->s0; destination->x1 = (float)source->x1; @@ -186,7 +186,7 @@ inline void bgc_fp64_quaternion_convert_to_fp32(BGC_FP32_Quaternion* destination // ==================== Add ===================== // -inline void bgc_fp32_quaternion_add(BGC_FP32_Quaternion* sum, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2) +inline void bgc_fp32_quaternion_add(BGC_FP32_Quaternion* const sum, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2) { sum->s0 = quaternion1->s0 + quaternion2->s0; sum->x1 = quaternion1->x1 + quaternion2->x1; @@ -194,7 +194,7 @@ inline void bgc_fp32_quaternion_add(BGC_FP32_Quaternion* sum, const BGC_FP32_Qua sum->x3 = quaternion1->x3 + quaternion2->x3; } -inline void bgc_fp64_quaternion_add(BGC_FP64_Quaternion* sum, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2) +inline void bgc_fp64_quaternion_add(BGC_FP64_Quaternion* const sum, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2) { sum->s0 = quaternion1->s0 + quaternion2->s0; sum->x1 = quaternion1->x1 + quaternion2->x1; @@ -204,7 +204,7 @@ inline void bgc_fp64_quaternion_add(BGC_FP64_Quaternion* sum, const BGC_FP64_Qua // ================= Add Scaled ================= // -inline void bgc_fp32_quaternion_add_scaled(BGC_FP32_Quaternion* sum, const BGC_FP32_Quaternion* basic_quaternion, const BGC_FP32_Quaternion* scalable_quaternion, const float scale) +inline void bgc_fp32_quaternion_add_scaled(BGC_FP32_Quaternion* const sum, const BGC_FP32_Quaternion* const basic_quaternion, const BGC_FP32_Quaternion* const scalable_quaternion, const float scale) { sum->s0 = basic_quaternion->s0 + scalable_quaternion->s0 * scale; sum->x1 = basic_quaternion->x1 + scalable_quaternion->x1 * scale; @@ -212,7 +212,7 @@ inline void bgc_fp32_quaternion_add_scaled(BGC_FP32_Quaternion* sum, const BGC_F sum->x3 = basic_quaternion->x3 + scalable_quaternion->x3 * scale; } -inline void bgc_fp64_quaternion_add_scaled(BGC_FP64_Quaternion* sum, const BGC_FP64_Quaternion* basic_quaternion, const BGC_FP64_Quaternion* scalable_quaternion, const double scale) +inline void bgc_fp64_quaternion_add_scaled(BGC_FP64_Quaternion* const sum, const BGC_FP64_Quaternion* const basic_quaternion, const BGC_FP64_Quaternion* const scalable_quaternion, const double scale) { sum->s0 = basic_quaternion->s0 + scalable_quaternion->s0 * scale; sum->x1 = basic_quaternion->x1 + scalable_quaternion->x1 * scale; @@ -222,7 +222,7 @@ inline void bgc_fp64_quaternion_add_scaled(BGC_FP64_Quaternion* sum, const BGC_F // ================== Subtract ================== // -inline void bgc_fp32_quaternion_subtract(BGC_FP32_Quaternion* difference, const BGC_FP32_Quaternion* minuend, const BGC_FP32_Quaternion* subtrahend) +inline void bgc_fp32_quaternion_subtract(BGC_FP32_Quaternion* const difference, const BGC_FP32_Quaternion* const minuend, const BGC_FP32_Quaternion* const subtrahend) { difference->s0 = minuend->s0 - subtrahend->s0; difference->x1 = minuend->x1 - subtrahend->x1; @@ -230,7 +230,7 @@ inline void bgc_fp32_quaternion_subtract(BGC_FP32_Quaternion* difference, const difference->x3 = minuend->x3 - subtrahend->x3; } -inline void bgc_fp64_quaternion_subtract(BGC_FP64_Quaternion* difference, const BGC_FP64_Quaternion* minuend, const BGC_FP64_Quaternion* subtrahend) +inline void bgc_fp64_quaternion_subtract(BGC_FP64_Quaternion* const difference, const BGC_FP64_Quaternion* const minuend, const BGC_FP64_Quaternion* const subtrahend) { difference->s0 = minuend->s0 - subtrahend->s0; difference->x1 = minuend->x1 - subtrahend->x1; @@ -240,7 +240,7 @@ inline void bgc_fp64_quaternion_subtract(BGC_FP64_Quaternion* difference, const // ============== Subtract Scaled =============== // -inline void bgc_fp32_quaternion_subtract_scaled(BGC_FP32_Quaternion* difference, const BGC_FP32_Quaternion* basic_quaternion, const BGC_FP32_Quaternion* scalable_quaternion, const float scale) +inline void bgc_fp32_quaternion_subtract_scaled(BGC_FP32_Quaternion* const difference, const BGC_FP32_Quaternion* const basic_quaternion, const BGC_FP32_Quaternion* const scalable_quaternion, const float scale) { difference->s0 = basic_quaternion->s0 - scalable_quaternion->s0 * scale; difference->x1 = basic_quaternion->x1 - scalable_quaternion->x1 * scale; @@ -248,7 +248,7 @@ inline void bgc_fp32_quaternion_subtract_scaled(BGC_FP32_Quaternion* difference, difference->x3 = basic_quaternion->x3 - scalable_quaternion->x3 * scale; } -inline void bgc_fp64_quaternion_subtract_scaled(BGC_FP64_Quaternion* difference, const BGC_FP64_Quaternion* basic_quaternion, const BGC_FP64_Quaternion* scalable_quaternion, const double scale) +inline void bgc_fp64_quaternion_subtract_scaled(BGC_FP64_Quaternion* const difference, const BGC_FP64_Quaternion* const basic_quaternion, const BGC_FP64_Quaternion* const scalable_quaternion, const double scale) { difference->s0 = basic_quaternion->s0 - scalable_quaternion->s0 * scale; difference->x1 = basic_quaternion->x1 - scalable_quaternion->x1 * scale; @@ -258,7 +258,7 @@ inline void bgc_fp64_quaternion_subtract_scaled(BGC_FP64_Quaternion* difference, // ============= Multiply By Number ============= // -inline void bgc_fp32_quaternion_multiply_by_real_number(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* multiplicand, const float multiplier) +inline void bgc_fp32_quaternion_multiply_by_real_number(BGC_FP32_Quaternion* const product, const BGC_FP32_Quaternion* const multiplicand, const float multiplier) { product->s0 = multiplicand->s0 * multiplier; product->x1 = multiplicand->x1 * multiplier; @@ -266,7 +266,7 @@ inline void bgc_fp32_quaternion_multiply_by_real_number(BGC_FP32_Quaternion* pro product->x3 = multiplicand->x3 * multiplier; } -inline void bgc_fp64_quaternion_multiply_by_real_number(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* multiplicand, const double multiplier) +inline void bgc_fp64_quaternion_multiply_by_real_number(BGC_FP64_Quaternion* const product, const BGC_FP64_Quaternion* const multiplicand, const double multiplier) { product->s0 = multiplicand->s0 * multiplier; product->x1 = multiplicand->x1 * multiplier; @@ -276,7 +276,7 @@ inline void bgc_fp64_quaternion_multiply_by_real_number(BGC_FP64_Quaternion* pro // =========== Multiply By Quaternion =========== // -inline void bgc_fp32_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right) +inline void bgc_fp32_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right) { const float s0 = (left->s0 * right->s0 - left->x1 * right->x1) - (left->x2 * right->x2 + left->x3 * right->x3); const float x1 = (left->x1 * right->s0 + left->s0 * right->x1) - (left->x3 * right->x2 - left->x2 * right->x3); @@ -289,7 +289,7 @@ inline void bgc_fp32_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* prod product->x3 = x3; } -inline void bgc_fp64_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right) +inline void bgc_fp64_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right) { const double s0 = (left->s0 * right->s0 - left->x1 * right->x1) - (left->x2 * right->x2 + left->x3 * right->x3); const double x1 = (left->x1 * right->s0 + left->s0 * right->x1) - (left->x3 * right->x2 - left->x2 * right->x3); @@ -304,7 +304,7 @@ inline void bgc_fp64_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* prod // ====== Multiply By Conjugate Quaternion ====== // -inline void bgc_fp32_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right) +inline void bgc_fp32_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right) { const float s0 = (left->s0 * right->s0 + left->x1 * right->x1) + (left->x2 * right->x2 + left->x3 * right->x3); const float x1 = (left->x1 * right->s0 + left->x3 * right->x2) - (left->s0 * right->x1 + left->x2 * right->x3); @@ -317,7 +317,7 @@ inline void bgc_fp32_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* produ product->x3 = x3; } -inline void bgc_fp64_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right) +inline void bgc_fp64_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right) { const double s0 = (left->s0 * right->s0 + left->x1 * right->x1) + (left->x2 * right->x2 + left->x3 * right->x3); const double x1 = (left->x1 * right->s0 + left->x3 * right->x2) - (left->s0 * right->x1 + left->x2 * right->x3); @@ -332,7 +332,7 @@ inline void bgc_fp64_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* produ // ====== Restrict Multiply By Quaternion ======= // -inline void _bgc_fp32_restrict_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* restrict product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right) +inline void _bgc_fp32_restrict_quaternion_multiply_by_quaternion(BGC_FP32_Quaternion* restrict const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right) { product->s0 = (left->s0 * right->s0 - left->x1 * right->x1) - (left->x2 * right->x2 + left->x3 * right->x3); product->x1 = (left->x1 * right->s0 + left->s0 * right->x1) - (left->x3 * right->x2 - left->x2 * right->x3); @@ -340,7 +340,7 @@ inline void _bgc_fp32_restrict_quaternion_multiply_by_quaternion(BGC_FP32_Quater product->x3 = (left->x3 * right->s0 + left->s0 * right->x3) - (left->x2 * right->x1 - left->x1 * right->x2); } -inline void _bgc_fp64_restrict_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* restrict product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right) +inline void _bgc_fp64_restrict_quaternion_multiply_by_quaternion(BGC_FP64_Quaternion* restrict const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right) { product->s0 = (left->s0 * right->s0 - left->x1 * right->x1) - (left->x2 * right->x2 + left->x3 * right->x3); product->x1 = (left->x1 * right->s0 + left->s0 * right->x1) - (left->x3 * right->x2 - left->x2 * right->x3); @@ -350,7 +350,7 @@ inline void _bgc_fp64_restrict_quaternion_multiply_by_quaternion(BGC_FP64_Quater // = Restrict Multiply By Conjugate Quaternion == // -inline void _bgc_fp32_restrict_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* restrict product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right) +inline void _bgc_fp32_restrict_quaternion_multiply_by_conjugate(BGC_FP32_Quaternion* restrict const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_Quaternion* const right) { product->s0 = (left->s0 * right->s0 + left->x1 * right->x1) + (left->x2 * right->x2 + left->x3 * right->x3); product->x1 = (left->x1 * right->s0 + left->x3 * right->x2) - (left->s0 * right->x1 + left->x2 * right->x3); @@ -358,7 +358,7 @@ inline void _bgc_fp32_restrict_quaternion_multiply_by_conjugate(BGC_FP32_Quatern product->x3 = (left->x3 * right->s0 + left->x2 * right->x1) - (left->s0 * right->x3 + left->x1 * right->x2); } -inline void _bgc_fp64_restrict_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* restrict product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right) +inline void _bgc_fp64_restrict_quaternion_multiply_by_conjugate(BGC_FP64_Quaternion* restrict const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_Quaternion* const right) { product->s0 = (left->s0 * right->s0 + left->x1 * right->x1) + (left->x2 * right->x2 + left->x3 * right->x3); product->x1 = (left->x1 * right->s0 + left->x3 * right->x2) - (left->s0 * right->x1 + left->x2 * right->x3); @@ -368,13 +368,13 @@ inline void _bgc_fp64_restrict_quaternion_multiply_by_conjugate(BGC_FP64_Quatern // ========== Multiply By Dual Number =========== // -inline void bgc_fp32_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* product, const BGC_FP32_Quaternion* multiplicand, const BGC_FP32_DualNumber* multiplier) +inline void bgc_fp32_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* const product, const BGC_FP32_Quaternion* const multiplicand, const BGC_FP32_DualNumber* const multiplier) { bgc_fp32_quaternion_multiply_by_real_number(&product->real_part, multiplicand, multiplier->real_part); bgc_fp32_quaternion_multiply_by_real_number(&product->dual_part, multiplicand, multiplier->dual_part); } -inline void bgc_fp64_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* product, const BGC_FP64_Quaternion* multiplicand, const BGC_FP64_DualNumber* multiplier) +inline void bgc_fp64_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* const product, const BGC_FP64_Quaternion* const multiplicand, const BGC_FP64_DualNumber* const multiplier) { bgc_fp64_quaternion_multiply_by_real_number(&product->real_part, multiplicand, multiplier->real_part); bgc_fp64_quaternion_multiply_by_real_number(&product->dual_part, multiplicand, multiplier->dual_part); @@ -382,13 +382,13 @@ inline void bgc_fp64_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* // ======== Multiply By Dual Quaternion ========= // -inline void bgc_fp32_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* product, const BGC_FP32_Quaternion* left, const BGC_FP32_DualQuaternion* right) +inline void bgc_fp32_quaternion_multiply_by_dual_quaternion(BGC_FP32_DualQuaternion* const product, const BGC_FP32_Quaternion* const left, const BGC_FP32_DualQuaternion* const right) { bgc_fp32_quaternion_multiply_by_quaternion(&product->real_part, left, &right->real_part); bgc_fp32_quaternion_multiply_by_quaternion(&product->dual_part, left, &right->dual_part); } -inline void bgc_fp64_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* product, const BGC_FP64_Quaternion* left, const BGC_FP64_DualQuaternion* right) +inline void bgc_fp64_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuaternion* const product, const BGC_FP64_Quaternion* const left, const BGC_FP64_DualQuaternion* const right) { bgc_fp64_quaternion_multiply_by_quaternion(&product->real_part, left, &right->real_part); bgc_fp64_quaternion_multiply_by_quaternion(&product->dual_part, left, &right->dual_part); @@ -396,7 +396,7 @@ inline void bgc_fp64_quaternion_multiply_by_dual_quaternion(BGC_FP64_DualQuatern // ============== Divide By Number ============== // -inline int bgc_fp32_quaternion_divide_by_real_number(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* dividend, const float divisor) +inline int bgc_fp32_quaternion_divide_by_real_number(BGC_FP32_Quaternion* const quotient, const BGC_FP32_Quaternion* const dividend, const float divisor) { if (bgc_fp32_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -407,7 +407,7 @@ inline int bgc_fp32_quaternion_divide_by_real_number(BGC_FP32_Quaternion* quotie return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_divide_by_real_number(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* dividend, const double divisor) +inline int bgc_fp64_quaternion_divide_by_real_number(BGC_FP64_Quaternion* const quotient, const BGC_FP64_Quaternion* const dividend, const double divisor) { if (bgc_fp64_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -420,7 +420,7 @@ inline int bgc_fp64_quaternion_divide_by_real_number(BGC_FP64_Quaternion* quotie // ============ Divide By Quaternion ============ // -inline int bgc_fp32_quaternion_divide_by_quaternion(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* divident, const BGC_FP32_Quaternion* divisor) +inline int bgc_fp32_quaternion_divide_by_quaternion(BGC_FP32_Quaternion* const quotient, const BGC_FP32_Quaternion* const divident, const BGC_FP32_Quaternion* const divisor) { const float square_modulus = bgc_fp32_quaternion_get_square_magnitude(divisor); @@ -434,7 +434,7 @@ inline int bgc_fp32_quaternion_divide_by_quaternion(BGC_FP32_Quaternion* quotien return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_divide_by_quaternion(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* divident, const BGC_FP64_Quaternion* divisor) +inline int bgc_fp64_quaternion_divide_by_quaternion(BGC_FP64_Quaternion* const quotient, const BGC_FP64_Quaternion* const divident, const BGC_FP64_Quaternion* const divisor) { const double square_modulus = bgc_fp64_quaternion_get_square_magnitude(divisor); @@ -450,7 +450,7 @@ inline int bgc_fp64_quaternion_divide_by_quaternion(BGC_FP64_Quaternion* quotien // ======= Divide By Conjugate Quaternion ======= // -inline int bgc_fp32_quaternion_divide_by_conjugate(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* divident, const BGC_FP32_Quaternion* divisor_to_conjugate) +inline int bgc_fp32_quaternion_divide_by_conjugate(BGC_FP32_Quaternion* const quotient, const BGC_FP32_Quaternion* const divident, const BGC_FP32_Quaternion* const divisor_to_conjugate) { const float square_modulus = bgc_fp32_quaternion_get_square_magnitude(divisor_to_conjugate); @@ -464,7 +464,7 @@ inline int bgc_fp32_quaternion_divide_by_conjugate(BGC_FP32_Quaternion* quotient return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_divide_by_conjugate(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* divident, const BGC_FP64_Quaternion* divisor_to_conjugate) +inline int bgc_fp64_quaternion_divide_by_conjugate(BGC_FP64_Quaternion* const quotient, const BGC_FP64_Quaternion* const divident, const BGC_FP64_Quaternion* const divisor_to_conjugate) { const double square_modulus = bgc_fp64_quaternion_get_square_magnitude(divisor_to_conjugate); @@ -480,7 +480,7 @@ inline int bgc_fp64_quaternion_divide_by_conjugate(BGC_FP64_Quaternion* quotient // ================ Mean of Two ================= // -inline void bgc_fp32_quaternion_get_mean2(BGC_FP32_Quaternion* mean, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2) +inline void bgc_fp32_quaternion_get_mean2(BGC_FP32_Quaternion* const mean, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2) { mean->s0 = (quaternion1->s0 + quaternion2->s0) * 0.5f; mean->x1 = (quaternion1->x1 + quaternion2->x1) * 0.5f; @@ -488,7 +488,7 @@ inline void bgc_fp32_quaternion_get_mean2(BGC_FP32_Quaternion* mean, const BGC_F mean->x3 = (quaternion1->x3 + quaternion2->x3) * 0.5f; } -inline void bgc_fp64_quaternion_get_mean2(BGC_FP64_Quaternion* mean, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2) +inline void bgc_fp64_quaternion_get_mean2(BGC_FP64_Quaternion* const mean, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2) { mean->s0 = (quaternion1->s0 + quaternion2->s0) * 0.5f; mean->x1 = (quaternion1->x1 + quaternion2->x1) * 0.5f; @@ -498,7 +498,7 @@ inline void bgc_fp64_quaternion_get_mean2(BGC_FP64_Quaternion* mean, const BGC_F // =============== Mean of Three ================ // -inline void bgc_fp32_quaternion_get_mean3(BGC_FP32_Quaternion* mean, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2, const BGC_FP32_Quaternion* quaternion3) +inline void bgc_fp32_quaternion_get_mean3(BGC_FP32_Quaternion* const mean, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2, const BGC_FP32_Quaternion* const quaternion3) { mean->s0 = (quaternion1->s0 + quaternion2->s0 + quaternion3->s0) * BGC_FP32_ONE_THIRD; mean->x1 = (quaternion1->x1 + quaternion2->x1 + quaternion3->x1) * BGC_FP32_ONE_THIRD; @@ -506,7 +506,7 @@ inline void bgc_fp32_quaternion_get_mean3(BGC_FP32_Quaternion* mean, const BGC_F mean->x3 = (quaternion1->x3 + quaternion2->x3 + quaternion3->x3) * BGC_FP32_ONE_THIRD; } -inline void bgc_fp64_quaternion_get_mean3(BGC_FP64_Quaternion* mean, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2, const BGC_FP64_Quaternion* quaternion3) +inline void bgc_fp64_quaternion_get_mean3(BGC_FP64_Quaternion* const mean, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2, const BGC_FP64_Quaternion* const quaternion3) { mean->s0 = (quaternion1->s0 + quaternion2->s0 + quaternion3->s0) * BGC_FP64_ONE_THIRD; mean->x1 = (quaternion1->x1 + quaternion2->x1 + quaternion3->x1) * BGC_FP64_ONE_THIRD; @@ -516,7 +516,7 @@ inline void bgc_fp64_quaternion_get_mean3(BGC_FP64_Quaternion* mean, const BGC_F // ============ Linear Interpolation ============ // -inline void bgc_fp32_quaternion_interpolate(BGC_FP32_Quaternion* interpolation, const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2, const float phase) +inline void bgc_fp32_quaternion_interpolate(BGC_FP32_Quaternion* const interpolation, const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2, const float phase) { const float counter_phase = 1.0f - phase; @@ -526,7 +526,7 @@ inline void bgc_fp32_quaternion_interpolate(BGC_FP32_Quaternion* interpolation, interpolation->x3 = quaternion1->x3 * counter_phase + quaternion2->x3 * phase; } -inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* interpolation, const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2, const double phase) +inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* const interpolation, const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2, const double phase) { const double counter_phase = 1.0 - phase; @@ -538,33 +538,33 @@ inline void bgc_fp64_quaternion_interpolate(BGC_FP64_Quaternion* interpolation, // ============== Get Dot Product =============== // -inline float bgc_fp32_quaternion_get_dot_product(const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2) +inline float bgc_fp32_quaternion_get_dot_product(const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2) { return (quaternion1->s0 * quaternion2->s0 + quaternion1->x1 * quaternion2->x1) + (quaternion1->x2 * quaternion2->x2 + quaternion1->x3 * quaternion2->x3); } -inline double bgc_fp64_quaternion_get_dot_product(const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2) +inline double bgc_fp64_quaternion_get_dot_product(const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2) { return (quaternion1->s0 * quaternion2->s0 + quaternion1->x1 * quaternion2->x1) + (quaternion1->x2 * quaternion2->x2 + quaternion1->x3 * quaternion2->x3); } // ================= Conjugate ================== // -inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* quaternion) +inline void bgc_fp32_quaternion_conjugate(BGC_FP32_Quaternion* const quaternion) { quaternion->x1 = -quaternion->x1; quaternion->x2 = -quaternion->x2; quaternion->x3 = -quaternion->x3; } -inline void bgc_fp64_quaternion_conjugate(BGC_FP64_Quaternion* quaternion) +inline void bgc_fp64_quaternion_conjugate(BGC_FP64_Quaternion* const quaternion) { quaternion->x1 = -quaternion->x1; quaternion->x2 = -quaternion->x2; quaternion->x3 = -quaternion->x3; } -inline void bgc_fp32_quaternion_get_conjugate(BGC_FP32_Quaternion* conjugate, const BGC_FP32_Quaternion* quaternion) +inline void bgc_fp32_quaternion_get_conjugate(BGC_FP32_Quaternion* const conjugate, const BGC_FP32_Quaternion* const quaternion) { conjugate->s0 = quaternion->s0; conjugate->x1 = -quaternion->x1; @@ -572,7 +572,7 @@ inline void bgc_fp32_quaternion_get_conjugate(BGC_FP32_Quaternion* conjugate, co conjugate->x3 = -quaternion->x3; } -inline void bgc_fp64_quaternion_get_conjugate(BGC_FP64_Quaternion* conjugate, const BGC_FP64_Quaternion* quaternion) +inline void bgc_fp64_quaternion_get_conjugate(BGC_FP64_Quaternion* const conjugate, const BGC_FP64_Quaternion* const quaternion) { conjugate->s0 = quaternion->s0; conjugate->x1 = -quaternion->x1; @@ -582,7 +582,7 @@ inline void bgc_fp64_quaternion_get_conjugate(BGC_FP64_Quaternion* conjugate, co // ================== Negative ================== // -inline void bgc_fp32_quaternion_revert(BGC_FP32_Quaternion* quaternion) +inline void bgc_fp32_quaternion_revert(BGC_FP32_Quaternion* const quaternion) { quaternion->s0 = -quaternion->s0; quaternion->x1 = -quaternion->x1; @@ -590,7 +590,7 @@ inline void bgc_fp32_quaternion_revert(BGC_FP32_Quaternion* quaternion) quaternion->x3 = -quaternion->x3; } -inline void bgc_fp64_quaternion_revert(BGC_FP64_Quaternion* quaternion) +inline void bgc_fp64_quaternion_revert(BGC_FP64_Quaternion* const quaternion) { quaternion->s0 = -quaternion->s0; quaternion->x1 = -quaternion->x1; @@ -598,7 +598,7 @@ inline void bgc_fp64_quaternion_revert(BGC_FP64_Quaternion* quaternion) quaternion->x3 = -quaternion->x3; } -inline void bgc_fp32_quaternion_get_reverse(BGC_FP32_Quaternion* reverse, const BGC_FP32_Quaternion* quaternion) +inline void bgc_fp32_quaternion_get_reverse(BGC_FP32_Quaternion* const reverse, const BGC_FP32_Quaternion* const quaternion) { reverse->s0 = -quaternion->s0; reverse->x1 = -quaternion->x1; @@ -606,7 +606,7 @@ inline void bgc_fp32_quaternion_get_reverse(BGC_FP32_Quaternion* reverse, const reverse->x3 = -quaternion->x3; } -inline void bgc_fp64_quaternion_get_reverse(BGC_FP64_Quaternion* reverse, const BGC_FP64_Quaternion* quaternion) +inline void bgc_fp64_quaternion_get_reverse(BGC_FP64_Quaternion* const reverse, const BGC_FP64_Quaternion* const quaternion) { reverse->s0 = -quaternion->s0; reverse->x1 = -quaternion->x1; @@ -616,7 +616,7 @@ inline void bgc_fp64_quaternion_get_reverse(BGC_FP64_Quaternion* reverse, const // =================== Invert =================== // -inline int bgc_fp32_quaternion_get_inverse(BGC_FP32_Quaternion* inverse, const BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_get_inverse(BGC_FP32_Quaternion* const inverse, const BGC_FP32_Quaternion* const quaternion) { const float square_modulus = bgc_fp32_quaternion_get_square_magnitude(quaternion); @@ -634,7 +634,7 @@ inline int bgc_fp32_quaternion_get_inverse(BGC_FP32_Quaternion* inverse, const B return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_get_inverse(BGC_FP64_Quaternion* inverse, const BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_get_inverse(BGC_FP64_Quaternion* const inverse, const BGC_FP64_Quaternion* const quaternion) { const double square_modulus = bgc_fp64_quaternion_get_square_magnitude(quaternion); @@ -652,19 +652,19 @@ inline int bgc_fp64_quaternion_get_inverse(BGC_FP64_Quaternion* inverse, const B return BGC_SUCCESS; } -inline int bgc_fp32_quaternion_invert(BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_invert(BGC_FP32_Quaternion* const quaternion) { return bgc_fp32_quaternion_get_inverse(quaternion, quaternion); } -inline int bgc_fp64_quaternion_invert(BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_invert(BGC_FP64_Quaternion* const quaternion) { return bgc_fp64_quaternion_get_inverse(quaternion, quaternion); } // ================= Normalize ================== // -inline int bgc_fp32_quaternion_normalize(BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_normalize(BGC_FP32_Quaternion* const quaternion) { const float square_modulus = bgc_fp32_quaternion_get_square_magnitude(quaternion); @@ -686,7 +686,7 @@ inline int bgc_fp32_quaternion_normalize(BGC_FP32_Quaternion* quaternion) return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_normalize(BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_normalize(BGC_FP64_Quaternion* const quaternion) { const double square_modulus = bgc_fp64_quaternion_get_square_magnitude(quaternion); @@ -708,7 +708,7 @@ inline int bgc_fp64_quaternion_normalize(BGC_FP64_Quaternion* quaternion) return BGC_SUCCESS; } -inline int bgc_fp32_quaternion_get_normalized(BGC_FP32_Quaternion* normalized, const BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_get_normalized(BGC_FP32_Quaternion* const normalized, const BGC_FP32_Quaternion* const quaternion) { const float square_modulus = bgc_fp32_quaternion_get_square_magnitude(quaternion); @@ -726,7 +726,7 @@ inline int bgc_fp32_quaternion_get_normalized(BGC_FP32_Quaternion* normalized, c return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_get_normalized(BGC_FP64_Quaternion* normalized, const BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_get_normalized(BGC_FP64_Quaternion* const normalized, const BGC_FP64_Quaternion* const quaternion) { const double square_modulus = bgc_fp64_quaternion_get_square_magnitude(quaternion); @@ -746,14 +746,14 @@ inline int bgc_fp64_quaternion_get_normalized(BGC_FP64_Quaternion* normalized, c // =============== Get Exponation =============== // -int bgc_fp32_quaternion_get_power(BGC_FP32_Quaternion* power, const BGC_FP32_Quaternion* base, const float exponent); +int bgc_fp32_quaternion_get_power(BGC_FP32_Quaternion* const power, const BGC_FP32_Quaternion* const base, const float exponent); -int bgc_fp64_quaternion_get_power(BGC_FP64_Quaternion* power, const BGC_FP64_Quaternion* base, const double exponent); +int bgc_fp64_quaternion_get_power(BGC_FP64_Quaternion* const power, const BGC_FP64_Quaternion* const base, const double exponent); // ============== Raw Turn Vector3 ============== // // An internal function -inline void _bgc_fp32_versor_turn_vector(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector) +inline void _bgc_fp32_versor_turn_vector(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector) { const float tx1 = 2.0f * (quaternion->x2 * original_vector->x3 - quaternion->x3 * original_vector->x2); const float tx2 = 2.0f * (quaternion->x3 * original_vector->x1 - quaternion->x1 * original_vector->x3); @@ -769,7 +769,7 @@ inline void _bgc_fp32_versor_turn_vector(BGC_FP32_Vector3* turned_vector, const } // An internal function -inline void _bgc_fp64_versor_turn_vector(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector) +inline void _bgc_fp64_versor_turn_vector(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector) { const double tx1 = 2.0f * (quaternion->x2 * original_vector->x3 - quaternion->x3 * original_vector->x2); const double tx2 = 2.0f * (quaternion->x3 * original_vector->x1 - quaternion->x1 * original_vector->x3); @@ -787,7 +787,7 @@ inline void _bgc_fp64_versor_turn_vector(BGC_FP64_Vector3* turned_vector, const // ========= Raw Turn Vector3 Backwards ========= // // An internal function -inline void _bgc_fp32_versor_turn_vector_back(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector) +inline void _bgc_fp32_versor_turn_vector_back(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector) { const float tx1 = 2.0f * (quaternion->x2 * original_vector->x3 - quaternion->x3 * original_vector->x2); const float tx2 = 2.0f * (quaternion->x3 * original_vector->x1 - quaternion->x1 * original_vector->x3); @@ -803,7 +803,7 @@ inline void _bgc_fp32_versor_turn_vector_back(BGC_FP32_Vector3* turned_vector, c } // An internal function -inline void _bgc_fp64_versor_turn_vector_back(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector) +inline void _bgc_fp64_versor_turn_vector_back(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector) { const double tx1 = 2.0f * (quaternion->x2 * original_vector->x3 - quaternion->x3 * original_vector->x2); const double tx2 = 2.0f * (quaternion->x3 * original_vector->x1 - quaternion->x1 * original_vector->x3); @@ -820,7 +820,7 @@ inline void _bgc_fp64_versor_turn_vector_back(BGC_FP64_Vector3* turned_vector, c // ================ Turn Vector3 ================ // -inline int bgc_fp32_quaternion_turn_vector(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector) +inline int bgc_fp32_quaternion_turn_vector(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector) { const float square_modulus = bgc_fp32_quaternion_get_square_magnitude(quaternion); @@ -846,7 +846,7 @@ inline int bgc_fp32_quaternion_turn_vector(BGC_FP32_Vector3* turned_vector, cons return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_turn_vector(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector) +inline int bgc_fp64_quaternion_turn_vector(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector) { const double square_modulus = bgc_fp64_quaternion_get_square_magnitude(quaternion); @@ -874,7 +874,7 @@ inline int bgc_fp64_quaternion_turn_vector(BGC_FP64_Vector3* turned_vector, cons // =========== Turn Vector3 Backwards =========== // -inline int bgc_fp32_quaternion_turn_vector_back(BGC_FP32_Vector3* turned_vector, const BGC_FP32_Quaternion* quaternion, const BGC_FP32_Vector3* original_vector) +inline int bgc_fp32_quaternion_turn_vector_back(BGC_FP32_Vector3* const turned_vector, const BGC_FP32_Quaternion* const quaternion, const BGC_FP32_Vector3* const original_vector) { const float square_modulus = bgc_fp32_quaternion_get_square_magnitude(quaternion); @@ -900,7 +900,7 @@ inline int bgc_fp32_quaternion_turn_vector_back(BGC_FP32_Vector3* turned_vector, return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_turn_vector_back(BGC_FP64_Vector3* turned_vector, const BGC_FP64_Quaternion* quaternion, const BGC_FP64_Vector3* original_vector) +inline int bgc_fp64_quaternion_turn_vector_back(BGC_FP64_Vector3* const turned_vector, const BGC_FP64_Quaternion* const quaternion, const BGC_FP64_Vector3* const original_vector) { const double square_modulus = bgc_fp64_quaternion_get_square_magnitude(quaternion); @@ -928,7 +928,7 @@ inline int bgc_fp64_quaternion_turn_vector_back(BGC_FP64_Vector3* turned_vector, // ========= Get Versor Rotation Matrix ========= // -inline void _bgc_fp32_versor_get_rotation_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_Quaternion* versor) +inline void _bgc_fp32_versor_get_rotation_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_Quaternion* const versor) { const float s0s0 = versor->s0 * versor->s0; const float x1x1 = versor->x1 * versor->x1; @@ -957,7 +957,7 @@ inline void _bgc_fp32_versor_get_rotation_matrix(BGC_FP32_Matrix3x3* matrix, con matrix->r1c3 = 2.0f * (x1x3 + s0x2); } -inline void _bgc_fp64_versor_get_rotation_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_Quaternion* versor) +inline void _bgc_fp64_versor_get_rotation_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_Quaternion* const versor) { const double s0s0 = versor->s0 * versor->s0; const double x1x1 = versor->x1 * versor->x1; @@ -988,7 +988,7 @@ inline void _bgc_fp64_versor_get_rotation_matrix(BGC_FP64_Matrix3x3* matrix, con // ========= Get Versor Reverse Matrix ========== // -inline void _bgc_fp32_versor_get_reverse_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_Quaternion* versor) +inline void _bgc_fp32_versor_get_reverse_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_Quaternion* const versor) { const float s0s0 = versor->s0 * versor->s0; const float x1x1 = versor->x1 * versor->x1; @@ -1017,7 +1017,7 @@ inline void _bgc_fp32_versor_get_reverse_matrix(BGC_FP32_Matrix3x3* matrix, cons matrix->r1c3 = 2.0f * (x1x3 - s0x2); } -inline void _bgc_fp64_versor_get_reverse_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_Quaternion* versor) +inline void _bgc_fp64_versor_get_reverse_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_Quaternion* const versor) { const double s0s0 = versor->s0 * versor->s0; const double x1x1 = versor->x1 * versor->x1; @@ -1048,7 +1048,7 @@ inline void _bgc_fp64_versor_get_reverse_matrix(BGC_FP64_Matrix3x3* matrix, cons // ============ Get Rotation Matrix ============= // -inline int bgc_fp32_quaternion_get_rotation_matrix(BGC_FP32_Matrix3x3* rotation, const BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_get_rotation_matrix(BGC_FP32_Matrix3x3* const rotation, const BGC_FP32_Quaternion* const quaternion) { const float s0s0 = quaternion->s0 * quaternion->s0; const float x1x1 = quaternion->x1 * quaternion->x1; @@ -1089,7 +1089,7 @@ inline int bgc_fp32_quaternion_get_rotation_matrix(BGC_FP32_Matrix3x3* rotation, return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_get_rotation_matrix(BGC_FP64_Matrix3x3* rotation, const BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_get_rotation_matrix(BGC_FP64_Matrix3x3* const rotation, const BGC_FP64_Quaternion* const quaternion) { const double s0s0 = quaternion->s0 * quaternion->s0; const double x1x1 = quaternion->x1 * quaternion->x1; @@ -1132,7 +1132,7 @@ inline int bgc_fp64_quaternion_get_rotation_matrix(BGC_FP64_Matrix3x3* rotation, // ============= Get Reverse Matrix ============= // -inline int bgc_fp32_quaternion_get_reverse_matrix(BGC_FP32_Matrix3x3* reverse, const BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_get_reverse_matrix(BGC_FP32_Matrix3x3* const reverse, const BGC_FP32_Quaternion* const quaternion) { const float s0s0 = quaternion->s0 * quaternion->s0; const float x1x1 = quaternion->x1 * quaternion->x1; @@ -1173,7 +1173,7 @@ inline int bgc_fp32_quaternion_get_reverse_matrix(BGC_FP32_Matrix3x3* reverse, c return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_get_reverse_matrix(BGC_FP64_Matrix3x3* reverse, const BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_get_reverse_matrix(BGC_FP64_Matrix3x3* const reverse, const BGC_FP64_Quaternion* const quaternion) { const double s0s0 = quaternion->s0 * quaternion->s0; const double x1x1 = quaternion->x1 * quaternion->x1; @@ -1216,7 +1216,7 @@ inline int bgc_fp64_quaternion_get_reverse_matrix(BGC_FP64_Matrix3x3* reverse, c // ============= Get Both Matrixes ============== // -inline int bgc_fp32_quaternion_get_both_matrices(BGC_FP32_Matrix3x3* rotation, BGC_FP32_Matrix3x3* reverse, const BGC_FP32_Quaternion* quaternion) +inline int bgc_fp32_quaternion_get_both_matrices(BGC_FP32_Matrix3x3* const rotation, BGC_FP32_Matrix3x3* const reverse, const BGC_FP32_Quaternion* const quaternion) { if (bgc_fp32_quaternion_get_reverse_matrix(reverse, quaternion) != BGC_SUCCESS) { return BGC_FAILURE; @@ -1226,7 +1226,7 @@ inline int bgc_fp32_quaternion_get_both_matrices(BGC_FP32_Matrix3x3* rotation, B return BGC_SUCCESS; } -inline int bgc_fp64_quaternion_get_both_matrices(BGC_FP64_Matrix3x3* rotation, BGC_FP64_Matrix3x3* reverse, const BGC_FP64_Quaternion* quaternion) +inline int bgc_fp64_quaternion_get_both_matrices(BGC_FP64_Matrix3x3* const rotation, BGC_FP64_Matrix3x3* const reverse, const BGC_FP64_Quaternion* const quaternion) { if (bgc_fp64_quaternion_get_reverse_matrix(reverse, quaternion) != BGC_SUCCESS) { return BGC_FAILURE; @@ -1238,7 +1238,7 @@ inline int bgc_fp64_quaternion_get_both_matrices(BGC_FP64_Matrix3x3* rotation, B // ================== Are Close ================= // -inline int bgc_fp32_quaternion_are_close(const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2) +inline int bgc_fp32_quaternion_are_close(const BGC_FP32_Quaternion* const quaternion1, const BGC_FP32_Quaternion* const quaternion2) { const float ds0 = quaternion1->s0 - quaternion2->s0; const float dx1 = quaternion1->x1 - quaternion2->x1; @@ -1256,7 +1256,7 @@ inline int bgc_fp32_quaternion_are_close(const BGC_FP32_Quaternion* quaternion1, return square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus1 && square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus2; } -inline int bgc_fp64_quaternion_are_close(const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2) +inline int bgc_fp64_quaternion_are_close(const BGC_FP64_Quaternion* const quaternion1, const BGC_FP64_Quaternion* const quaternion2) { const double ds0 = quaternion1->s0 - quaternion2->s0; const double dx1 = quaternion1->x1 - quaternion2->x1; diff --git a/basic-geometry/rigid-pose3.c b/basic-geometry/rigid-pose3.c index ea66fef..7866566 100644 --- a/basic-geometry/rigid-pose3.c +++ b/basic-geometry/rigid-pose3.c @@ -1,82 +1,82 @@ #include "rigid-pose3.h" -extern inline void bgc_fp32_rigid_pose3_reset(BGC_FP32_RigidPose3* pose); -extern inline void bgc_fp64_rigid_pose3_reset(BGC_FP64_RigidPose3* pose); +extern inline void bgc_fp32_rigid_pose3_reset(BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_reset(BGC_FP64_RigidPose3* const pose); -extern inline void _bgc_fp32_rigid_pose3_normalize(BGC_FP32_RigidPose3* pose); -extern inline void _bgc_fp64_rigid_pose3_normalize(BGC_FP64_RigidPose3* pose); +extern inline void _bgc_fp32_rigid_pose3_normalize(BGC_FP32_RigidPose3* const pose); +extern inline void _bgc_fp64_rigid_pose3_normalize(BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_dual_quaternion(BGC_FP32_DualQuaternion* quaternion, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_dual_quaternion(BGC_FP64_DualQuaternion* quaternion, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_dual_quaternion(BGC_FP32_DualQuaternion* const quaternion, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_dual_quaternion(BGC_FP64_DualQuaternion* const quaternion, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_set_dual_quaternion(BGC_FP32_RigidPose3* pose, const BGC_FP32_DualQuaternion* const quaternion); -extern inline void bgc_fp64_rigid_pose3_set_dual_quaternion(BGC_FP64_RigidPose3* pose, const BGC_FP64_DualQuaternion* const quaternion); +extern inline void bgc_fp32_rigid_pose3_set_dual_quaternion(BGC_FP32_RigidPose3* const pose, const BGC_FP32_DualQuaternion* const quaternion); +extern inline void bgc_fp64_rigid_pose3_set_dual_quaternion(BGC_FP64_RigidPose3* const pose, const BGC_FP64_DualQuaternion* const quaternion); -extern inline void bgc_fp32_rigid_pose3_get_real_part(BGC_FP32_Quaternion* quaternion, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_real_part(BGC_FP64_Quaternion* quaternion, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_real_part(BGC_FP32_Quaternion* const quaternion, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_real_part(BGC_FP64_Quaternion* const quaternion, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_dual_part(BGC_FP32_Quaternion* quaternion, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_dual_part(BGC_FP64_Quaternion* quaternion, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_dual_part(BGC_FP32_Quaternion* const quaternion, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_dual_part(BGC_FP64_Quaternion* const quaternion, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_copy(BGC_FP32_RigidPose3* destination, const BGC_FP32_RigidPose3* const source); -extern inline void bgc_fp64_rigid_pose3_copy(BGC_FP64_RigidPose3* destination, const BGC_FP64_RigidPose3* const source); +extern inline void bgc_fp32_rigid_pose3_copy(BGC_FP32_RigidPose3* const destination, const BGC_FP32_RigidPose3* const source); +extern inline void bgc_fp64_rigid_pose3_copy(BGC_FP64_RigidPose3* const destination, const BGC_FP64_RigidPose3* const source); -extern inline void bgc_fp32_rigid_pose3_swap(BGC_FP32_RigidPose3* pose1, BGC_FP32_RigidPose3* pose2); -extern inline void bgc_fp64_rigid_pose3_swap(BGC_FP64_RigidPose3* pose1, BGC_FP64_RigidPose3* pose2); +extern inline void bgc_fp32_rigid_pose3_swap(BGC_FP32_RigidPose3* const pose1, BGC_FP32_RigidPose3* const pose2); +extern inline void bgc_fp64_rigid_pose3_swap(BGC_FP64_RigidPose3* const pose1, BGC_FP64_RigidPose3* const pose2); -extern inline void bgc_fp32_rigid_pose3_convert_to_fp64(BGC_FP64_RigidPose3* destination, const BGC_FP32_RigidPose3* const source); -extern inline void bgc_fp64_rigid_pose3_convert_to_fp32(BGC_FP32_RigidPose3* destination, const BGC_FP64_RigidPose3* const source); +extern inline void bgc_fp32_rigid_pose3_convert_to_fp64(BGC_FP64_RigidPose3* const destination, const BGC_FP32_RigidPose3* const source); +extern inline void bgc_fp64_rigid_pose3_convert_to_fp32(BGC_FP32_RigidPose3* const destination, const BGC_FP64_RigidPose3* const source); -extern inline void bgc_fp32_rigid_pose3_shorten(BGC_FP32_RigidPose3* pose); -extern inline void bgc_fp64_rigid_pose3_shorten(BGC_FP64_RigidPose3* pose); +extern inline void bgc_fp32_rigid_pose3_shorten(BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_shorten(BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_shortened(BGC_FP32_RigidPose3* shortened, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_shortened(BGC_FP64_RigidPose3* shortened, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_shortened(BGC_FP32_RigidPose3* const shortened, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_shortened(BGC_FP64_RigidPose3* const shortened, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_alternate(BGC_FP32_RigidPose3* pose); -extern inline void bgc_fp64_rigid_pose3_alternate(BGC_FP64_RigidPose3* pose); +extern inline void bgc_fp32_rigid_pose3_alternate(BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_alternate(BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_alternative(BGC_FP32_RigidPose3* alternative, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_alternative(BGC_FP64_RigidPose3* alternative, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_alternative(BGC_FP32_RigidPose3* const alternative, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_alternative(BGC_FP64_RigidPose3* const alternative, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_revert(BGC_FP32_RigidPose3* pose); -extern inline void bgc_fp64_rigid_pose3_revert(BGC_FP64_RigidPose3* pose); +extern inline void bgc_fp32_rigid_pose3_revert(BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_revert(BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_reverse(BGC_FP32_RigidPose3* reverse, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_reverse(BGC_FP64_RigidPose3* reverse, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_reverse(BGC_FP32_RigidPose3* const reverse, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_reverse(BGC_FP64_RigidPose3* const reverse, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_combine(BGC_FP32_RigidPose3* combination, const BGC_FP32_RigidPose3* const first, const BGC_FP32_RigidPose3* const second); -extern inline void bgc_fp64_rigid_pose3_combine(BGC_FP64_RigidPose3* combination, const BGC_FP64_RigidPose3* const first, const BGC_FP64_RigidPose3* const second); +extern inline void bgc_fp32_rigid_pose3_combine(BGC_FP32_RigidPose3* const combination, const BGC_FP32_RigidPose3* const first, const BGC_FP32_RigidPose3* const second); +extern inline void bgc_fp64_rigid_pose3_combine(BGC_FP64_RigidPose3* const combination, const BGC_FP64_RigidPose3* const first, const BGC_FP64_RigidPose3* const second); -extern inline void bgc_fp32_rigid_pose3_exclude(BGC_FP32_RigidPose3* difference, const BGC_FP32_RigidPose3* const base, const BGC_FP32_RigidPose3* const excludant); -extern inline void bgc_fp64_rigid_pose3_exclude(BGC_FP64_RigidPose3* difference, const BGC_FP64_RigidPose3* const base, const BGC_FP64_RigidPose3* const excludant); +extern inline void bgc_fp32_rigid_pose3_exclude(BGC_FP32_RigidPose3* const difference, const BGC_FP32_RigidPose3* const base, const BGC_FP32_RigidPose3* const excludant); +extern inline void bgc_fp64_rigid_pose3_exclude(BGC_FP64_RigidPose3* const difference, const BGC_FP64_RigidPose3* const base, const BGC_FP64_RigidPose3* const excludant); -extern inline void bgc_fp32_rigid_pose3_get_outward_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_outward_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_outward_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_outward_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_inward_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_inward_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_inward_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_inward_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_outer_shift(BGC_FP32_Vector3* shift, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_outer_shift(BGC_FP64_Vector3* shift, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_outer_shift(BGC_FP32_Vector3* const shift, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_outer_shift(BGC_FP64_Vector3* const shift, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_inner_shift(BGC_FP32_Vector3* shift, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_inner_shift(BGC_FP64_Vector3* shift, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_inner_shift(BGC_FP32_Vector3* const shift, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_inner_shift(BGC_FP64_Vector3* const shift, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_outward_affine(BGC_FP32_Affine3* affine_map, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_outward_affine(BGC_FP64_Affine3* affine_map, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_outward_affine(BGC_FP32_Affine3* const affine_map, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_outward_affine(BGC_FP64_Affine3* const affine_map, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_inward_affine(BGC_FP32_Affine3* affine_map, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_inward_affine(BGC_FP64_Affine3* affine_map, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_inward_affine(BGC_FP32_Affine3* const affine_map, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_inward_affine(BGC_FP64_Affine3* const affine_map, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_get_outer_position(BGC_FP32_Position3* position, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_outer_position(BGC_FP64_Position3* position, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_outer_position(BGC_FP32_Position3* const position, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_outer_position(BGC_FP64_Position3* const position, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_set_outer_position(BGC_FP32_RigidPose3* pose, const BGC_FP32_Position3* const position); -extern inline void bgc_fp64_rigid_pose3_set_outer_position(BGC_FP64_RigidPose3* pose, const BGC_FP64_Position3* const position); +extern inline void bgc_fp32_rigid_pose3_set_outer_position(BGC_FP32_RigidPose3* const pose, const BGC_FP32_Position3* const position); +extern inline void bgc_fp64_rigid_pose3_set_outer_position(BGC_FP64_RigidPose3* const pose, const BGC_FP64_Position3* const position); -extern inline void bgc_fp32_rigid_pose3_get_inner_position(BGC_FP32_Position3* position, const BGC_FP32_RigidPose3* const pose); -extern inline void bgc_fp64_rigid_pose3_get_inner_position(BGC_FP64_Position3* position, const BGC_FP64_RigidPose3* const pose); +extern inline void bgc_fp32_rigid_pose3_get_inner_position(BGC_FP32_Position3* const position, const BGC_FP32_RigidPose3* const pose); +extern inline void bgc_fp64_rigid_pose3_get_inner_position(BGC_FP64_Position3* const position, const BGC_FP64_RigidPose3* const pose); -extern inline void bgc_fp32_rigid_pose3_set_inner_position(BGC_FP32_RigidPose3* pose, const BGC_FP32_Position3* const position); -extern inline void bgc_fp64_rigid_pose3_set_inner_position(BGC_FP64_RigidPose3* pose, const BGC_FP64_Position3* const position); +extern inline void bgc_fp32_rigid_pose3_set_inner_position(BGC_FP32_RigidPose3* const pose, const BGC_FP32_Position3* const position); +extern inline void bgc_fp64_rigid_pose3_set_inner_position(BGC_FP64_RigidPose3* const pose, const BGC_FP64_Position3* const position); diff --git a/basic-geometry/rigid-pose3.h b/basic-geometry/rigid-pose3.h index ce704d8..4ffaef9 100644 --- a/basic-geometry/rigid-pose3.h +++ b/basic-geometry/rigid-pose3.h @@ -10,7 +10,7 @@ // ==================== Reset =================== // -inline void bgc_fp32_rigid_pose3_reset(BGC_FP32_RigidPose3* pose) +inline void bgc_fp32_rigid_pose3_reset(BGC_FP32_RigidPose3* const pose) { pose->_versor.real_part.s0 = 1.0f; pose->_versor.real_part.x1 = 0.0f; @@ -23,7 +23,7 @@ inline void bgc_fp32_rigid_pose3_reset(BGC_FP32_RigidPose3* pose) pose->_versor.dual_part.x3 = 0.0f; } -inline void bgc_fp64_rigid_pose3_reset(BGC_FP64_RigidPose3* pose) +inline void bgc_fp64_rigid_pose3_reset(BGC_FP64_RigidPose3* const pose) { pose->_versor.real_part.s0 = 1.0; pose->_versor.real_part.x1 = 0.0; @@ -38,7 +38,7 @@ inline void bgc_fp64_rigid_pose3_reset(BGC_FP64_RigidPose3* pose) // ================= Normalize ================== // -inline void _bgc_fp32_rigid_pose3_normalize(BGC_FP32_RigidPose3* pose) +inline void _bgc_fp32_rigid_pose3_normalize(BGC_FP32_RigidPose3* const pose) { const float square_magnitude = bgc_fp32_quaternion_get_square_magnitude(&pose->_versor.real_part); @@ -58,7 +58,7 @@ inline void _bgc_fp32_rigid_pose3_normalize(BGC_FP32_RigidPose3* pose) bgc_fp32_quaternion_subtract_scaled(&pose->_versor.dual_part, &pose->_versor.dual_part, &pose->_versor.real_part, dot_product); } -inline void _bgc_fp64_rigid_pose3_normalize(BGC_FP64_RigidPose3* pose) +inline void _bgc_fp64_rigid_pose3_normalize(BGC_FP64_RigidPose3* const pose) { const double square_magnitude = bgc_fp64_quaternion_get_square_magnitude(&pose->_versor.real_part); @@ -80,25 +80,25 @@ inline void _bgc_fp64_rigid_pose3_normalize(BGC_FP64_RigidPose3* pose) // ============ Get Dual Quaternion ============= // -inline void bgc_fp32_rigid_pose3_get_dual_quaternion(BGC_FP32_DualQuaternion* quaternion, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_dual_quaternion(BGC_FP32_DualQuaternion* const quaternion, const BGC_FP32_RigidPose3* const pose) { bgc_fp32_dual_quaternion_copy(quaternion, &pose->_versor); } -inline void bgc_fp64_rigid_pose3_get_dual_quaternion(BGC_FP64_DualQuaternion* quaternion, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_dual_quaternion(BGC_FP64_DualQuaternion* const quaternion, const BGC_FP64_RigidPose3* const pose) { bgc_fp64_dual_quaternion_copy(quaternion, &pose->_versor); } // ============ Get Dual Quaternion ============= // -inline void bgc_fp32_rigid_pose3_set_dual_quaternion(BGC_FP32_RigidPose3* pose, const BGC_FP32_DualQuaternion* const quaternion) +inline void bgc_fp32_rigid_pose3_set_dual_quaternion(BGC_FP32_RigidPose3* const pose, const BGC_FP32_DualQuaternion* const quaternion) { bgc_fp32_dual_quaternion_copy(&pose->_versor, quaternion); _bgc_fp32_rigid_pose3_normalize(pose); } -inline void bgc_fp64_rigid_pose3_set_dual_quaternion(BGC_FP64_RigidPose3* pose, const BGC_FP64_DualQuaternion* const quaternion) +inline void bgc_fp64_rigid_pose3_set_dual_quaternion(BGC_FP64_RigidPose3* const pose, const BGC_FP64_DualQuaternion* const quaternion) { bgc_fp64_dual_quaternion_copy(&pose->_versor, quaternion); _bgc_fp64_rigid_pose3_normalize(pose); @@ -106,61 +106,61 @@ inline void bgc_fp64_rigid_pose3_set_dual_quaternion(BGC_FP64_RigidPose3* pose, // =============== Get Real Part ================ // -inline void bgc_fp32_rigid_pose3_get_real_part(BGC_FP32_Quaternion* quaternion, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_real_part(BGC_FP32_Quaternion* const quaternion, const BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_copy(quaternion, &pose->_versor.real_part); } -inline void bgc_fp64_rigid_pose3_get_real_part(BGC_FP64_Quaternion* quaternion, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_real_part(BGC_FP64_Quaternion* const quaternion, const BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_copy(quaternion, &pose->_versor.real_part); } // =============== Get Dual Part ================ // -inline void bgc_fp32_rigid_pose3_get_dual_part(BGC_FP32_Quaternion* quaternion, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_dual_part(BGC_FP32_Quaternion* const quaternion, const BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_copy(quaternion, &pose->_versor.dual_part); } -inline void bgc_fp64_rigid_pose3_get_dual_part(BGC_FP64_Quaternion* quaternion, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_dual_part(BGC_FP64_Quaternion* const quaternion, const BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_copy(quaternion, &pose->_versor.dual_part); } // ==================== Copy ==================== // -inline void bgc_fp32_rigid_pose3_copy(BGC_FP32_RigidPose3* destination, const BGC_FP32_RigidPose3* const source) +inline void bgc_fp32_rigid_pose3_copy(BGC_FP32_RigidPose3* const destination, const BGC_FP32_RigidPose3* const source) { bgc_fp32_dual_quaternion_copy(&destination->_versor, &source->_versor); } -inline void bgc_fp64_rigid_pose3_copy(BGC_FP64_RigidPose3* destination, const BGC_FP64_RigidPose3* const source) +inline void bgc_fp64_rigid_pose3_copy(BGC_FP64_RigidPose3* const destination, const BGC_FP64_RigidPose3* const source) { bgc_fp64_dual_quaternion_copy(&destination->_versor, &source->_versor); } // ==================== Swap ==================== // -inline void bgc_fp32_rigid_pose3_swap(BGC_FP32_RigidPose3* pose1, BGC_FP32_RigidPose3* pose2) +inline void bgc_fp32_rigid_pose3_swap(BGC_FP32_RigidPose3* const pose1, BGC_FP32_RigidPose3* const pose2) { bgc_fp32_dual_quaternion_swap(&pose1->_versor, &pose2->_versor); } -inline void bgc_fp64_rigid_pose3_swap(BGC_FP64_RigidPose3* pose1, BGC_FP64_RigidPose3* pose2) +inline void bgc_fp64_rigid_pose3_swap(BGC_FP64_RigidPose3* const pose1, BGC_FP64_RigidPose3* const pose2) { bgc_fp64_dual_quaternion_swap(&pose1->_versor, &pose2->_versor); } // ================== Convert =================== // -inline void bgc_fp32_rigid_pose3_convert_to_fp64(BGC_FP64_RigidPose3* destination, const BGC_FP32_RigidPose3* const source) +inline void bgc_fp32_rigid_pose3_convert_to_fp64(BGC_FP64_RigidPose3* const destination, const BGC_FP32_RigidPose3* const source) { bgc_fp32_dual_quaternion_convert_to_fp64(&destination->_versor, &source->_versor); _bgc_fp64_rigid_pose3_normalize(destination); } -inline void bgc_fp64_rigid_pose3_convert_to_fp32(BGC_FP32_RigidPose3* destination, const BGC_FP64_RigidPose3* const source) +inline void bgc_fp64_rigid_pose3_convert_to_fp32(BGC_FP32_RigidPose3* const destination, const BGC_FP64_RigidPose3* const source) { bgc_fp64_dual_quaternion_convert_to_fp32(&destination->_versor, &source->_versor); _bgc_fp32_rigid_pose3_normalize(destination); @@ -168,7 +168,7 @@ inline void bgc_fp64_rigid_pose3_convert_to_fp32(BGC_FP32_RigidPose3* destinatio // ================== Shorten =================== // -inline void bgc_fp32_rigid_pose3_shorten(BGC_FP32_RigidPose3* pose) +inline void bgc_fp32_rigid_pose3_shorten(BGC_FP32_RigidPose3* const pose) { if (pose->_versor.real_part.s0 < 0.0f) { bgc_fp32_quaternion_revert(&pose->_versor.real_part); @@ -176,7 +176,7 @@ inline void bgc_fp32_rigid_pose3_shorten(BGC_FP32_RigidPose3* pose) } } -inline void bgc_fp64_rigid_pose3_shorten(BGC_FP64_RigidPose3* pose) +inline void bgc_fp64_rigid_pose3_shorten(BGC_FP64_RigidPose3* const pose) { if (pose->_versor.real_part.s0 < 0.0) { bgc_fp64_quaternion_revert(&pose->_versor.real_part); @@ -186,7 +186,7 @@ inline void bgc_fp64_rigid_pose3_shorten(BGC_FP64_RigidPose3* pose) // =============== Get Shortened ================ // -inline void bgc_fp32_rigid_pose3_get_shortened(BGC_FP32_RigidPose3* shortened, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_shortened(BGC_FP32_RigidPose3* const shortened, const BGC_FP32_RigidPose3* const pose) { if (pose->_versor.real_part.s0 < 0.0f) { bgc_fp32_quaternion_get_reverse(&shortened->_versor.real_part, &pose->_versor.real_part); @@ -198,7 +198,7 @@ inline void bgc_fp32_rigid_pose3_get_shortened(BGC_FP32_RigidPose3* shortened, c } } -inline void bgc_fp64_rigid_pose3_get_shortened(BGC_FP64_RigidPose3* shortened, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_shortened(BGC_FP64_RigidPose3* const shortened, const BGC_FP64_RigidPose3* const pose) { if (pose->_versor.real_part.s0 < 0.0) { bgc_fp64_quaternion_get_reverse(&shortened->_versor.real_part, &pose->_versor.real_part); @@ -212,13 +212,13 @@ inline void bgc_fp64_rigid_pose3_get_shortened(BGC_FP64_RigidPose3* shortened, c // ================= Alternate ================== // -inline void bgc_fp32_rigid_pose3_alternate(BGC_FP32_RigidPose3* pose) +inline void bgc_fp32_rigid_pose3_alternate(BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_revert(&pose->_versor.real_part); bgc_fp32_quaternion_revert(&pose->_versor.dual_part); } -inline void bgc_fp64_rigid_pose3_alternate(BGC_FP64_RigidPose3* pose) +inline void bgc_fp64_rigid_pose3_alternate(BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_revert(&pose->_versor.real_part); bgc_fp64_quaternion_revert(&pose->_versor.dual_part); @@ -226,13 +226,13 @@ inline void bgc_fp64_rigid_pose3_alternate(BGC_FP64_RigidPose3* pose) // ============== Get Alternative =============== // -inline void bgc_fp32_rigid_pose3_get_alternative(BGC_FP32_RigidPose3* alternative, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_alternative(BGC_FP32_RigidPose3* const alternative, const BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_get_reverse(&alternative->_versor.real_part, &pose->_versor.real_part); bgc_fp32_quaternion_get_reverse(&alternative->_versor.dual_part, &pose->_versor.dual_part); } -inline void bgc_fp64_rigid_pose3_get_alternative(BGC_FP64_RigidPose3* alternative, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_alternative(BGC_FP64_RigidPose3* const alternative, const BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_get_reverse(&alternative->_versor.real_part, &pose->_versor.real_part); bgc_fp64_quaternion_get_reverse(&alternative->_versor.dual_part, &pose->_versor.dual_part); @@ -240,13 +240,13 @@ inline void bgc_fp64_rigid_pose3_get_alternative(BGC_FP64_RigidPose3* alternativ // =================== Revert =================== // -inline void bgc_fp32_rigid_pose3_revert(BGC_FP32_RigidPose3* pose) +inline void bgc_fp32_rigid_pose3_revert(BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_conjugate(&pose->_versor.real_part); bgc_fp32_quaternion_conjugate(&pose->_versor.dual_part); } -inline void bgc_fp64_rigid_pose3_revert(BGC_FP64_RigidPose3* pose) +inline void bgc_fp64_rigid_pose3_revert(BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_conjugate(&pose->_versor.real_part); bgc_fp64_quaternion_conjugate(&pose->_versor.dual_part); @@ -254,13 +254,13 @@ inline void bgc_fp64_rigid_pose3_revert(BGC_FP64_RigidPose3* pose) // ================ Get Reverse ================= // -inline void bgc_fp32_rigid_pose3_get_reverse(BGC_FP32_RigidPose3* reverse, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_reverse(BGC_FP32_RigidPose3* const reverse, const BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_get_conjugate(&reverse->_versor.real_part, &pose->_versor.real_part); bgc_fp32_quaternion_get_conjugate(&reverse->_versor.dual_part, &pose->_versor.dual_part); } -inline void bgc_fp64_rigid_pose3_get_reverse(BGC_FP64_RigidPose3* reverse, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_reverse(BGC_FP64_RigidPose3* const reverse, const BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_get_conjugate(&reverse->_versor.real_part, &pose->_versor.real_part); bgc_fp64_quaternion_get_conjugate(&reverse->_versor.dual_part, &pose->_versor.dual_part); @@ -268,13 +268,13 @@ inline void bgc_fp64_rigid_pose3_get_reverse(BGC_FP64_RigidPose3* reverse, const // ================== Combine =================== // -inline void bgc_fp32_rigid_pose3_combine(BGC_FP32_RigidPose3* combination, const BGC_FP32_RigidPose3* const first, const BGC_FP32_RigidPose3* const second) +inline void bgc_fp32_rigid_pose3_combine(BGC_FP32_RigidPose3* const combination, const BGC_FP32_RigidPose3* const first, const BGC_FP32_RigidPose3* const second) { bgc_fp32_dual_quaternion_multiply_by_dual_quaternion(&combination->_versor, &second->_versor, &first->_versor); _bgc_fp32_rigid_pose3_normalize(combination); } -inline void bgc_fp64_rigid_pose3_combine(BGC_FP64_RigidPose3* combination, const BGC_FP64_RigidPose3* const first, const BGC_FP64_RigidPose3* const second) +inline void bgc_fp64_rigid_pose3_combine(BGC_FP64_RigidPose3* const combination, const BGC_FP64_RigidPose3* const first, const BGC_FP64_RigidPose3* const second) { bgc_fp64_dual_quaternion_multiply_by_dual_quaternion(&combination->_versor, &second->_versor, &first->_versor); _bgc_fp64_rigid_pose3_normalize(combination); @@ -282,7 +282,7 @@ inline void bgc_fp64_rigid_pose3_combine(BGC_FP64_RigidPose3* combination, const // ================== Exclude =================== // -inline void bgc_fp32_rigid_pose3_exclude(BGC_FP32_RigidPose3* difference, const BGC_FP32_RigidPose3* const base, const BGC_FP32_RigidPose3* const excludant) +inline void bgc_fp32_rigid_pose3_exclude(BGC_FP32_RigidPose3* const difference, const BGC_FP32_RigidPose3* const base, const BGC_FP32_RigidPose3* const excludant) { BGC_FP32_Quaternion dual_part1, dual_part2; @@ -295,7 +295,7 @@ inline void bgc_fp32_rigid_pose3_exclude(BGC_FP32_RigidPose3* difference, const _bgc_fp32_rigid_pose3_normalize(difference); } -inline void bgc_fp64_rigid_pose3_exclude(BGC_FP64_RigidPose3* difference, const BGC_FP64_RigidPose3* const base, const BGC_FP64_RigidPose3* const excludant) +inline void bgc_fp64_rigid_pose3_exclude(BGC_FP64_RigidPose3* const difference, const BGC_FP64_RigidPose3* const base, const BGC_FP64_RigidPose3* const excludant) { BGC_FP64_Quaternion dual_part1, dual_part2; @@ -310,31 +310,31 @@ inline void bgc_fp64_rigid_pose3_exclude(BGC_FP64_RigidPose3* difference, const // ============= Get Outward Matrix ============= // -inline void bgc_fp32_rigid_pose3_get_outward_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_outward_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_RigidPose3* const pose) { _bgc_fp32_versor_get_rotation_matrix(matrix, &pose->_versor.real_part); } -inline void bgc_fp64_rigid_pose3_get_outward_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_outward_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_RigidPose3* const pose) { _bgc_fp64_versor_get_rotation_matrix(matrix, &pose->_versor.real_part); } // ============= Get Inward Matrix ============== // -inline void bgc_fp32_rigid_pose3_get_inward_matrix(BGC_FP32_Matrix3x3* matrix, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_inward_matrix(BGC_FP32_Matrix3x3* const matrix, const BGC_FP32_RigidPose3* const pose) { _bgc_fp32_versor_get_reverse_matrix(matrix, &pose->_versor.real_part); } -inline void bgc_fp64_rigid_pose3_get_inward_matrix(BGC_FP64_Matrix3x3* matrix, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_inward_matrix(BGC_FP64_Matrix3x3* const matrix, const BGC_FP64_RigidPose3* const pose) { _bgc_fp64_versor_get_reverse_matrix(matrix, &pose->_versor.real_part); } // ============== Get Outer Shift =============== // -inline void bgc_fp32_rigid_pose3_get_outer_shift(BGC_FP32_Vector3* shift, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_outer_shift(BGC_FP32_Vector3* const shift, const BGC_FP32_RigidPose3* const pose) { const BGC_FP32_Quaternion* const real = &pose->_versor.real_part; const BGC_FP32_Quaternion* const dual = &pose->_versor.dual_part; @@ -344,7 +344,7 @@ inline void bgc_fp32_rigid_pose3_get_outer_shift(BGC_FP32_Vector3* shift, const shift->x3 = 2.0f * ((dual->x3 * real->s0 + dual->x2 * real->x1) - (dual->s0 * real->x3 + dual->x1 * real->x2)); } -inline void bgc_fp64_rigid_pose3_get_outer_shift(BGC_FP64_Vector3* shift, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_outer_shift(BGC_FP64_Vector3* const shift, const BGC_FP64_RigidPose3* const pose) { const BGC_FP64_Quaternion* const real = &pose->_versor.real_part; const BGC_FP64_Quaternion* const dual = &pose->_versor.dual_part; @@ -356,7 +356,7 @@ inline void bgc_fp64_rigid_pose3_get_outer_shift(BGC_FP64_Vector3* shift, const // ============== Get Inner Shift ============== // -inline void bgc_fp32_rigid_pose3_get_inner_shift(BGC_FP32_Vector3* shift, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_inner_shift(BGC_FP32_Vector3* const shift, const BGC_FP32_RigidPose3* const pose) { const BGC_FP32_Quaternion* const real = &pose->_versor.real_part; const BGC_FP32_Quaternion* const dual = &pose->_versor.dual_part; @@ -366,7 +366,7 @@ inline void bgc_fp32_rigid_pose3_get_inner_shift(BGC_FP32_Vector3* shift, const shift->x3 = 2.0f * ((dual->s0 * real->x3 - dual->x3 * real->s0) + (dual->x2 * real->x1 - dual->x1 * real->x2)); } -inline void bgc_fp64_rigid_pose3_get_inner_shift(BGC_FP64_Vector3* shift, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_inner_shift(BGC_FP64_Vector3* const shift, const BGC_FP64_RigidPose3* const pose) { const BGC_FP64_Quaternion* const real = &pose->_versor.real_part; const BGC_FP64_Quaternion* const dual = &pose->_versor.dual_part; @@ -378,13 +378,13 @@ inline void bgc_fp64_rigid_pose3_get_inner_shift(BGC_FP64_Vector3* shift, const // ============ Get Outward Affine3 ============= // -inline void bgc_fp32_rigid_pose3_get_outward_affine(BGC_FP32_Affine3* affine_map, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_outward_affine(BGC_FP32_Affine3* const affine_map, const BGC_FP32_RigidPose3* const pose) { _bgc_fp32_versor_get_rotation_matrix(&affine_map->distortion, &pose->_versor.real_part); bgc_fp32_rigid_pose3_get_outer_shift(&affine_map->shift, pose); } -inline void bgc_fp64_rigid_pose3_get_outward_affine(BGC_FP64_Affine3* affine_map, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_outward_affine(BGC_FP64_Affine3* const affine_map, const BGC_FP64_RigidPose3* const pose) { _bgc_fp64_versor_get_rotation_matrix(&affine_map->distortion, &pose->_versor.real_part); bgc_fp64_rigid_pose3_get_outer_shift(&affine_map->shift, pose); @@ -392,13 +392,13 @@ inline void bgc_fp64_rigid_pose3_get_outward_affine(BGC_FP64_Affine3* affine_map // ============= Get Inward Affine3 ============= // -inline void bgc_fp32_rigid_pose3_get_inward_affine(BGC_FP32_Affine3* affine_map, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_inward_affine(BGC_FP32_Affine3* const affine_map, const BGC_FP32_RigidPose3* const pose) { _bgc_fp32_versor_get_reverse_matrix(&affine_map->distortion, &pose->_versor.real_part); bgc_fp32_rigid_pose3_get_inner_shift(&affine_map->shift, pose); } -inline void bgc_fp64_rigid_pose3_get_inward_affine(BGC_FP64_Affine3* affine_map, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_inward_affine(BGC_FP64_Affine3* const affine_map, const BGC_FP64_RigidPose3* const pose) { _bgc_fp64_versor_get_reverse_matrix(&affine_map->distortion, &pose->_versor.real_part); bgc_fp64_rigid_pose3_get_inner_shift(&affine_map->shift, pose); @@ -406,13 +406,13 @@ inline void bgc_fp64_rigid_pose3_get_inward_affine(BGC_FP64_Affine3* affine_map, // ============ Get Outer Position3 ============= // -inline void bgc_fp32_rigid_pose3_get_outer_position(BGC_FP32_Position3* position, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_outer_position(BGC_FP32_Position3* const position, const BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_copy(&position->turn._versor, &pose->_versor.real_part); bgc_fp32_rigid_pose3_get_outer_shift(&position->shift, pose); } -inline void bgc_fp64_rigid_pose3_get_outer_position(BGC_FP64_Position3* position, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_outer_position(BGC_FP64_Position3* const position, const BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_copy(&position->turn._versor, &pose->_versor.real_part); bgc_fp64_rigid_pose3_get_outer_shift(&position->shift, pose); @@ -420,7 +420,7 @@ inline void bgc_fp64_rigid_pose3_get_outer_position(BGC_FP64_Position3* position // ============ Set Outer Position3 ============= // -inline void bgc_fp32_rigid_pose3_set_outer_position(BGC_FP32_RigidPose3* pose, const BGC_FP32_Position3* const position) +inline void bgc_fp32_rigid_pose3_set_outer_position(BGC_FP32_RigidPose3* const pose, const BGC_FP32_Position3* const position) { const BGC_FP32_Quaternion* const versor = &position->turn._versor; const BGC_FP32_Vector3* const shift = &position->shift; @@ -433,7 +433,7 @@ inline void bgc_fp32_rigid_pose3_set_outer_position(BGC_FP32_RigidPose3* pose, c pose->_versor.dual_part.x3 = -0.5f * (shift->x2 * versor->x1 - shift->x1 * versor->x2 - shift->x3 * versor->s0); } -inline void bgc_fp64_rigid_pose3_set_outer_position(BGC_FP64_RigidPose3* pose, const BGC_FP64_Position3* const position) +inline void bgc_fp64_rigid_pose3_set_outer_position(BGC_FP64_RigidPose3* const pose, const BGC_FP64_Position3* const position) { const BGC_FP64_Quaternion* const versor = &position->turn._versor; const BGC_FP64_Vector3* const shift = &position->shift; @@ -448,13 +448,13 @@ inline void bgc_fp64_rigid_pose3_set_outer_position(BGC_FP64_RigidPose3* pose, c // ============ Get Inner Position3 ============= // -inline void bgc_fp32_rigid_pose3_get_inner_position(BGC_FP32_Position3* position, const BGC_FP32_RigidPose3* const pose) +inline void bgc_fp32_rigid_pose3_get_inner_position(BGC_FP32_Position3* const position, const BGC_FP32_RigidPose3* const pose) { bgc_fp32_quaternion_get_conjugate(&position->turn._versor, &pose->_versor.real_part); bgc_fp32_rigid_pose3_get_inner_shift(&position->shift, pose); } -inline void bgc_fp64_rigid_pose3_get_inner_position(BGC_FP64_Position3* position, const BGC_FP64_RigidPose3* const pose) +inline void bgc_fp64_rigid_pose3_get_inner_position(BGC_FP64_Position3* const position, const BGC_FP64_RigidPose3* const pose) { bgc_fp64_quaternion_get_conjugate(&position->turn._versor, &pose->_versor.real_part); bgc_fp64_rigid_pose3_get_inner_shift(&position->shift, pose); @@ -462,7 +462,7 @@ inline void bgc_fp64_rigid_pose3_get_inner_position(BGC_FP64_Position3* position // ============ Set Inner Position3 ============= // -inline void bgc_fp32_rigid_pose3_set_inner_position(BGC_FP32_RigidPose3* pose, const BGC_FP32_Position3* const position) +inline void bgc_fp32_rigid_pose3_set_inner_position(BGC_FP32_RigidPose3* const pose, const BGC_FP32_Position3* const position) { const BGC_FP32_Quaternion* const versor = &position->turn._versor; const BGC_FP32_Vector3* const shift = &position->shift; @@ -475,7 +475,7 @@ inline void bgc_fp32_rigid_pose3_set_inner_position(BGC_FP32_RigidPose3* pose, c pose->_versor.dual_part.x3 = -0.5f * (versor->s0 * shift->x3 + versor->x2 * shift->x1 - versor->x1 * shift->x2); } -inline void bgc_fp64_rigid_pose3_set_inner_position(BGC_FP64_RigidPose3* pose, const BGC_FP64_Position3* const position) +inline void bgc_fp64_rigid_pose3_set_inner_position(BGC_FP64_RigidPose3* const pose, const BGC_FP64_Position3* const position) { const BGC_FP64_Quaternion* const versor = &position->turn._versor; const BGC_FP64_Vector3* const shift = &position->shift; diff --git a/basic-geometry/vector2.c b/basic-geometry/vector2.c index baa52fb..ba06a02 100644 --- a/basic-geometry/vector2.c +++ b/basic-geometry/vector2.c @@ -1,119 +1,112 @@ #include "./vector2.h" -extern inline void bgc_fp32_vector2_reset(BGC_FP32_Vector2* vector); -extern inline void bgc_fp64_vector2_reset(BGC_FP64_Vector2* vector); +extern inline void bgc_fp32_vector2_reset(BGC_FP32_Vector2* const vector); +extern inline void bgc_fp64_vector2_reset(BGC_FP64_Vector2* const vector); -extern inline void bgc_fp32_vector2_make(BGC_FP32_Vector2* destination, const float x1, const float x2); -extern inline void bgc_fp64_vector2_make(BGC_FP64_Vector2* destination, const double x1, const double x2); +extern inline void bgc_fp32_vector2_make(BGC_FP32_Vector2* const destination, const float x1, const float x2); +extern inline void bgc_fp64_vector2_make(BGC_FP64_Vector2* const destination, const double x1, const double x2); -extern inline float bgc_fp32_vector2_get_squared_length(const BGC_FP32_Vector2* vector); -extern inline double bgc_fp64_vector2_get_squared_length(const BGC_FP64_Vector2* vector); +extern inline float bgc_fp32_vector2_get_squared_length(const BGC_FP32_Vector2* const vector); +extern inline double bgc_fp64_vector2_get_squared_length(const BGC_FP64_Vector2* const vector); -extern inline float bgc_fp32_vector2_get_length(const BGC_FP32_Vector2* vector); -extern inline double bgc_fp64_vector2_get_length(const BGC_FP64_Vector2* vector); +extern inline float bgc_fp32_vector2_get_length(const BGC_FP32_Vector2* const vector); +extern inline double bgc_fp64_vector2_get_length(const BGC_FP64_Vector2* const vector); -extern inline int bgc_fp32_vector2_is_zero(const BGC_FP32_Vector2* vector); -extern inline int bgc_fp64_vector2_is_zero(const BGC_FP64_Vector2* vector); +extern inline int bgc_fp32_vector2_is_zero(const BGC_FP32_Vector2* const vector); +extern inline int bgc_fp64_vector2_is_zero(const BGC_FP64_Vector2* const vector); -extern inline int bgc_fp32_vector2_is_unit(const BGC_FP32_Vector2* vector); -extern inline int bgc_fp64_vector2_is_unit(const BGC_FP64_Vector2* vector); +extern inline int bgc_fp32_vector2_is_unit(const BGC_FP32_Vector2* const vector); +extern inline int bgc_fp64_vector2_is_unit(const BGC_FP64_Vector2* const vector); -extern inline void bgc_fp32_vector2_copy(BGC_FP32_Vector2* destination, const BGC_FP32_Vector2* source); -extern inline void bgc_fp64_vector2_copy(BGC_FP64_Vector2* destination, const BGC_FP64_Vector2* source); +extern inline void bgc_fp32_vector2_copy(BGC_FP32_Vector2* const destination, const BGC_FP32_Vector2* const source); +extern inline void bgc_fp64_vector2_copy(BGC_FP64_Vector2* const destination, const BGC_FP64_Vector2* const source); -extern inline void bgc_fp32_vector2_swap(BGC_FP32_Vector2* vector1, BGC_FP32_Vector2* vector2); -extern inline void bgc_fp64_vector2_swap(BGC_FP64_Vector2* vector1, BGC_FP64_Vector2* vector2); +extern inline void bgc_fp32_vector2_swap(BGC_FP32_Vector2* const vector1, BGC_FP32_Vector2* const vector2); +extern inline void bgc_fp64_vector2_swap(BGC_FP64_Vector2* const vector1, BGC_FP64_Vector2* const vector2); -extern inline void bgc_fp32_vector2_convert_to_fp64(BGC_FP64_Vector2* destination, const BGC_FP32_Vector2* source); -extern inline void bgc_fp64_vector2_convert_to_fp32(BGC_FP32_Vector2* destination, const BGC_FP64_Vector2* source); +extern inline void bgc_fp32_vector2_convert_to_fp64(BGC_FP64_Vector2* const destination, const BGC_FP32_Vector2* const source); +extern inline void bgc_fp64_vector2_convert_to_fp32(BGC_FP32_Vector2* const destination, const BGC_FP64_Vector2* const source); -extern inline void bgc_fp32_vector2_add(BGC_FP32_Vector2* sum, const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline void bgc_fp64_vector2_add(BGC_FP64_Vector2* sum, const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline void bgc_fp32_vector2_add(BGC_FP32_Vector2* sum, const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline void bgc_fp64_vector2_add(BGC_FP64_Vector2* sum, const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline void bgc_fp32_vector2_add_scaled(BGC_FP32_Vector2* sum, const BGC_FP32_Vector2* basic_vector, const BGC_FP32_Vector2* scalable_vector, const float scale); -extern inline void bgc_fp64_vector2_add_scaled(BGC_FP64_Vector2* sum, const BGC_FP64_Vector2* basic_vector, const BGC_FP64_Vector2* scalable_vector, const double scale); +extern inline void bgc_fp32_vector2_add_scaled(BGC_FP32_Vector2* const sum, const BGC_FP32_Vector2* const basic_vector, const BGC_FP32_Vector2* const scalable_vector, const float scale); +extern inline void bgc_fp64_vector2_add_scaled(BGC_FP64_Vector2* const sum, const BGC_FP64_Vector2* const basic_vector, const BGC_FP64_Vector2* const scalable_vector, const double scale); -extern inline void bgc_fp32_vector2_subtract(BGC_FP32_Vector2* difference, const BGC_FP32_Vector2* minuend, const BGC_FP32_Vector2* subtrahend); -extern inline void bgc_fp64_vector2_subtract(BGC_FP64_Vector2* difference, const BGC_FP64_Vector2* minuend, const BGC_FP64_Vector2* subtrahend); +extern inline void bgc_fp32_vector2_subtract(BGC_FP32_Vector2* const difference, const BGC_FP32_Vector2* const minuend, const BGC_FP32_Vector2* const subtrahend); +extern inline void bgc_fp64_vector2_subtract(BGC_FP64_Vector2* const difference, const BGC_FP64_Vector2* const minuend, const BGC_FP64_Vector2* const subtrahend); -extern inline void bgc_fp32_vector2_subtract_scaled(BGC_FP32_Vector2* difference, const BGC_FP32_Vector2* basic_vector, const BGC_FP32_Vector2* scalable_vector, const float scale); -extern inline void bgc_fp64_vector2_subtract_scaled(BGC_FP64_Vector2* difference, const BGC_FP64_Vector2* basic_vector, const BGC_FP64_Vector2* scalable_vector, const double scale); +extern inline void bgc_fp32_vector2_subtract_scaled(BGC_FP32_Vector2* const difference, const BGC_FP32_Vector2* const basic_vector, const BGC_FP32_Vector2* const scalable_vector, const float scale); +extern inline void bgc_fp64_vector2_subtract_scaled(BGC_FP64_Vector2* const difference, const BGC_FP64_Vector2* const basic_vector, const BGC_FP64_Vector2* const scalable_vector, const double scale); -extern inline void bgc_fp32_vector2_multiply_by_real(BGC_FP32_Vector2* product, const BGC_FP32_Vector2* multiplicand, const float multiplier); -extern inline void bgc_fp64_vector2_multiply_by_real(BGC_FP64_Vector2* product, const BGC_FP64_Vector2* multiplicand, const double multiplier); +extern inline void bgc_fp32_vector2_multiply_by_real(BGC_FP32_Vector2* const product, const BGC_FP32_Vector2* const multiplicand, const float multiplier); +extern inline void bgc_fp64_vector2_multiply_by_real(BGC_FP64_Vector2* const product, const BGC_FP64_Vector2* const multiplicand, const double multiplier); -extern inline void bgc_fp32_vector2_multiply_by_matrix2x2(BGC_FP32_Vector2* product, const BGC_FP32_Vector2* vector, const BGC_FP32_Matrix2x2* matrix); -extern inline void bgc_fp64_vector2_multiply_by_matrix2x2(BGC_FP64_Vector2* product, const BGC_FP64_Vector2* vector, const BGC_FP64_Matrix2x2* matrix); +extern inline void bgc_fp32_vector2_multiply_by_matrix2x2(BGC_FP32_Vector2* const product, const BGC_FP32_Vector2* const vector, const BGC_FP32_Matrix2x2* const matrix); +extern inline void bgc_fp64_vector2_multiply_by_matrix2x2(BGC_FP64_Vector2* const product, const BGC_FP64_Vector2* const vector, const BGC_FP64_Matrix2x2* const matrix); -extern inline void bgc_fp32_vector2_multiply_by_matrix3x2(BGC_FP32_Vector3* product, const BGC_FP32_Vector2* vector, const BGC_FP32_Matrix3x2* matrix); -extern inline void bgc_fp64_vector2_multiply_by_matrix3x2(BGC_FP64_Vector3* product, const BGC_FP64_Vector2* vector, const BGC_FP64_Matrix3x2* matrix); +extern inline void bgc_fp32_vector2_multiply_by_matrix3x2(BGC_FP32_Vector3* const product, const BGC_FP32_Vector2* const vector, const BGC_FP32_Matrix3x2* const matrix); +extern inline void bgc_fp64_vector2_multiply_by_matrix3x2(BGC_FP64_Vector3* const product, const BGC_FP64_Vector2* const vector, const BGC_FP64_Matrix3x2* const matrix); -extern inline int bgc_fp32_vector2_divide_by_real(BGC_FP32_Vector2* quotient, const BGC_FP32_Vector2* dividend, const float divisor); -extern inline int bgc_fp64_vector2_divide_by_real(BGC_FP64_Vector2* quotient, const BGC_FP64_Vector2* dividend, const double divisor); +extern inline int bgc_fp32_vector2_divide_by_real(BGC_FP32_Vector2* const quotient, const BGC_FP32_Vector2* const dividend, const float divisor); +extern inline int bgc_fp64_vector2_divide_by_real(BGC_FP64_Vector2* const quotient, const BGC_FP64_Vector2* const dividend, const double divisor); -extern inline void bgc_fp32_vector2_get_mean2(BGC_FP32_Vector2* mean, const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline void bgc_fp64_vector2_get_mean2(BGC_FP64_Vector2* mean, const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline void bgc_fp32_vector2_get_mean2(BGC_FP32_Vector2* const mean, const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline void bgc_fp64_vector2_get_mean2(BGC_FP64_Vector2* const mean, const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline void bgc_fp32_vector2_get_mean3(BGC_FP32_Vector2* mean, const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2, const BGC_FP32_Vector2* vector3); -extern inline void bgc_fp64_vector2_get_mean3(BGC_FP64_Vector2* mean, const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2, const BGC_FP64_Vector2* vector3); +extern inline void bgc_fp32_vector2_get_mean3(BGC_FP32_Vector2* const mean, const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2, const BGC_FP32_Vector2* const vector3); +extern inline void bgc_fp64_vector2_get_mean3(BGC_FP64_Vector2* const mean, const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2, const BGC_FP64_Vector2* const vector3); -extern inline void bgc_fp32_vector2_interpolate(BGC_FP32_Vector2* interpolation, const BGC_FP32_Vector2* first, const BGC_FP32_Vector2* second, const float phase); -extern inline void bgc_fp64_vector2_interpolate(BGC_FP64_Vector2* interpolation, const BGC_FP64_Vector2* first, const BGC_FP64_Vector2* second, const double phase); +extern inline void bgc_fp32_vector2_interpolate(BGC_FP32_Vector2* const interpolation, const BGC_FP32_Vector2* const first, const BGC_FP32_Vector2* const second, const float phase); +extern inline void bgc_fp64_vector2_interpolate(BGC_FP64_Vector2* const interpolation, const BGC_FP64_Vector2* const first, const BGC_FP64_Vector2* const second, const double phase); -extern inline void bgc_fp32_vector2_revert(BGC_FP32_Vector2* vector); -extern inline void bgc_fp64_vector2_revert(BGC_FP64_Vector2* vector); +extern inline void bgc_fp32_vector2_revert(BGC_FP32_Vector2* const vector); +extern inline void bgc_fp64_vector2_revert(BGC_FP64_Vector2* const vector); -extern inline void bgc_fp32_vector2_get_reverse(BGC_FP32_Vector2* reverse, const BGC_FP32_Vector2* vector); -extern inline void bgc_fp64_vector2_get_reverse(BGC_FP64_Vector2* reverse, const BGC_FP64_Vector2* vector); +extern inline void bgc_fp32_vector2_get_reverse(BGC_FP32_Vector2* const reverse, const BGC_FP32_Vector2* const vector); +extern inline void bgc_fp64_vector2_get_reverse(BGC_FP64_Vector2* const reverse, const BGC_FP64_Vector2* const vector); -extern inline int bgc_fp32_vector2_normalize(BGC_FP32_Vector2* vector); -extern inline int bgc_fp64_vector2_normalize(BGC_FP64_Vector2* vector); +extern inline int bgc_fp32_vector2_normalize(BGC_FP32_Vector2* const vector); +extern inline int bgc_fp64_vector2_normalize(BGC_FP64_Vector2* const vector); -extern inline int bgc_fp32_vector2_get_normalized(BGC_FP32_Vector2* normalized, const BGC_FP32_Vector2* vector); -extern inline int bgc_fp64_vector2_get_normalized(BGC_FP64_Vector2* normalized, const BGC_FP64_Vector2* vector); +extern inline int bgc_fp32_vector2_get_normalized(BGC_FP32_Vector2* const normalized, const BGC_FP32_Vector2* const vector); +extern inline int bgc_fp64_vector2_get_normalized(BGC_FP64_Vector2* const normalized, const BGC_FP64_Vector2* const vector); -extern inline float bgc_fp32_vector2_get_dot_product(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline double bgc_fp64_vector2_get_dot_product(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline float bgc_fp32_vector2_get_dot_product(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline double bgc_fp64_vector2_get_dot_product(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline float bgc_fp32_vector2_get_cross_product(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline double bgc_fp64_vector2_get_cross_product(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline float bgc_fp32_vector2_get_cross_product(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline double bgc_fp64_vector2_get_cross_product(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline float bgc_fp32_vector2_get_square_distance(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline double bgc_fp64_vector2_get_square_distance(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline float bgc_fp32_vector2_get_square_distance(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline double bgc_fp64_vector2_get_square_distance(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline float bgc_fp32_vector2_get_distance(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline double bgc_fp64_vector2_get_distance(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline float bgc_fp32_vector2_get_distance(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline double bgc_fp64_vector2_get_distance(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline int bgc_fp32_vector2_are_close_enough(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2, const float distance); -extern inline int bgc_fp64_vector2_are_close_enough(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2, const double distance); +extern inline int bgc_fp32_vector2_are_close_enough(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2, const float distance); +extern inline int bgc_fp64_vector2_are_close_enough(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2, const double distance); -extern inline int bgc_fp32_vector2_are_close(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline int bgc_fp64_vector2_are_close(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline int bgc_fp32_vector2_are_close(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline int bgc_fp64_vector2_are_close(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline int bgc_fp32_vector2_are_parallel(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline int bgc_fp64_vector2_are_parallel(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline int bgc_fp32_vector2_are_parallel(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline int bgc_fp64_vector2_are_parallel(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline int bgc_fp32_vector2_are_orthogonal(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline int bgc_fp64_vector2_are_orthogonal(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline int bgc_fp32_vector2_are_orthogonal(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline int bgc_fp64_vector2_are_orthogonal(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); -extern inline int bgc_fp32_vector2_get_attitude(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2); -extern inline int bgc_fp64_vector2_get_attitude(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2); +extern inline int bgc_fp32_vector2_get_attitude(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2); +extern inline int bgc_fp64_vector2_get_attitude(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2); // =================== Angle ==================== // -float bgc_fp32_vector2_get_angle(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2, const int angle_unit) +float bgc_fp32_vector2_get_angle(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2, const int angle_unit) { const float square_modulus1 = bgc_fp32_vector2_get_squared_length(vector1); + const float square_modulus2 = bgc_fp32_vector2_get_squared_length(vector2); - // square_modulus1 != square_modulus1 is check for NaN value at square_modulus1 - if (square_modulus1 <= BGC_FP32_SQUARE_EPSILON || isnan(square_modulus1)) { - return 0.0f; - } - - const float square_modulus2 = bgc_fp32_vector2_get_squared_length(vector2); - - // square_modulus2 != square_modulus2 is check for NaN value at square_modulus2 - if (square_modulus2 <= BGC_FP32_SQUARE_EPSILON || isnan(square_modulus2)) { + if (square_modulus1 <= BGC_FP32_SQUARE_EPSILON || square_modulus2 <= BGC_FP32_SQUARE_EPSILON || isnan(square_modulus1) || isnan(square_modulus2)) { return 0.0f; } @@ -126,19 +119,12 @@ float bgc_fp32_vector2_get_angle(const BGC_FP32_Vector2* vector1, const BGC_FP32 return bgc_fp32_radians_to_units(atan2f(y * multiplier, x * multiplier), angle_unit); } -double bgc_fp64_vector2_get_angle(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2, const int angle_unit) +double bgc_fp64_vector2_get_angle(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2, const int angle_unit) { const double square_modulus1 = bgc_fp64_vector2_get_squared_length(vector1); + const double square_modulus2 = bgc_fp64_vector2_get_squared_length(vector2); - // square_modulus1 != square_modulus1 is check for NaN value at square_modulus1 - if (square_modulus1 <= BGC_FP64_SQUARE_EPSILON || isnan(square_modulus1)) { - return 0.0; - } - - const double square_modulus2 = bgc_fp64_vector2_get_squared_length(vector2); - - // square_modulus2 != square_modulus2 is check for NaN value at square_modulus2 - if (square_modulus2 <= BGC_FP64_SQUARE_EPSILON || isnan(square_modulus2)) { + if (square_modulus1 <= BGC_FP64_SQUARE_EPSILON || square_modulus2 <= BGC_FP64_SQUARE_EPSILON || isnan(square_modulus1) || isnan(square_modulus2)) { return 0.0; } diff --git a/basic-geometry/vector2.h b/basic-geometry/vector2.h index fedf71e..36a7cbf 100644 --- a/basic-geometry/vector2.h +++ b/basic-geometry/vector2.h @@ -9,13 +9,13 @@ // =================== Reset ==================== // -inline void bgc_fp32_vector2_reset(BGC_FP32_Vector2* vector) +inline void bgc_fp32_vector2_reset(BGC_FP32_Vector2* const vector) { vector->x1 = 0.0f; vector->x2 = 0.0f; } -inline void bgc_fp64_vector2_reset(BGC_FP64_Vector2* vector) +inline void bgc_fp64_vector2_reset(BGC_FP64_Vector2* const vector) { vector->x1 = 0.0; vector->x2 = 0.0; @@ -23,13 +23,13 @@ inline void bgc_fp64_vector2_reset(BGC_FP64_Vector2* vector) // ==================== Set ===================== // -inline void bgc_fp32_vector2_make(BGC_FP32_Vector2* destination, const float x1, const float x2) +inline void bgc_fp32_vector2_make(BGC_FP32_Vector2* const destination, const float x1, const float x2) { destination->x1 = x1; destination->x2 = x2; } -inline void bgc_fp64_vector2_make(BGC_FP64_Vector2* destination, const double x1, const double x2) +inline void bgc_fp64_vector2_make(BGC_FP64_Vector2* const destination, const double x1, const double x2) { destination->x1 = x1; destination->x2 = x2; @@ -37,57 +37,57 @@ inline void bgc_fp64_vector2_make(BGC_FP64_Vector2* destination, const double x1 // ================== Modulus =================== // -inline float bgc_fp32_vector2_get_squared_length(const BGC_FP32_Vector2* vector) +inline float bgc_fp32_vector2_get_squared_length(const BGC_FP32_Vector2* const vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2; } -inline double bgc_fp64_vector2_get_squared_length(const BGC_FP64_Vector2* vector) +inline double bgc_fp64_vector2_get_squared_length(const BGC_FP64_Vector2* const vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2; } -inline float bgc_fp32_vector2_get_length(const BGC_FP32_Vector2* vector) +inline float bgc_fp32_vector2_get_length(const BGC_FP32_Vector2* const vector) { return sqrtf(bgc_fp32_vector2_get_squared_length(vector)); } -inline double bgc_fp64_vector2_get_length(const BGC_FP64_Vector2* vector) +inline double bgc_fp64_vector2_get_length(const BGC_FP64_Vector2* const vector) { return sqrt(bgc_fp64_vector2_get_squared_length(vector)); } // ================= Comparison ================= // -inline int bgc_fp32_vector2_is_zero(const BGC_FP32_Vector2* vector) +inline int bgc_fp32_vector2_is_zero(const BGC_FP32_Vector2* const vector) { return bgc_fp32_vector2_get_squared_length(vector) <= BGC_FP32_SQUARE_EPSILON; } -inline int bgc_fp64_vector2_is_zero(const BGC_FP64_Vector2* vector) +inline int bgc_fp64_vector2_is_zero(const BGC_FP64_Vector2* const vector) { return bgc_fp64_vector2_get_squared_length(vector) <= BGC_FP64_SQUARE_EPSILON; } -inline int bgc_fp32_vector2_is_unit(const BGC_FP32_Vector2* vector) +inline int bgc_fp32_vector2_is_unit(const BGC_FP32_Vector2* const vector) { return bgc_fp32_is_square_unit(bgc_fp32_vector2_get_squared_length(vector)); } -inline int bgc_fp64_vector2_is_unit(const BGC_FP64_Vector2* vector) +inline int bgc_fp64_vector2_is_unit(const BGC_FP64_Vector2* const vector) { return bgc_fp64_is_square_unit(bgc_fp64_vector2_get_squared_length(vector)); } // ==================== Copy ==================== // -inline void bgc_fp32_vector2_copy(BGC_FP32_Vector2* destination, const BGC_FP32_Vector2* source) +inline void bgc_fp32_vector2_copy(BGC_FP32_Vector2* const destination, const BGC_FP32_Vector2* const source) { destination->x1 = source->x1; destination->x2 = source->x2; } -inline void bgc_fp64_vector2_copy(BGC_FP64_Vector2* destination, const BGC_FP64_Vector2* source) +inline void bgc_fp64_vector2_copy(BGC_FP64_Vector2* const destination, const BGC_FP64_Vector2* const source) { destination->x1 = source->x1; destination->x2 = source->x2; @@ -95,7 +95,7 @@ inline void bgc_fp64_vector2_copy(BGC_FP64_Vector2* destination, const BGC_FP64_ // ==================== Swap ==================== // -inline void bgc_fp32_vector2_swap(BGC_FP32_Vector2* vector1, BGC_FP32_Vector2* vector2) +inline void bgc_fp32_vector2_swap(BGC_FP32_Vector2* const vector1, BGC_FP32_Vector2* const vector2) { const float x1 = vector2->x1; const float x2 = vector2->x2; @@ -107,7 +107,7 @@ inline void bgc_fp32_vector2_swap(BGC_FP32_Vector2* vector1, BGC_FP32_Vector2* v vector1->x2 = x2; } -inline void bgc_fp64_vector2_swap(BGC_FP64_Vector2* vector1, BGC_FP64_Vector2* vector2) +inline void bgc_fp64_vector2_swap(BGC_FP64_Vector2* const vector1, BGC_FP64_Vector2* const vector2) { const double x1 = vector2->x1; const double x2 = vector2->x2; @@ -121,13 +121,13 @@ inline void bgc_fp64_vector2_swap(BGC_FP64_Vector2* vector1, BGC_FP64_Vector2* v // ================== Convert =================== // -inline void bgc_fp32_vector2_convert_to_fp64(BGC_FP64_Vector2* destination, const BGC_FP32_Vector2* source) +inline void bgc_fp32_vector2_convert_to_fp64(BGC_FP64_Vector2* const destination, const BGC_FP32_Vector2* const source) { destination->x1 = source->x1; destination->x2 = source->x2; } -inline void bgc_fp64_vector2_convert_to_fp32(BGC_FP32_Vector2* destination, const BGC_FP64_Vector2* source) +inline void bgc_fp64_vector2_convert_to_fp32(BGC_FP32_Vector2* const destination, const BGC_FP64_Vector2* const source) { destination->x1 = (float)source->x1; destination->x2 = (float)source->x2; @@ -135,13 +135,13 @@ inline void bgc_fp64_vector2_convert_to_fp32(BGC_FP32_Vector2* destination, cons // ==================== Add ===================== // -inline void bgc_fp32_vector2_add(BGC_FP32_Vector2* sum, const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline void bgc_fp32_vector2_add(BGC_FP32_Vector2* const sum, const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; } -inline void bgc_fp64_vector2_add(BGC_FP64_Vector2* sum, const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline void bgc_fp64_vector2_add(BGC_FP64_Vector2* const sum, const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; @@ -149,13 +149,13 @@ inline void bgc_fp64_vector2_add(BGC_FP64_Vector2* sum, const BGC_FP64_Vector2* // ================= Add Scaled ================= // -inline void bgc_fp32_vector2_add_scaled(BGC_FP32_Vector2* sum, const BGC_FP32_Vector2* basic_vector, const BGC_FP32_Vector2* scalable_vector, const float scale) +inline void bgc_fp32_vector2_add_scaled(BGC_FP32_Vector2* const sum, const BGC_FP32_Vector2* const basic_vector, const BGC_FP32_Vector2* const scalable_vector, const float scale) { sum->x1 = basic_vector->x1 + scalable_vector->x1 * scale; sum->x2 = basic_vector->x2 + scalable_vector->x2 * scale; } -inline void bgc_fp64_vector2_add_scaled(BGC_FP64_Vector2* sum, const BGC_FP64_Vector2* basic_vector, const BGC_FP64_Vector2* scalable_vector, const double scale) +inline void bgc_fp64_vector2_add_scaled(BGC_FP64_Vector2* const sum, const BGC_FP64_Vector2* const basic_vector, const BGC_FP64_Vector2* const scalable_vector, const double scale) { sum->x1 = basic_vector->x1 + scalable_vector->x1 * scale; sum->x2 = basic_vector->x2 + scalable_vector->x2 * scale; @@ -163,13 +163,13 @@ inline void bgc_fp64_vector2_add_scaled(BGC_FP64_Vector2* sum, const BGC_FP64_Ve // ================== Subtract ================== // -inline void bgc_fp32_vector2_subtract(BGC_FP32_Vector2* difference, const BGC_FP32_Vector2* minuend, const BGC_FP32_Vector2* subtrahend) +inline void bgc_fp32_vector2_subtract(BGC_FP32_Vector2* const difference, const BGC_FP32_Vector2* const minuend, const BGC_FP32_Vector2* const subtrahend) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; } -inline void bgc_fp64_vector2_subtract(BGC_FP64_Vector2* difference, const BGC_FP64_Vector2* minuend, const BGC_FP64_Vector2* subtrahend) +inline void bgc_fp64_vector2_subtract(BGC_FP64_Vector2* const difference, const BGC_FP64_Vector2* const minuend, const BGC_FP64_Vector2* const subtrahend) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; @@ -177,13 +177,13 @@ inline void bgc_fp64_vector2_subtract(BGC_FP64_Vector2* difference, const BGC_FP // ============== Subtract Scaled =============== // -inline void bgc_fp32_vector2_subtract_scaled(BGC_FP32_Vector2* difference, const BGC_FP32_Vector2* basic_vector, const BGC_FP32_Vector2* scalable_vector, const float scale) +inline void bgc_fp32_vector2_subtract_scaled(BGC_FP32_Vector2* const difference, const BGC_FP32_Vector2* const basic_vector, const BGC_FP32_Vector2* const scalable_vector, const float scale) { difference->x1 = basic_vector->x1 - scalable_vector->x1 * scale; difference->x2 = basic_vector->x2 - scalable_vector->x2 * scale; } -inline void bgc_fp64_vector2_subtract_scaled(BGC_FP64_Vector2* difference, const BGC_FP64_Vector2* basic_vector, const BGC_FP64_Vector2* scalable_vector, const double scale) +inline void bgc_fp64_vector2_subtract_scaled(BGC_FP64_Vector2* const difference, const BGC_FP64_Vector2* const basic_vector, const BGC_FP64_Vector2* const scalable_vector, const double scale) { difference->x1 = basic_vector->x1 - scalable_vector->x1 * scale; difference->x2 = basic_vector->x2 - scalable_vector->x2 * scale; @@ -191,13 +191,13 @@ inline void bgc_fp64_vector2_subtract_scaled(BGC_FP64_Vector2* difference, const // ================== Multiply ================== // -inline void bgc_fp32_vector2_multiply_by_real(BGC_FP32_Vector2* product, const BGC_FP32_Vector2* multiplicand, const float multiplier) +inline void bgc_fp32_vector2_multiply_by_real(BGC_FP32_Vector2* const product, const BGC_FP32_Vector2* const multiplicand, const float multiplier) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; } -inline void bgc_fp64_vector2_multiply_by_real(BGC_FP64_Vector2* product, const BGC_FP64_Vector2* multiplicand, const double multiplier) +inline void bgc_fp64_vector2_multiply_by_real(BGC_FP64_Vector2* const product, const BGC_FP64_Vector2* const multiplicand, const double multiplier) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; @@ -205,7 +205,7 @@ inline void bgc_fp64_vector2_multiply_by_real(BGC_FP64_Vector2* product, const B // ============ Left Vector Product ============= // -inline void bgc_fp32_vector2_multiply_by_matrix2x2(BGC_FP32_Vector2* product, const BGC_FP32_Vector2* vector, const BGC_FP32_Matrix2x2* matrix) +inline void bgc_fp32_vector2_multiply_by_matrix2x2(BGC_FP32_Vector2* const product, const BGC_FP32_Vector2* const vector, const BGC_FP32_Matrix2x2* const matrix) { const float x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; const float x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; @@ -214,7 +214,7 @@ inline void bgc_fp32_vector2_multiply_by_matrix2x2(BGC_FP32_Vector2* product, co product->x2 = x2; } -inline void bgc_fp64_vector2_multiply_by_matrix2x2(BGC_FP64_Vector2* product, const BGC_FP64_Vector2* vector, const BGC_FP64_Matrix2x2* matrix) +inline void bgc_fp64_vector2_multiply_by_matrix2x2(BGC_FP64_Vector2* const product, const BGC_FP64_Vector2* const vector, const BGC_FP64_Matrix2x2* const matrix) { const double x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; const double x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; @@ -225,14 +225,14 @@ inline void bgc_fp64_vector2_multiply_by_matrix2x2(BGC_FP64_Vector2* product, co // ============ Left Vector Product ============= // -inline void bgc_fp32_vector2_multiply_by_matrix3x2(BGC_FP32_Vector3* product, const BGC_FP32_Vector2* vector, const BGC_FP32_Matrix3x2* matrix) +inline void bgc_fp32_vector2_multiply_by_matrix3x2(BGC_FP32_Vector3* const product, const BGC_FP32_Vector2* const vector, const BGC_FP32_Matrix3x2* const matrix) { product->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; product->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; product->x3 = vector->x1 * matrix->r1c3 + vector->x2 * matrix->r2c3; } -inline void bgc_fp64_vector2_multiply_by_matrix3x2(BGC_FP64_Vector3* product, const BGC_FP64_Vector2* vector, const BGC_FP64_Matrix3x2* matrix) +inline void bgc_fp64_vector2_multiply_by_matrix3x2(BGC_FP64_Vector3* const product, const BGC_FP64_Vector2* const vector, const BGC_FP64_Matrix3x2* const matrix) { product->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1; product->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2; @@ -241,7 +241,7 @@ inline void bgc_fp64_vector2_multiply_by_matrix3x2(BGC_FP64_Vector3* product, co // =================== Divide =================== // -inline int bgc_fp32_vector2_divide_by_real(BGC_FP32_Vector2* quotient, const BGC_FP32_Vector2* dividend, const float divisor) +inline int bgc_fp32_vector2_divide_by_real(BGC_FP32_Vector2* const quotient, const BGC_FP32_Vector2* const dividend, const float divisor) { if (bgc_fp32_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -252,7 +252,7 @@ inline int bgc_fp32_vector2_divide_by_real(BGC_FP32_Vector2* quotient, const BGC return BGC_SUCCESS; } -inline int bgc_fp64_vector2_divide_by_real(BGC_FP64_Vector2* quotient, const BGC_FP64_Vector2* dividend, const double divisor) +inline int bgc_fp64_vector2_divide_by_real(BGC_FP64_Vector2* const quotient, const BGC_FP64_Vector2* const dividend, const double divisor) { if (bgc_fp64_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -265,13 +265,13 @@ inline int bgc_fp64_vector2_divide_by_real(BGC_FP64_Vector2* quotient, const BGC // ================ Mean of Two ================= // -inline void bgc_fp32_vector2_get_mean2(BGC_FP32_Vector2* mean, const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline void bgc_fp32_vector2_get_mean2(BGC_FP32_Vector2* const mean, const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { mean->x1 = (vector1->x1 + vector2->x1) * 0.5f; mean->x2 = (vector1->x2 + vector2->x2) * 0.5f; } -inline void bgc_fp64_vector2_get_mean2(BGC_FP64_Vector2* mean, const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline void bgc_fp64_vector2_get_mean2(BGC_FP64_Vector2* const mean, const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { mean->x1 = (vector1->x1 + vector2->x1) * 0.5; mean->x2 = (vector1->x2 + vector2->x2) * 0.5; @@ -279,13 +279,13 @@ inline void bgc_fp64_vector2_get_mean2(BGC_FP64_Vector2* mean, const BGC_FP64_Ve // =============== Mean of Three ================ // -inline void bgc_fp32_vector2_get_mean3(BGC_FP32_Vector2* mean, const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2, const BGC_FP32_Vector2* vector3) +inline void bgc_fp32_vector2_get_mean3(BGC_FP32_Vector2* const mean, const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2, const BGC_FP32_Vector2* const vector3) { mean->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * BGC_FP32_ONE_THIRD; mean->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * BGC_FP32_ONE_THIRD; } -inline void bgc_fp64_vector2_get_mean3(BGC_FP64_Vector2* mean, const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2, const BGC_FP64_Vector2* vector3) +inline void bgc_fp64_vector2_get_mean3(BGC_FP64_Vector2* const mean, const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2, const BGC_FP64_Vector2* const vector3) { mean->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * BGC_FP64_ONE_THIRD; mean->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * BGC_FP64_ONE_THIRD; @@ -293,7 +293,7 @@ inline void bgc_fp64_vector2_get_mean3(BGC_FP64_Vector2* mean, const BGC_FP64_Ve // =================== Linear =================== // -inline void bgc_fp32_vector2_interpolate(BGC_FP32_Vector2* interpolation, const BGC_FP32_Vector2* first, const BGC_FP32_Vector2* second, const float phase) +inline void bgc_fp32_vector2_interpolate(BGC_FP32_Vector2* const interpolation, const BGC_FP32_Vector2* const first, const BGC_FP32_Vector2* const second, const float phase) { const float counter_phase = 1.0f - phase; @@ -301,7 +301,7 @@ inline void bgc_fp32_vector2_interpolate(BGC_FP32_Vector2* interpolation, const interpolation->x2 = first->x2 * counter_phase + second->x2 * phase; } -inline void bgc_fp64_vector2_interpolate(BGC_FP64_Vector2* interpolation, const BGC_FP64_Vector2* first, const BGC_FP64_Vector2* second, const double phase) +inline void bgc_fp64_vector2_interpolate(BGC_FP64_Vector2* const interpolation, const BGC_FP64_Vector2* const first, const BGC_FP64_Vector2* const second, const double phase) { const double counter_phase = 1.0 - phase; @@ -311,25 +311,25 @@ inline void bgc_fp64_vector2_interpolate(BGC_FP64_Vector2* interpolation, const // ================== Negative ================== // -inline void bgc_fp32_vector2_revert(BGC_FP32_Vector2* vector) +inline void bgc_fp32_vector2_revert(BGC_FP32_Vector2* const vector) { vector->x1 = -vector->x1; vector->x2 = -vector->x2; } -inline void bgc_fp64_vector2_revert(BGC_FP64_Vector2* vector) +inline void bgc_fp64_vector2_revert(BGC_FP64_Vector2* const vector) { vector->x1 = -vector->x1; vector->x2 = -vector->x2; } -inline void bgc_fp32_vector2_get_reverse(BGC_FP32_Vector2* reverse, const BGC_FP32_Vector2* vector) +inline void bgc_fp32_vector2_get_reverse(BGC_FP32_Vector2* const reverse, const BGC_FP32_Vector2* const vector) { reverse->x1 = -vector->x1; reverse->x2 = -vector->x2; } -inline void bgc_fp64_vector2_get_reverse(BGC_FP64_Vector2* reverse, const BGC_FP64_Vector2* vector) +inline void bgc_fp64_vector2_get_reverse(BGC_FP64_Vector2* const reverse, const BGC_FP64_Vector2* const vector) { reverse->x1 = -vector->x1; reverse->x2 = -vector->x2; @@ -337,7 +337,7 @@ inline void bgc_fp64_vector2_get_reverse(BGC_FP64_Vector2* reverse, const BGC_FP // ================= Normalize ================== // -inline int bgc_fp32_vector2_normalize(BGC_FP32_Vector2* vector) +inline int bgc_fp32_vector2_normalize(BGC_FP32_Vector2* const vector) { const float square_modulus = bgc_fp32_vector2_get_squared_length(vector); @@ -357,7 +357,7 @@ inline int bgc_fp32_vector2_normalize(BGC_FP32_Vector2* vector) return BGC_SUCCESS; } -inline int bgc_fp64_vector2_normalize(BGC_FP64_Vector2* vector) +inline int bgc_fp64_vector2_normalize(BGC_FP64_Vector2* const vector) { const double square_modulus = bgc_fp64_vector2_get_squared_length(vector); @@ -377,7 +377,7 @@ inline int bgc_fp64_vector2_normalize(BGC_FP64_Vector2* vector) return BGC_SUCCESS; } -inline int bgc_fp32_vector2_get_normalized(BGC_FP32_Vector2* normalized, const BGC_FP32_Vector2* vector) +inline int bgc_fp32_vector2_get_normalized(BGC_FP32_Vector2* const normalized, const BGC_FP32_Vector2* const vector) { const float square_modulus = bgc_fp32_vector2_get_squared_length(vector); @@ -395,7 +395,7 @@ inline int bgc_fp32_vector2_get_normalized(BGC_FP32_Vector2* normalized, const B return BGC_SUCCESS; } -inline int bgc_fp64_vector2_get_normalized(BGC_FP64_Vector2* normalized, const BGC_FP64_Vector2* vector) +inline int bgc_fp64_vector2_get_normalized(BGC_FP64_Vector2* const normalized, const BGC_FP64_Vector2* const vector) { const double square_modulus = bgc_fp64_vector2_get_squared_length(vector); @@ -415,37 +415,37 @@ inline int bgc_fp64_vector2_get_normalized(BGC_FP64_Vector2* normalized, const B // ============= Get Scalar Product ============= // -inline float bgc_fp32_vector2_get_dot_product(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline float bgc_fp32_vector2_get_dot_product(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2; } -inline double bgc_fp64_vector2_get_dot_product(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline double bgc_fp64_vector2_get_dot_product(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2; } // ============= Get Cross Product ============== // -inline float bgc_fp32_vector2_get_cross_product(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline float bgc_fp32_vector2_get_cross_product(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { return vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1; } -inline double bgc_fp64_vector2_get_cross_product(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline double bgc_fp64_vector2_get_cross_product(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { return vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1; } // ================= Get Angle ================== // -float bgc_fp32_vector2_get_angle(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2, const int angle_unit); +float bgc_fp32_vector2_get_angle(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2, const int angle_unit); -double bgc_fp64_vector2_get_angle(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2, const int angle_unit); +double bgc_fp64_vector2_get_angle(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2, const int angle_unit); // ============= Get Square Distance ============ // -inline float bgc_fp32_vector2_get_square_distance(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline float bgc_fp32_vector2_get_square_distance(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { const float dx1 = vector1->x1 - vector2->x1; const float dx2 = vector1->x2 - vector2->x2; @@ -453,7 +453,7 @@ inline float bgc_fp32_vector2_get_square_distance(const BGC_FP32_Vector2* vector return dx1 * dx1 + dx2 * dx2; } -inline double bgc_fp64_vector2_get_square_distance(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline double bgc_fp64_vector2_get_square_distance(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { const double dx1 = vector1->x1 - vector2->x1; const double dx2 = vector1->x2 - vector2->x2; @@ -463,31 +463,31 @@ inline double bgc_fp64_vector2_get_square_distance(const BGC_FP64_Vector2* vecto // ================== Distance ================== // -inline float bgc_fp32_vector2_get_distance(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline float bgc_fp32_vector2_get_distance(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { return sqrtf(bgc_fp32_vector2_get_square_distance(vector1, vector2)); } -inline double bgc_fp64_vector2_get_distance(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline double bgc_fp64_vector2_get_distance(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { return sqrt(bgc_fp64_vector2_get_square_distance(vector1, vector2)); } // ============== Are Close Enough ============== // -inline int bgc_fp32_vector2_are_close_enough(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2, const float distance_limit) +inline int bgc_fp32_vector2_are_close_enough(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2, const float distance_limit) { return bgc_fp32_vector2_get_square_distance(vector1, vector2) <= distance_limit * distance_limit; } -inline int bgc_fp64_vector2_are_close_enough(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2, const double distance_limit) +inline int bgc_fp64_vector2_are_close_enough(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2, const double distance_limit) { return bgc_fp64_vector2_get_square_distance(vector1, vector2) <= distance_limit * distance_limit; } // ================== Are Close ================= // -inline int bgc_fp32_vector2_are_close(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline int bgc_fp32_vector2_are_close(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { const float square_modulus1 = bgc_fp32_vector2_get_squared_length(vector1); const float square_modulus2 = bgc_fp32_vector2_get_squared_length(vector2); @@ -500,7 +500,7 @@ inline int bgc_fp32_vector2_are_close(const BGC_FP32_Vector2* vector1, const BGC return square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus1 && square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus2; } -inline int bgc_fp64_vector2_are_close(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline int bgc_fp64_vector2_are_close(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { const double square_modulus1 = bgc_fp64_vector2_get_squared_length(vector1); const double square_modulus2 = bgc_fp64_vector2_get_squared_length(vector2); @@ -516,7 +516,7 @@ inline int bgc_fp64_vector2_are_close(const BGC_FP64_Vector2* vector1, const BGC // ================== Parallel ================== // -inline int bgc_fp32_vector2_are_parallel(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline int bgc_fp32_vector2_are_parallel(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { const float square_modulus1 = bgc_fp32_vector2_get_squared_length(vector1); @@ -535,7 +535,7 @@ inline int bgc_fp32_vector2_are_parallel(const BGC_FP32_Vector2* vector1, const return cross_product * cross_product <= BGC_FP32_SQUARE_EPSILON * square_modulus1 * square_modulus2; } -inline int bgc_fp64_vector2_are_parallel(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline int bgc_fp64_vector2_are_parallel(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { const double square_modulus1 = bgc_fp64_vector2_get_squared_length(vector1); @@ -556,7 +556,7 @@ inline int bgc_fp64_vector2_are_parallel(const BGC_FP64_Vector2* vector1, const // ================= Orthogonal ================= // -inline int bgc_fp32_vector2_are_orthogonal(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline int bgc_fp32_vector2_are_orthogonal(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { const float square_modulus1 = bgc_fp32_vector2_get_squared_length(vector1); @@ -575,7 +575,7 @@ inline int bgc_fp32_vector2_are_orthogonal(const BGC_FP32_Vector2* vector1, cons return scalar_product * scalar_product <= BGC_FP32_SQUARE_EPSILON * square_modulus1 * square_modulus2; } -inline int bgc_fp64_vector2_are_orthogonal(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline int bgc_fp64_vector2_are_orthogonal(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { const double square_modulus1 = bgc_fp64_vector2_get_squared_length(vector1); @@ -597,7 +597,7 @@ inline int bgc_fp64_vector2_are_orthogonal(const BGC_FP64_Vector2* vector1, cons // ================== Attitude ================== // -inline int bgc_fp32_vector2_get_attitude(const BGC_FP32_Vector2* vector1, const BGC_FP32_Vector2* vector2) +inline int bgc_fp32_vector2_get_attitude(const BGC_FP32_Vector2* const vector1, const BGC_FP32_Vector2* const vector2) { const float square_modulus1 = bgc_fp32_vector2_get_squared_length(vector1); const float square_modulus2 = bgc_fp32_vector2_get_squared_length(vector2); @@ -623,7 +623,7 @@ inline int bgc_fp32_vector2_get_attitude(const BGC_FP32_Vector2* vector1, const return scalar_product > 0.0f ? BGC_ATTITUDE_CO_DIRECTIONAL : BGC_ATTITUDE_COUNTER_DIRECTIONAL; } -inline int bgc_fp64_vector2_get_attitude(const BGC_FP64_Vector2* vector1, const BGC_FP64_Vector2* vector2) +inline int bgc_fp64_vector2_get_attitude(const BGC_FP64_Vector2* const vector1, const BGC_FP64_Vector2* const vector2) { const double square_modulus1 = bgc_fp64_vector2_get_squared_length(vector1); const double square_modulus2 = bgc_fp64_vector2_get_squared_length(vector2); diff --git a/basic-geometry/vector3.c b/basic-geometry/vector3.c index a0da396..746bb44 100644 --- a/basic-geometry/vector3.c +++ b/basic-geometry/vector3.c @@ -1,131 +1,124 @@ #include "./vector3.h" -extern inline void bgc_fp32_vector3_reset(BGC_FP32_Vector3* vector); -extern inline void bgc_fp64_vector3_reset(BGC_FP64_Vector3* vector); +extern inline void bgc_fp32_vector3_reset(BGC_FP32_Vector3* const vector); +extern inline void bgc_fp64_vector3_reset(BGC_FP64_Vector3* const vector); -extern inline void bgc_fp32_vector3_make(BGC_FP32_Vector3* destination, const float x1, const float x2, const float x3); -extern inline void bgc_fp64_vector3_make(BGC_FP64_Vector3* destination, const double x1, const double x2, const double x3); +extern inline void bgc_fp32_vector3_make(BGC_FP32_Vector3* const destination, const float x1, const float x2, const float x3); +extern inline void bgc_fp64_vector3_make(BGC_FP64_Vector3* const destination, const double x1, const double x2, const double x3); -extern inline float bgc_fp32_vector3_get_squared_length(const BGC_FP32_Vector3* vector); -extern inline double bgc_fp64_vector3_get_squared_length(const BGC_FP64_Vector3* vector); +extern inline float bgc_fp32_vector3_get_squared_length(const BGC_FP32_Vector3* const vector); +extern inline double bgc_fp64_vector3_get_squared_length(const BGC_FP64_Vector3* const vector); -extern inline float bgc_fp32_vector3_get_length(const BGC_FP32_Vector3* vector); -extern inline double bgc_fp64_vector3_get_length(const BGC_FP64_Vector3* vector); +extern inline float bgc_fp32_vector3_get_length(const BGC_FP32_Vector3* const vector); +extern inline double bgc_fp64_vector3_get_length(const BGC_FP64_Vector3* const vector); -extern inline int bgc_fp32_vector3_is_zero(const BGC_FP32_Vector3* vector); -extern inline int bgc_fp64_vector3_is_zero(const BGC_FP64_Vector3* vector); +extern inline int bgc_fp32_vector3_is_zero(const BGC_FP32_Vector3* const vector); +extern inline int bgc_fp64_vector3_is_zero(const BGC_FP64_Vector3* const vector); -extern inline int bgc_fp32_vector3_is_unit(const BGC_FP32_Vector3* vector); -extern inline int bgc_fp64_vector3_is_unit(const BGC_FP64_Vector3* vector); +extern inline int bgc_fp32_vector3_is_unit(const BGC_FP32_Vector3* const vector); +extern inline int bgc_fp64_vector3_is_unit(const BGC_FP64_Vector3* const vector); -extern inline void bgc_fp32_vector3_copy(BGC_FP32_Vector3* destination, const BGC_FP32_Vector3* source); -extern inline void bgc_fp64_vector3_copy(BGC_FP64_Vector3* destination, const BGC_FP64_Vector3* source); +extern inline void bgc_fp32_vector3_copy(BGC_FP32_Vector3* const destination, const BGC_FP32_Vector3* const source); +extern inline void bgc_fp64_vector3_copy(BGC_FP64_Vector3* const destination, const BGC_FP64_Vector3* const source); -extern inline void bgc_fp32_vector3_convert_to_fp64(BGC_FP64_Vector3* destination, const BGC_FP32_Vector3* source); -extern inline void bgc_fp64_vector3_convert_to_fp32(BGC_FP32_Vector3* destination, const BGC_FP64_Vector3* source); +extern inline void bgc_fp32_vector3_convert_to_fp64(BGC_FP64_Vector3* const destination, const BGC_FP32_Vector3* const source); +extern inline void bgc_fp64_vector3_convert_to_fp32(BGC_FP32_Vector3* const destination, const BGC_FP64_Vector3* const source); -extern inline void bgc_fp32_vector3_swap(BGC_FP32_Vector3* vector1, BGC_FP32_Vector3* vector2); -extern inline void bgc_fp64_vector3_swap(BGC_FP64_Vector3* vector1, BGC_FP64_Vector3* vector2); +extern inline void bgc_fp32_vector3_swap(BGC_FP32_Vector3* const vector1, BGC_FP32_Vector3* const vector2); +extern inline void bgc_fp64_vector3_swap(BGC_FP64_Vector3* const vector1, BGC_FP64_Vector3* const vector2); -extern inline void bgc_fp32_vector3_add(BGC_FP32_Vector3* sum, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline void bgc_fp64_vector3_add(BGC_FP64_Vector3* sum, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline void bgc_fp32_vector3_add(BGC_FP32_Vector3* const sum, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline void bgc_fp64_vector3_add(BGC_FP64_Vector3* const sum, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline void bgc_fp32_vector3_add_scaled(BGC_FP32_Vector3* sum, const BGC_FP32_Vector3* basic_vector, const BGC_FP32_Vector3* scalable_vector, const float scale); -extern inline void bgc_fp64_vector3_add_scaled(BGC_FP64_Vector3* sum, const BGC_FP64_Vector3* basic_vector, const BGC_FP64_Vector3* scalable_vector, const double scale); +extern inline void bgc_fp32_vector3_add_scaled(BGC_FP32_Vector3* const sum, const BGC_FP32_Vector3* const basic_vector, const BGC_FP32_Vector3* const scalable_vector, const float scale); +extern inline void bgc_fp64_vector3_add_scaled(BGC_FP64_Vector3* const sum, const BGC_FP64_Vector3* const basic_vector, const BGC_FP64_Vector3* const scalable_vector, const double scale); -extern inline void bgc_fp32_vector3_subtract(BGC_FP32_Vector3* difference, const BGC_FP32_Vector3* minuend, const BGC_FP32_Vector3* subtrahend); -extern inline void bgc_fp64_vector3_subtract(BGC_FP64_Vector3* difference, const BGC_FP64_Vector3* minuend, const BGC_FP64_Vector3* subtrahend); +extern inline void bgc_fp32_vector3_subtract(BGC_FP32_Vector3* const difference, const BGC_FP32_Vector3* const minuend, const BGC_FP32_Vector3* const subtrahend); +extern inline void bgc_fp64_vector3_subtract(BGC_FP64_Vector3* const difference, const BGC_FP64_Vector3* const minuend, const BGC_FP64_Vector3* const subtrahend); -extern inline void bgc_fp32_vector3_subtract_scaled(BGC_FP32_Vector3* difference, const BGC_FP32_Vector3* basic_vector, const BGC_FP32_Vector3* scalable_vector, const float scale); -extern inline void bgc_fp64_vector3_subtract_scaled(BGC_FP64_Vector3* difference, const BGC_FP64_Vector3* basic_vector, const BGC_FP64_Vector3* scalable_vector, const double scale); +extern inline void bgc_fp32_vector3_subtract_scaled(BGC_FP32_Vector3* const difference, const BGC_FP32_Vector3* const basic_vector, const BGC_FP32_Vector3* const scalable_vector, const float scale); +extern inline void bgc_fp64_vector3_subtract_scaled(BGC_FP64_Vector3* const difference, const BGC_FP64_Vector3* const basic_vector, const BGC_FP64_Vector3* const scalable_vector, const double scale); -extern inline void bgc_fp32_vector3_multiply_by_real(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* multiplicand, const float multiplier); -extern inline void bgc_fp64_vector3_multiply_by_real(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* multiplicand, const double multiplier); +extern inline void bgc_fp32_vector3_multiply_by_real(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const multiplicand, const float multiplier); +extern inline void bgc_fp64_vector3_multiply_by_real(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const multiplicand, const double multiplier); -extern inline void bgc_fp32_vector3_multiply_by_matrix2x3(BGC_FP32_Vector2* product, const BGC_FP32_Vector3* vector, const BGC_FP32_Matrix2x3* matrix); -extern inline void bgc_fp64_vector3_multiply_by_matrix2x3(BGC_FP64_Vector2* product, const BGC_FP64_Vector3* vector, const BGC_FP64_Matrix2x3* matrix); +extern inline void bgc_fp32_vector3_multiply_by_matrix2x3(BGC_FP32_Vector2* const product, const BGC_FP32_Vector3* const vector, const BGC_FP32_Matrix2x3* const matrix); +extern inline void bgc_fp64_vector3_multiply_by_matrix2x3(BGC_FP64_Vector2* const product, const BGC_FP64_Vector3* const vector, const BGC_FP64_Matrix2x3* const matrix); -extern inline void bgc_fp32_vector3_multiply_by_matrix3x3(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector, const BGC_FP32_Matrix3x3* matrix); -extern inline void bgc_fp64_vector3_multiply_by_matrix3x3(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector, const BGC_FP64_Matrix3x3* matrix); +extern inline void bgc_fp32_vector3_multiply_by_matrix3x3(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector, const BGC_FP32_Matrix3x3* const matrix); +extern inline void bgc_fp64_vector3_multiply_by_matrix3x3(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector, const BGC_FP64_Matrix3x3* const matrix); -extern inline int bgc_fp32_vector3_divide_by_real(BGC_FP32_Vector3* quotient, const BGC_FP32_Vector3* dividend, const float divisor); -extern inline int bgc_fp64_vector3_divide_by_real(BGC_FP64_Vector3* quotient, const BGC_FP64_Vector3* dividend, const double divisor); +extern inline int bgc_fp32_vector3_divide_by_real(BGC_FP32_Vector3* const quotient, const BGC_FP32_Vector3* const dividend, const float divisor); +extern inline int bgc_fp64_vector3_divide_by_real(BGC_FP64_Vector3* const quotient, const BGC_FP64_Vector3* const dividend, const double divisor); -extern inline void bgc_fp32_vector3_get_mean2(BGC_FP32_Vector3* mean, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline void bgc_fp64_vector3_get_mean2(BGC_FP64_Vector3* mean, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline void bgc_fp32_vector3_get_mean2(BGC_FP32_Vector3* const mean, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline void bgc_fp64_vector3_get_mean2(BGC_FP64_Vector3* const mean, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline void bgc_fp32_vector3_get_mean3(BGC_FP32_Vector3* mean, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3); -extern inline void bgc_fp64_vector3_get_mean3(BGC_FP64_Vector3* mean, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3); +extern inline void bgc_fp32_vector3_get_mean3(BGC_FP32_Vector3* const mean, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3); +extern inline void bgc_fp64_vector3_get_mean3(BGC_FP64_Vector3* const mean, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3); -extern inline void bgc_fp32_vector3_interpolate(BGC_FP32_Vector3* interpolation, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const float phase); -extern inline void bgc_fp64_vector3_interpolate(BGC_FP64_Vector3* interpolation, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const double phase); +extern inline void bgc_fp32_vector3_interpolate(BGC_FP32_Vector3* const interpolation, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const float phase); +extern inline void bgc_fp64_vector3_interpolate(BGC_FP64_Vector3* const interpolation, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const double phase); -extern inline void bgc_fp32_vector3_revert(BGC_FP32_Vector3* vector); -extern inline void bgc_fp64_vector3_revert(BGC_FP64_Vector3* vector); +extern inline void bgc_fp32_vector3_revert(BGC_FP32_Vector3* const vector); +extern inline void bgc_fp64_vector3_revert(BGC_FP64_Vector3* const vector); -extern inline void bgc_fp32_vector3_get_reverse(BGC_FP32_Vector3* reverse, const BGC_FP32_Vector3* vector); -extern inline void bgc_fp64_vector3_get_reverse(BGC_FP64_Vector3* reverse, const BGC_FP64_Vector3* vector); +extern inline void bgc_fp32_vector3_get_reverse(BGC_FP32_Vector3* const reverse, const BGC_FP32_Vector3* const vector); +extern inline void bgc_fp64_vector3_get_reverse(BGC_FP64_Vector3* const reverse, const BGC_FP64_Vector3* const vector); -extern inline int bgc_fp32_vector3_normalize(BGC_FP32_Vector3* vector); -extern inline int bgc_fp64_vector3_normalize(BGC_FP64_Vector3* vector); +extern inline int bgc_fp32_vector3_normalize(BGC_FP32_Vector3* const vector); +extern inline int bgc_fp64_vector3_normalize(BGC_FP64_Vector3* const vector); -extern inline int bgc_fp32_vector3_get_normalized(BGC_FP32_Vector3* normalized, const BGC_FP32_Vector3* vector); -extern inline int bgc_fp64_vector3_get_normalized(BGC_FP64_Vector3* normalized, const BGC_FP64_Vector3* vector); +extern inline int bgc_fp32_vector3_get_normalized(BGC_FP32_Vector3* const normalized, const BGC_FP32_Vector3* const vector); +extern inline int bgc_fp64_vector3_get_normalized(BGC_FP64_Vector3* const normalized, const BGC_FP64_Vector3* const vector); -extern inline float bgc_fp32_vector3_get_dot_product(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline double bgc_fp64_vector3_get_dot_product(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline float bgc_fp32_vector3_get_dot_product(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline double bgc_fp64_vector3_get_dot_product(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline float bgc_fp32_vector3_get_triple_product(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3); -extern inline double bgc_fp64_vector3_get_triple_product(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3); +extern inline float bgc_fp32_vector3_get_triple_product(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3); +extern inline double bgc_fp64_vector3_get_triple_product(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3); -extern inline void _bgc_fp32_restrict_vector3_get_cross_product(BGC_FP32_Vector3* restrict product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline void _bgc_fp64_restrict_vector3_get_cross_product(BGC_FP64_Vector3* restrict product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline void _bgc_fp32_restrict_vector3_get_cross_product(BGC_FP32_Vector3* restrict const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline void _bgc_fp64_restrict_vector3_get_cross_product(BGC_FP64_Vector3* restrict const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline void bgc_fp32_vector3_get_cross_product(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline void bgc_fp64_vector3_get_cross_product(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline void bgc_fp32_vector3_get_cross_product(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline void bgc_fp64_vector3_get_cross_product(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline void bgc_fp32_vector3_get_double_cross(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3); -extern inline void bgc_fp64_vector3_get_double_cross(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3); +extern inline void bgc_fp32_vector3_get_double_cross(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3); +extern inline void bgc_fp64_vector3_get_double_cross(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3); -extern inline void bgc_fp32_vector3_get_alternative_double_cross(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3); -extern inline void bgc_fp64_vector3_get_alternative_double_cross(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3); +extern inline void bgc_fp32_vector3_get_alternative_double_cross(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3); +extern inline void bgc_fp64_vector3_get_alternative_double_cross(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3); -extern inline float bgc_fp32_vector3_get_square_distance(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline double bgc_fp64_vector3_get_square_distance(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline float bgc_fp32_vector3_get_square_distance(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline double bgc_fp64_vector3_get_square_distance(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline float bgc_fp32_vector3_get_distance(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline double bgc_fp64_vector3_get_distance(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline float bgc_fp32_vector3_get_distance(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline double bgc_fp64_vector3_get_distance(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline int bgc_fp32_vector3_are_close_enough(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const float distance); -extern inline int bgc_fp64_vector3_are_close_enough(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const double distance); +extern inline int bgc_fp32_vector3_are_close_enough(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const float distance); +extern inline int bgc_fp64_vector3_are_close_enough(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const double distance); -extern inline int bgc_fp32_vector3_are_close(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline int bgc_fp64_vector3_are_close(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline int bgc_fp32_vector3_are_close(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline int bgc_fp64_vector3_are_close(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline int bgc_fp32_vector3_are_parallel(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline int bgc_fp64_vector3_are_parallel(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline int bgc_fp32_vector3_are_parallel(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline int bgc_fp64_vector3_are_parallel(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline int bgc_fp32_vector3_are_orthogonal(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline int bgc_fp64_vector3_are_orthogonal(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline int bgc_fp32_vector3_are_orthogonal(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline int bgc_fp64_vector3_are_orthogonal(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); -extern inline int bgc_fp32_vector3_get_attitude(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2); -extern inline int bgc_fp64_vector3_get_attitude(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2); +extern inline int bgc_fp32_vector3_get_attitude(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); +extern inline int bgc_fp64_vector3_get_attitude(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); // =================== Angle ==================== // -float bgc_fp32_vector3_get_angle(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const int angle_unit) +float bgc_fp32_vector3_get_angle(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const int angle_unit) { const float square_modulus1 = bgc_fp32_vector3_get_squared_length(vector1); + const float square_modulus2 = bgc_fp32_vector3_get_squared_length(vector2); - // square_modulus1 != square_modulus1 is check for NaN value at square_modulus1 - if (square_modulus1 <= BGC_FP32_SQUARE_EPSILON || square_modulus1 != square_modulus1) { - return 0.0f; - } - - const float square_modulus2 = bgc_fp32_vector3_get_squared_length(vector2); - - // square_modulus2 != square_modulus2 is check for NaN value at square_modulus2 - if (square_modulus2 <= BGC_FP32_SQUARE_EPSILON || square_modulus2 != square_modulus2) { + if (square_modulus1 <= BGC_FP32_SQUARE_EPSILON || square_modulus2 <= BGC_FP32_SQUARE_EPSILON || isnan(square_modulus1) || isnan(square_modulus2)) { return 0.0f; } @@ -140,19 +133,13 @@ float bgc_fp32_vector3_get_angle(const BGC_FP32_Vector3* vector1, const BGC_FP32 return bgc_fp32_radians_to_units(atan2f(cross, scalar), angle_unit); } -double bgc_fp64_vector3_get_angle(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const int angle_unit) +double bgc_fp64_vector3_get_angle(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const int angle_unit) { const double square_modulus1 = bgc_fp64_vector3_get_squared_length(vector1); + const double square_modulus2 = bgc_fp64_vector3_get_squared_length(vector2); + - // square_modulus1 != square_modulus1 is check for NaN value at square_modulus1 - if (square_modulus1 <= BGC_FP64_SQUARE_EPSILON || square_modulus1 != square_modulus1) { - return 0.0; - } - - const double square_modulus2 = bgc_fp64_vector3_get_squared_length(vector2); - - // square_modulus2 != square_modulus2 is check for NaN value at square_modulus2 - if (square_modulus2 <= BGC_FP64_SQUARE_EPSILON || square_modulus2 != square_modulus2) { + if (square_modulus1 <= BGC_FP64_SQUARE_EPSILON || square_modulus2 <= BGC_FP64_SQUARE_EPSILON || isnan(square_modulus1) || isnan(square_modulus2)) { return 0.0; } @@ -165,4 +152,63 @@ double bgc_fp64_vector3_get_angle(const BGC_FP64_Vector3* vector1, const BGC_FP6 const double cross = bgc_fp64_vector3_get_length(&cross_product); return bgc_fp64_radians_to_units(atan2(cross, scalar), angle_unit); -} +} + +// ================== Attitude ================== // + +int bgc_fp32_vector3_get_attitude(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) +{ + const float square_modulus1 = bgc_fp32_vector3_get_squared_length(vector1); + const float square_modulus2 = bgc_fp32_vector3_get_squared_length(vector2); + + if (square_modulus1 <= BGC_FP32_SQUARE_EPSILON || square_modulus2 <= BGC_FP32_SQUARE_EPSILON) { + return BGC_ATTITUDE_ZERO; + } + + const float square_limit = BGC_FP32_SQUARE_EPSILON * square_modulus1 * square_modulus2; + + const float scalar_product = bgc_fp32_vector3_get_dot_product(vector1, vector2); + + if (scalar_product * scalar_product <= square_limit) { + return BGC_ATTITUDE_ORTHOGONAL; + } + + BGC_FP32_Vector3 product; + + _bgc_fp32_restrict_vector3_get_cross_product(&product, vector1, vector2); + + if (bgc_fp32_vector3_get_squared_length(&product) > square_limit) { + return BGC_ATTITUDE_ANY; + } + + return scalar_product > 0.0f ? BGC_ATTITUDE_CO_DIRECTIONAL : BGC_ATTITUDE_COUNTER_DIRECTIONAL; +} + +int bgc_fp64_vector3_get_attitude(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) +{ + const double square_modulus1 = bgc_fp64_vector3_get_squared_length(vector1); + const double square_modulus2 = bgc_fp64_vector3_get_squared_length(vector2); + + if (square_modulus1 <= BGC_FP64_SQUARE_EPSILON || square_modulus2 <= BGC_FP64_SQUARE_EPSILON) { + return BGC_ATTITUDE_ZERO; + } + + const double square_limit = BGC_FP64_SQUARE_EPSILON * square_modulus1 * square_modulus2; + + const double scalar_product = bgc_fp64_vector3_get_dot_product(vector1, vector2); + + if (scalar_product * scalar_product <= square_limit) { + return BGC_ATTITUDE_ORTHOGONAL; + } + + BGC_FP64_Vector3 product; + + _bgc_fp64_restrict_vector3_get_cross_product(&product, vector1, vector2); + + if (bgc_fp64_vector3_get_squared_length(&product) > square_limit) { + return BGC_ATTITUDE_ANY; + } + + return scalar_product > 0.0 ? BGC_ATTITUDE_CO_DIRECTIONAL : BGC_ATTITUDE_COUNTER_DIRECTIONAL; +} + diff --git a/basic-geometry/vector3.h b/basic-geometry/vector3.h index 476dbcf..ef72dde 100644 --- a/basic-geometry/vector3.h +++ b/basic-geometry/vector3.h @@ -9,14 +9,14 @@ // =================== Reset ==================== // -inline void bgc_fp32_vector3_reset(BGC_FP32_Vector3* vector) +inline void bgc_fp32_vector3_reset(BGC_FP32_Vector3* const vector) { vector->x1 = 0.0f; vector->x2 = 0.0f; vector->x3 = 0.0f; } -inline void bgc_fp64_vector3_reset(BGC_FP64_Vector3* vector) +inline void bgc_fp64_vector3_reset(BGC_FP64_Vector3* const vector) { vector->x1 = 0.0; vector->x2 = 0.0; @@ -25,14 +25,14 @@ inline void bgc_fp64_vector3_reset(BGC_FP64_Vector3* vector) // ==================== Set ===================== // -inline void bgc_fp32_vector3_make(BGC_FP32_Vector3* destination, const float x1, const float x2, const float x3) +inline void bgc_fp32_vector3_make(BGC_FP32_Vector3* const destination, const float x1, const float x2, const float x3) { destination->x1 = x1; destination->x2 = x2; destination->x3 = x3; } -inline void bgc_fp64_vector3_make(BGC_FP64_Vector3* destination, const double x1, const double x2, const double x3) +inline void bgc_fp64_vector3_make(BGC_FP64_Vector3* const destination, const double x1, const double x2, const double x3) { destination->x1 = x1; destination->x2 = x2; @@ -41,58 +41,58 @@ inline void bgc_fp64_vector3_make(BGC_FP64_Vector3* destination, const double x1 // ================== Modulus =================== // -inline float bgc_fp32_vector3_get_squared_length(const BGC_FP32_Vector3* vector) +inline float bgc_fp32_vector3_get_squared_length(const BGC_FP32_Vector3* const vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2 + vector->x3 * vector->x3; } -inline double bgc_fp64_vector3_get_squared_length(const BGC_FP64_Vector3* vector) +inline double bgc_fp64_vector3_get_squared_length(const BGC_FP64_Vector3* const vector) { return vector->x1 * vector->x1 + vector->x2 * vector->x2 + vector->x3 * vector->x3; } -inline float bgc_fp32_vector3_get_length(const BGC_FP32_Vector3* vector) +inline float bgc_fp32_vector3_get_length(const BGC_FP32_Vector3* const vector) { return sqrtf(bgc_fp32_vector3_get_squared_length(vector)); } -inline double bgc_fp64_vector3_get_length(const BGC_FP64_Vector3* vector) +inline double bgc_fp64_vector3_get_length(const BGC_FP64_Vector3* const vector) { return sqrt(bgc_fp64_vector3_get_squared_length(vector)); } // ================= Comparison ================= // -inline int bgc_fp32_vector3_is_zero(const BGC_FP32_Vector3* vector) +inline int bgc_fp32_vector3_is_zero(const BGC_FP32_Vector3* const vector) { return bgc_fp32_vector3_get_squared_length(vector) <= BGC_FP32_SQUARE_EPSILON; } -inline int bgc_fp64_vector3_is_zero(const BGC_FP64_Vector3* vector) +inline int bgc_fp64_vector3_is_zero(const BGC_FP64_Vector3* const vector) { return bgc_fp64_vector3_get_squared_length(vector) <= BGC_FP64_SQUARE_EPSILON; } -inline int bgc_fp32_vector3_is_unit(const BGC_FP32_Vector3* vector) +inline int bgc_fp32_vector3_is_unit(const BGC_FP32_Vector3* const vector) { return bgc_fp32_is_square_unit(bgc_fp32_vector3_get_squared_length(vector)); } -inline int bgc_fp64_vector3_is_unit(const BGC_FP64_Vector3* vector) +inline int bgc_fp64_vector3_is_unit(const BGC_FP64_Vector3* const vector) { return bgc_fp64_is_square_unit(bgc_fp64_vector3_get_squared_length(vector)); } // ==================== Copy ==================== // -inline void bgc_fp32_vector3_copy(BGC_FP32_Vector3* destination, const BGC_FP32_Vector3* source) +inline void bgc_fp32_vector3_copy(BGC_FP32_Vector3* const destination, const BGC_FP32_Vector3* const source) { destination->x1 = source->x1; destination->x2 = source->x2; destination->x3 = source->x3; } -inline void bgc_fp64_vector3_copy(BGC_FP64_Vector3* destination, const BGC_FP64_Vector3* source) +inline void bgc_fp64_vector3_copy(BGC_FP64_Vector3* const destination, const BGC_FP64_Vector3* const source) { destination->x1 = source->x1; destination->x2 = source->x2; @@ -101,7 +101,7 @@ inline void bgc_fp64_vector3_copy(BGC_FP64_Vector3* destination, const BGC_FP64_ // ==================== Swap ==================== // -inline void bgc_fp32_vector3_swap(BGC_FP32_Vector3* vector1, BGC_FP32_Vector3* vector2) +inline void bgc_fp32_vector3_swap(BGC_FP32_Vector3* const vector1, BGC_FP32_Vector3* const vector2) { const float x1 = vector2->x1; const float x2 = vector2->x2; @@ -116,7 +116,7 @@ inline void bgc_fp32_vector3_swap(BGC_FP32_Vector3* vector1, BGC_FP32_Vector3* v vector1->x3 = x3; } -inline void bgc_fp64_vector3_swap(BGC_FP64_Vector3* vector1, BGC_FP64_Vector3* vector2) +inline void bgc_fp64_vector3_swap(BGC_FP64_Vector3* const vector1, BGC_FP64_Vector3* const vector2) { const double x1 = vector2->x1; const double x2 = vector2->x2; @@ -133,14 +133,14 @@ inline void bgc_fp64_vector3_swap(BGC_FP64_Vector3* vector1, BGC_FP64_Vector3* v // ================== Convert =================== // -inline void bgc_fp32_vector3_convert_to_fp64(BGC_FP64_Vector3* destination, const BGC_FP32_Vector3* source) +inline void bgc_fp32_vector3_convert_to_fp64(BGC_FP64_Vector3* const destination, const BGC_FP32_Vector3* const source) { destination->x1 = source->x1; destination->x2 = source->x2; destination->x3 = source->x3; } -inline void bgc_fp64_vector3_convert_to_fp32(BGC_FP32_Vector3* destination, const BGC_FP64_Vector3* source) +inline void bgc_fp64_vector3_convert_to_fp32(BGC_FP32_Vector3* const destination, const BGC_FP64_Vector3* const source) { destination->x1 = (float)source->x1; destination->x2 = (float)source->x2; @@ -149,14 +149,14 @@ inline void bgc_fp64_vector3_convert_to_fp32(BGC_FP32_Vector3* destination, cons // ==================== Add ===================== // -inline void bgc_fp32_vector3_add(BGC_FP32_Vector3* sum, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline void bgc_fp32_vector3_add(BGC_FP32_Vector3* const sum, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; sum->x3 = vector1->x3 + vector2->x3; } -inline void bgc_fp64_vector3_add(BGC_FP64_Vector3* sum, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline void bgc_fp64_vector3_add(BGC_FP64_Vector3* const sum, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { sum->x1 = vector1->x1 + vector2->x1; sum->x2 = vector1->x2 + vector2->x2; @@ -165,14 +165,14 @@ inline void bgc_fp64_vector3_add(BGC_FP64_Vector3* sum, const BGC_FP64_Vector3* // ================= Add scaled ================= // -inline void bgc_fp32_vector3_add_scaled(BGC_FP32_Vector3* sum, const BGC_FP32_Vector3* basic_vector, const BGC_FP32_Vector3* scalable_vector, const float scale) +inline void bgc_fp32_vector3_add_scaled(BGC_FP32_Vector3* const sum, const BGC_FP32_Vector3* const basic_vector, const BGC_FP32_Vector3* const scalable_vector, const float scale) { sum->x1 = basic_vector->x1 + scalable_vector->x1 * scale; sum->x2 = basic_vector->x2 + scalable_vector->x2 * scale; sum->x3 = basic_vector->x3 + scalable_vector->x3 * scale; } -inline void bgc_fp64_vector3_add_scaled(BGC_FP64_Vector3* sum, const BGC_FP64_Vector3* basic_vector, const BGC_FP64_Vector3* scalable_vector, const double scale) +inline void bgc_fp64_vector3_add_scaled(BGC_FP64_Vector3* const sum, const BGC_FP64_Vector3* const basic_vector, const BGC_FP64_Vector3* const scalable_vector, const double scale) { sum->x1 = basic_vector->x1 + scalable_vector->x1 * scale; sum->x2 = basic_vector->x2 + scalable_vector->x2 * scale; @@ -181,14 +181,14 @@ inline void bgc_fp64_vector3_add_scaled(BGC_FP64_Vector3* sum, const BGC_FP64_Ve // ================== Subtract ================== // -inline void bgc_fp32_vector3_subtract(BGC_FP32_Vector3* difference, const BGC_FP32_Vector3* minuend, const BGC_FP32_Vector3* subtrahend) +inline void bgc_fp32_vector3_subtract(BGC_FP32_Vector3* const difference, const BGC_FP32_Vector3* const minuend, const BGC_FP32_Vector3* const subtrahend) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; difference->x3 = minuend->x3 - subtrahend->x3; } -inline void bgc_fp64_vector3_subtract(BGC_FP64_Vector3* difference, const BGC_FP64_Vector3* minuend, const BGC_FP64_Vector3* subtrahend) +inline void bgc_fp64_vector3_subtract(BGC_FP64_Vector3* const difference, const BGC_FP64_Vector3* const minuend, const BGC_FP64_Vector3* const subtrahend) { difference->x1 = minuend->x1 - subtrahend->x1; difference->x2 = minuend->x2 - subtrahend->x2; @@ -197,14 +197,14 @@ inline void bgc_fp64_vector3_subtract(BGC_FP64_Vector3* difference, const BGC_FP // ============== Subtract Scaled =============== // -inline void bgc_fp32_vector3_subtract_scaled(BGC_FP32_Vector3* difference, const BGC_FP32_Vector3* basic_vector, const BGC_FP32_Vector3* scalable_vector, const float scale) +inline void bgc_fp32_vector3_subtract_scaled(BGC_FP32_Vector3* const difference, const BGC_FP32_Vector3* const basic_vector, const BGC_FP32_Vector3* const scalable_vector, const float scale) { difference->x1 = basic_vector->x1 - scalable_vector->x1 * scale; difference->x2 = basic_vector->x2 - scalable_vector->x2 * scale; difference->x3 = basic_vector->x3 - scalable_vector->x3 * scale; } -inline void bgc_fp64_vector3_subtract_scaled(BGC_FP64_Vector3* difference, const BGC_FP64_Vector3* basic_vector, const BGC_FP64_Vector3* scalable_vector, const double scale) +inline void bgc_fp64_vector3_subtract_scaled(BGC_FP64_Vector3* const difference, const BGC_FP64_Vector3* const basic_vector, const BGC_FP64_Vector3* const scalable_vector, const double scale) { difference->x1 = basic_vector->x1 - scalable_vector->x1 * scale; difference->x2 = basic_vector->x2 - scalable_vector->x2 * scale; @@ -213,14 +213,14 @@ inline void bgc_fp64_vector3_subtract_scaled(BGC_FP64_Vector3* difference, const // ================== Multiply ================== // -inline void bgc_fp32_vector3_multiply_by_real(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* multiplicand, const float multiplier) +inline void bgc_fp32_vector3_multiply_by_real(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const multiplicand, const float multiplier) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; product->x3 = multiplicand->x3 * multiplier; } -inline void bgc_fp64_vector3_multiply_by_real(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* multiplicand, const double multiplier) +inline void bgc_fp64_vector3_multiply_by_real(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const multiplicand, const double multiplier) { product->x1 = multiplicand->x1 * multiplier; product->x2 = multiplicand->x2 * multiplier; @@ -229,13 +229,13 @@ inline void bgc_fp64_vector3_multiply_by_real(BGC_FP64_Vector3* product, const B // ============ Left Vector Product ============= // -inline void bgc_fp32_vector3_multiply_by_matrix2x3(BGC_FP32_Vector2* product, const BGC_FP32_Vector3* vector, const BGC_FP32_Matrix2x3* matrix) +inline void bgc_fp32_vector3_multiply_by_matrix2x3(BGC_FP32_Vector2* const product, const BGC_FP32_Vector3* const vector, const BGC_FP32_Matrix2x3* const matrix) { product->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; product->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; } -inline void bgc_fp64_vector3_multiply_by_matrix2x3(BGC_FP64_Vector2* product, const BGC_FP64_Vector3* vector, const BGC_FP64_Matrix2x3* matrix) +inline void bgc_fp64_vector3_multiply_by_matrix2x3(BGC_FP64_Vector2* const product, const BGC_FP64_Vector3* const vector, const BGC_FP64_Matrix2x3* const matrix) { product->x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; product->x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; @@ -243,7 +243,7 @@ inline void bgc_fp64_vector3_multiply_by_matrix2x3(BGC_FP64_Vector2* product, co // ============ Left Vector Product ============= // -inline void bgc_fp32_vector3_multiply_by_matrix3x3(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector, const BGC_FP32_Matrix3x3* matrix) +inline void bgc_fp32_vector3_multiply_by_matrix3x3(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector, const BGC_FP32_Matrix3x3* const matrix) { const float x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; const float x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; @@ -254,7 +254,7 @@ inline void bgc_fp32_vector3_multiply_by_matrix3x3(BGC_FP32_Vector3* product, co product->x3 = x3; } -inline void bgc_fp64_vector3_multiply_by_matrix3x3(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector, const BGC_FP64_Matrix3x3* matrix) +inline void bgc_fp64_vector3_multiply_by_matrix3x3(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector, const BGC_FP64_Matrix3x3* const matrix) { const double x1 = vector->x1 * matrix->r1c1 + vector->x2 * matrix->r2c1 + vector->x3 * matrix->r3c1; const double x2 = vector->x1 * matrix->r1c2 + vector->x2 * matrix->r2c2 + vector->x3 * matrix->r3c2; @@ -267,7 +267,7 @@ inline void bgc_fp64_vector3_multiply_by_matrix3x3(BGC_FP64_Vector3* product, co // =================== Divide =================== // -inline int bgc_fp32_vector3_divide_by_real(BGC_FP32_Vector3* quotient, const BGC_FP32_Vector3* dividend, const float divisor) +inline int bgc_fp32_vector3_divide_by_real(BGC_FP32_Vector3* const quotient, const BGC_FP32_Vector3* const dividend, const float divisor) { if (bgc_fp32_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -278,7 +278,7 @@ inline int bgc_fp32_vector3_divide_by_real(BGC_FP32_Vector3* quotient, const BGC return BGC_SUCCESS; } -inline int bgc_fp64_vector3_divide_by_real(BGC_FP64_Vector3* quotient, const BGC_FP64_Vector3* dividend, const double divisor) +inline int bgc_fp64_vector3_divide_by_real(BGC_FP64_Vector3* const quotient, const BGC_FP64_Vector3* const dividend, const double divisor) { if (bgc_fp64_is_zero(divisor) || isnan(divisor)) { return BGC_FAILURE; @@ -291,14 +291,14 @@ inline int bgc_fp64_vector3_divide_by_real(BGC_FP64_Vector3* quotient, const BGC // ================== Average2 ================== // -inline void bgc_fp32_vector3_get_mean2(BGC_FP32_Vector3* mean, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline void bgc_fp32_vector3_get_mean2(BGC_FP32_Vector3* const mean, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { mean->x1 = (vector1->x1 + vector2->x1) * 0.5f; mean->x2 = (vector1->x2 + vector2->x2) * 0.5f; mean->x3 = (vector1->x3 + vector2->x3) * 0.5f; } -inline void bgc_fp64_vector3_get_mean2(BGC_FP64_Vector3* mean, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline void bgc_fp64_vector3_get_mean2(BGC_FP64_Vector3* const mean, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { mean->x1 = (vector1->x1 + vector2->x1) * 0.5; mean->x2 = (vector1->x2 + vector2->x2) * 0.5; @@ -307,14 +307,14 @@ inline void bgc_fp64_vector3_get_mean2(BGC_FP64_Vector3* mean, const BGC_FP64_Ve // ================== Average3 ================== // -inline void bgc_fp32_vector3_get_mean3(BGC_FP32_Vector3* mean, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3) +inline void bgc_fp32_vector3_get_mean3(BGC_FP32_Vector3* const mean, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3) { mean->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * BGC_FP32_ONE_THIRD; mean->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * BGC_FP32_ONE_THIRD; mean->x3 = (vector1->x3 + vector2->x3 + vector3->x3) * BGC_FP32_ONE_THIRD; } -inline void bgc_fp64_vector3_get_mean3(BGC_FP64_Vector3* mean, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3) +inline void bgc_fp64_vector3_get_mean3(BGC_FP64_Vector3* const mean, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3) { mean->x1 = (vector1->x1 + vector2->x1 + vector3->x1) * BGC_FP64_ONE_THIRD; mean->x2 = (vector1->x2 + vector2->x2 + vector3->x2) * BGC_FP64_ONE_THIRD; @@ -323,7 +323,7 @@ inline void bgc_fp64_vector3_get_mean3(BGC_FP64_Vector3* mean, const BGC_FP64_Ve // =================== Linear =================== // -inline void bgc_fp32_vector3_interpolate(BGC_FP32_Vector3* interpolation, const BGC_FP32_Vector3* first, const BGC_FP32_Vector3* second, const float phase) +inline void bgc_fp32_vector3_interpolate(BGC_FP32_Vector3* const interpolation, const BGC_FP32_Vector3* const first, const BGC_FP32_Vector3* const second, const float phase) { const float counter_phase = 1.0f - phase; @@ -332,7 +332,7 @@ inline void bgc_fp32_vector3_interpolate(BGC_FP32_Vector3* interpolation, const interpolation->x3 = first->x3 * counter_phase + second->x3 * phase; } -inline void bgc_fp64_vector3_interpolate(BGC_FP64_Vector3* interpolation, const BGC_FP64_Vector3* first, const BGC_FP64_Vector3* second, const double phase) +inline void bgc_fp64_vector3_interpolate(BGC_FP64_Vector3* const interpolation, const BGC_FP64_Vector3* const first, const BGC_FP64_Vector3* const second, const double phase) { const double counter_phase = 1.0 - phase; @@ -343,28 +343,28 @@ inline void bgc_fp64_vector3_interpolate(BGC_FP64_Vector3* interpolation, const // ================== Negative ================== // -inline void bgc_fp32_vector3_revert(BGC_FP32_Vector3* vector) +inline void bgc_fp32_vector3_revert(BGC_FP32_Vector3* const vector) { vector->x1 = -vector->x1; vector->x2 = -vector->x2; vector->x3 = -vector->x3; } -inline void bgc_fp64_vector3_revert(BGC_FP64_Vector3* vector) +inline void bgc_fp64_vector3_revert(BGC_FP64_Vector3* const vector) { vector->x1 = -vector->x1; vector->x2 = -vector->x2; vector->x3 = -vector->x3; } -inline void bgc_fp32_vector3_get_reverse(BGC_FP32_Vector3* reverse, const BGC_FP32_Vector3* vector) +inline void bgc_fp32_vector3_get_reverse(BGC_FP32_Vector3* const reverse, const BGC_FP32_Vector3* const vector) { reverse->x1 = -vector->x1; reverse->x2 = -vector->x2; reverse->x3 = -vector->x3; } -inline void bgc_fp64_vector3_get_reverse(BGC_FP64_Vector3* reverse, const BGC_FP64_Vector3* vector) +inline void bgc_fp64_vector3_get_reverse(BGC_FP64_Vector3* const reverse, const BGC_FP64_Vector3* const vector) { reverse->x1 = -vector->x1; reverse->x2 = -vector->x2; @@ -373,7 +373,7 @@ inline void bgc_fp64_vector3_get_reverse(BGC_FP64_Vector3* reverse, const BGC_FP // ================= Normalize ================== // -inline int bgc_fp32_vector3_normalize(BGC_FP32_Vector3* vector) +inline int bgc_fp32_vector3_normalize(BGC_FP32_Vector3* const vector) { const float square_modulus = bgc_fp32_vector3_get_squared_length(vector); @@ -394,7 +394,7 @@ inline int bgc_fp32_vector3_normalize(BGC_FP32_Vector3* vector) return BGC_SUCCESS; } -inline int bgc_fp64_vector3_normalize(BGC_FP64_Vector3* vector) +inline int bgc_fp64_vector3_normalize(BGC_FP64_Vector3* const vector) { const double square_modulus = bgc_fp64_vector3_get_squared_length(vector); @@ -415,7 +415,7 @@ inline int bgc_fp64_vector3_normalize(BGC_FP64_Vector3* vector) return BGC_SUCCESS; } -inline int bgc_fp32_vector3_get_normalized(BGC_FP32_Vector3* normalized, const BGC_FP32_Vector3* vector) +inline int bgc_fp32_vector3_get_normalized(BGC_FP32_Vector3* const normalized, const BGC_FP32_Vector3* const vector) { const float square_modulus = bgc_fp32_vector3_get_squared_length(vector); @@ -433,7 +433,7 @@ inline int bgc_fp32_vector3_get_normalized(BGC_FP32_Vector3* normalized, const B return BGC_SUCCESS; } -inline int bgc_fp64_vector3_get_normalized(BGC_FP64_Vector3* normalized, const BGC_FP64_Vector3* vector) +inline int bgc_fp64_vector3_get_normalized(BGC_FP64_Vector3* const normalized, const BGC_FP64_Vector3* const vector) { const double square_modulus = bgc_fp64_vector3_get_squared_length(vector); @@ -453,26 +453,26 @@ inline int bgc_fp64_vector3_get_normalized(BGC_FP64_Vector3* normalized, const B // =============== Scalar Product =============== // -inline float bgc_fp32_vector3_get_dot_product(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline float bgc_fp32_vector3_get_dot_product(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2 + vector1->x3 * vector2->x3; } -inline double bgc_fp64_vector3_get_dot_product(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline double bgc_fp64_vector3_get_dot_product(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { return vector1->x1 * vector2->x1 + vector1->x2 * vector2->x2 + vector1->x3 * vector2->x3; } // =============== Triple Product =============== // -inline float bgc_fp32_vector3_get_triple_product(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3) +inline float bgc_fp32_vector3_get_triple_product(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3) { return vector1->x1 * (vector2->x2 * vector3->x3 - vector2->x3 * vector3->x2) + vector1->x2 * (vector2->x3 * vector3->x1 - vector2->x1 * vector3->x3) + vector1->x3 * (vector2->x1 * vector3->x2 - vector2->x2 * vector3->x1); } -inline double bgc_fp64_vector3_get_triple_product(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3) +inline double bgc_fp64_vector3_get_triple_product(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3) { return vector1->x1 * (vector2->x2 * vector3->x3 - vector2->x3 * vector3->x2) + vector1->x2 * (vector2->x3 * vector3->x1 - vector2->x1 * vector3->x3) @@ -481,14 +481,14 @@ inline double bgc_fp64_vector3_get_triple_product(const BGC_FP64_Vector3* vector // =========== Restrict Cross Product =========== // -inline void _bgc_fp32_restrict_vector3_get_cross_product(BGC_FP32_Vector3* restrict product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline void _bgc_fp32_restrict_vector3_get_cross_product(BGC_FP32_Vector3* restrict const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { product->x1 = vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2; product->x2 = vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3; product->x3 = vector1->x1 * vector2->x2 - vector1->x2 * vector2->x1; } -inline void _bgc_fp64_restrict_vector3_get_cross_product(BGC_FP64_Vector3* restrict product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline void _bgc_fp64_restrict_vector3_get_cross_product(BGC_FP64_Vector3* restrict const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { product->x1 = vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2; product->x2 = vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3; @@ -497,7 +497,7 @@ inline void _bgc_fp64_restrict_vector3_get_cross_product(BGC_FP64_Vector3* restr // =============== Cross Product ================ // -inline void bgc_fp32_vector3_get_cross_product(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline void bgc_fp32_vector3_get_cross_product(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { const float x1 = vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2; const float x2 = vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3; @@ -508,7 +508,7 @@ inline void bgc_fp32_vector3_get_cross_product(BGC_FP32_Vector3* product, const product->x3 = x3; } -inline void bgc_fp64_vector3_get_cross_product(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline void bgc_fp64_vector3_get_cross_product(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { const double x1 = vector1->x2 * vector2->x3 - vector1->x3 * vector2->x2; const double x2 = vector1->x3 * vector2->x1 - vector1->x1 * vector2->x3; @@ -522,7 +522,7 @@ inline void bgc_fp64_vector3_get_cross_product(BGC_FP64_Vector3* product, const // ============ Double Cross Product ============ // // [a x [b x c]] = b * (a, c) - c * (a, b) -inline void bgc_fp32_vector3_get_double_cross(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3) +inline void bgc_fp32_vector3_get_double_cross(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3) { const float ac = bgc_fp32_vector3_get_dot_product(vector1, vector3); const float ab = bgc_fp32_vector3_get_dot_product(vector1, vector2); @@ -533,7 +533,7 @@ inline void bgc_fp32_vector3_get_double_cross(BGC_FP32_Vector3* product, const B } // [a x [b x c]] = b * (a, c) - c * (a, b) -inline void bgc_fp64_vector3_get_double_cross(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3) +inline void bgc_fp64_vector3_get_double_cross(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3) { const double ac = bgc_fp64_vector3_get_dot_product(vector1, vector3); const double ab = bgc_fp64_vector3_get_dot_product(vector1, vector2); @@ -546,7 +546,7 @@ inline void bgc_fp64_vector3_get_double_cross(BGC_FP64_Vector3* product, const B // ====== Alternative Double Cross Product ====== // // [[a x b] x c] = - [c x [a x b]] = -(a * (c, b) - b * (c, a)) = b * (a, c) - a * (b, c) -inline void bgc_fp32_vector3_get_alternative_double_cross(BGC_FP32_Vector3* product, const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const BGC_FP32_Vector3* vector3) +inline void bgc_fp32_vector3_get_alternative_double_cross(BGC_FP32_Vector3* const product, const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const BGC_FP32_Vector3* const vector3) { const float ac = bgc_fp32_vector3_get_dot_product(vector1, vector3); const float bc = bgc_fp32_vector3_get_dot_product(vector2, vector3); @@ -557,7 +557,7 @@ inline void bgc_fp32_vector3_get_alternative_double_cross(BGC_FP32_Vector3* prod } // [[a x b] x c] = - [c x [a x b]] = -(a * (b, c) - b * (a, c)) = b * (a, c) - a * (b, c) -inline void bgc_fp64_vector3_get_alternative_double_cross(BGC_FP64_Vector3* product, const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const BGC_FP64_Vector3* vector3) +inline void bgc_fp64_vector3_get_alternative_double_cross(BGC_FP64_Vector3* const product, const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const BGC_FP64_Vector3* const vector3) { const double ac = bgc_fp64_vector3_get_dot_product(vector1, vector3); const double bc = bgc_fp64_vector3_get_dot_product(vector2, vector3); @@ -569,13 +569,13 @@ inline void bgc_fp64_vector3_get_alternative_double_cross(BGC_FP64_Vector3* prod // =================== Angle ==================== // -float bgc_fp32_vector3_get_angle(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const int angle_unit); +float bgc_fp32_vector3_get_angle(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const int angle_unit); -double bgc_fp64_vector3_get_angle(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const int angle_unit); +double bgc_fp64_vector3_get_angle(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const int angle_unit); // =============== Square Distance ============== // -inline float bgc_fp32_vector3_get_square_distance(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline float bgc_fp32_vector3_get_square_distance(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { const float dx1 = (vector1->x1 - vector2->x1); const float dx2 = (vector1->x2 - vector2->x2); @@ -584,7 +584,7 @@ inline float bgc_fp32_vector3_get_square_distance(const BGC_FP32_Vector3* vector return dx1 * dx1 + dx2 * dx2 + dx3 * dx3; } -inline double bgc_fp64_vector3_get_square_distance(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline double bgc_fp64_vector3_get_square_distance(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { const double dx1 = (vector1->x1 - vector2->x1); const double dx2 = (vector1->x2 - vector2->x2); @@ -595,31 +595,31 @@ inline double bgc_fp64_vector3_get_square_distance(const BGC_FP64_Vector3* vecto // ================== Distance ================== // -inline float bgc_fp32_vector3_get_distance(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline float bgc_fp32_vector3_get_distance(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { return sqrtf(bgc_fp32_vector3_get_square_distance(vector1, vector2)); } -inline double bgc_fp64_vector3_get_distance(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline double bgc_fp64_vector3_get_distance(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { return sqrt(bgc_fp64_vector3_get_square_distance(vector1, vector2)); } // ============== Are Close Enough ============== // -inline int bgc_fp32_vector3_are_close_enough(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2, const float distance_limit) +inline int bgc_fp32_vector3_are_close_enough(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2, const float distance_limit) { return bgc_fp32_vector3_get_square_distance(vector1, vector2) <= distance_limit * distance_limit; } -inline int bgc_fp64_vector3_are_close_enough(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2, const double distance_limit) +inline int bgc_fp64_vector3_are_close_enough(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2, const double distance_limit) { return bgc_fp64_vector3_get_square_distance(vector1, vector2) <= distance_limit * distance_limit; } // ================== Are Close ================= // -inline int bgc_fp32_vector3_are_close(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline int bgc_fp32_vector3_are_close(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { const float square_modulus1 = bgc_fp32_vector3_get_squared_length(vector1); const float square_modulus2 = bgc_fp32_vector3_get_squared_length(vector2); @@ -632,7 +632,7 @@ inline int bgc_fp32_vector3_are_close(const BGC_FP32_Vector3* vector1, const BGC return square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus1 && square_distance <= BGC_FP32_SQUARE_EPSILON * square_modulus2; } -inline int bgc_fp64_vector3_are_close(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline int bgc_fp64_vector3_are_close(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { const double square_modulus1 = bgc_fp64_vector3_get_squared_length(vector1); const double square_modulus2 = bgc_fp64_vector3_get_squared_length(vector2); @@ -647,7 +647,7 @@ inline int bgc_fp64_vector3_are_close(const BGC_FP64_Vector3* vector1, const BGC // ================== Parallel ================== // -inline int bgc_fp32_vector3_are_parallel(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline int bgc_fp32_vector3_are_parallel(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { const float square_modulus1 = bgc_fp32_vector3_get_squared_length(vector1); const float square_modulus2 = bgc_fp32_vector3_get_squared_length(vector2); @@ -663,7 +663,7 @@ inline int bgc_fp32_vector3_are_parallel(const BGC_FP32_Vector3* vector1, const return bgc_fp32_vector3_get_squared_length(&product) <= BGC_FP32_SQUARE_EPSILON * square_modulus1 * square_modulus2; } -inline int bgc_fp64_vector3_are_parallel(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline int bgc_fp64_vector3_are_parallel(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { const double square_modulus1 = bgc_fp64_vector3_get_squared_length(vector1); const double square_modulus2 = bgc_fp64_vector3_get_squared_length(vector2); @@ -681,7 +681,7 @@ inline int bgc_fp64_vector3_are_parallel(const BGC_FP64_Vector3* vector1, const // ================= Orthogonal ================= // -inline int bgc_fp32_vector3_are_orthogonal(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) +inline int bgc_fp32_vector3_are_orthogonal(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2) { const float square_modulus1 = bgc_fp32_vector3_get_squared_length(vector1); const float square_modulus2 = bgc_fp32_vector3_get_squared_length(vector2); @@ -695,7 +695,7 @@ inline int bgc_fp32_vector3_are_orthogonal(const BGC_FP32_Vector3* vector1, cons return scalar_product * scalar_product <= BGC_FP32_SQUARE_EPSILON * square_modulus1 * square_modulus2; } -inline int bgc_fp64_vector3_are_orthogonal(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) +inline int bgc_fp64_vector3_are_orthogonal(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2) { const double square_modulus1 = bgc_fp64_vector3_get_squared_length(vector1); const double square_modulus2 = bgc_fp64_vector3_get_squared_length(vector2); @@ -711,60 +711,8 @@ inline int bgc_fp64_vector3_are_orthogonal(const BGC_FP64_Vector3* vector1, cons // ================== Attitude ================== // -inline int bgc_fp32_vector3_get_attitude(const BGC_FP32_Vector3* vector1, const BGC_FP32_Vector3* vector2) -{ - const float square_modulus1 = bgc_fp32_vector3_get_squared_length(vector1); - const float square_modulus2 = bgc_fp32_vector3_get_squared_length(vector2); +int bgc_fp32_vector3_get_attitude(const BGC_FP32_Vector3* const vector1, const BGC_FP32_Vector3* const vector2); - if (square_modulus1 <= BGC_FP32_SQUARE_EPSILON || square_modulus2 <= BGC_FP32_SQUARE_EPSILON) { - return BGC_ATTITUDE_ZERO; - } - - const float square_limit = BGC_FP32_SQUARE_EPSILON * square_modulus1 * square_modulus2; - - const float scalar_product = bgc_fp32_vector3_get_dot_product(vector1, vector2); - - if (scalar_product * scalar_product <= square_limit) { - return BGC_ATTITUDE_ORTHOGONAL; - } - - BGC_FP32_Vector3 product; - - _bgc_fp32_restrict_vector3_get_cross_product(&product, vector1, vector2); - - if (bgc_fp32_vector3_get_squared_length(&product) > square_limit) { - return BGC_ATTITUDE_ANY; - } - - return scalar_product > 0.0f ? BGC_ATTITUDE_CO_DIRECTIONAL : BGC_ATTITUDE_COUNTER_DIRECTIONAL; -} - -inline int bgc_fp64_vector3_get_attitude(const BGC_FP64_Vector3* vector1, const BGC_FP64_Vector3* vector2) -{ - const double square_modulus1 = bgc_fp64_vector3_get_squared_length(vector1); - const double square_modulus2 = bgc_fp64_vector3_get_squared_length(vector2); - - if (square_modulus1 <= BGC_FP64_SQUARE_EPSILON || square_modulus2 <= BGC_FP64_SQUARE_EPSILON) { - return BGC_ATTITUDE_ZERO; - } - - const double square_limit = BGC_FP64_SQUARE_EPSILON * square_modulus1 * square_modulus2; - - const double scalar_product = bgc_fp64_vector3_get_dot_product(vector1, vector2); - - if (scalar_product * scalar_product <= square_limit) { - return BGC_ATTITUDE_ORTHOGONAL; - } - - BGC_FP64_Vector3 product; - - _bgc_fp64_restrict_vector3_get_cross_product(&product, vector1, vector2); - - if (bgc_fp64_vector3_get_squared_length(&product) > square_limit) { - return BGC_ATTITUDE_ANY; - } - - return scalar_product > 0.0 ? BGC_ATTITUDE_CO_DIRECTIONAL : BGC_ATTITUDE_COUNTER_DIRECTIONAL; -} +int bgc_fp64_vector3_get_attitude(const BGC_FP64_Vector3* const vector1, const BGC_FP64_Vector3* const vector2); #endif