Переход на парадигму Destination first в порядке параметров функий

This commit is contained in:
Andrey Pokidov 2026-02-01 23:42:51 +07:00
parent f7e41645fe
commit 03627f4401
41 changed files with 1570 additions and 1978 deletions

View file

@ -7,8 +7,8 @@ extern inline void bgc_fp64_quaternion_reset(BGC_FP64_Quaternion* 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(const float s0, const float x1, const float x2, const float x3, BGC_FP32_Quaternion* quaternion);
extern inline void bgc_fp64_quaternion_make(const double s0, const double x1, const double x2, const double x3, BGC_FP64_Quaternion* 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 float bgc_fp32_quaternion_get_square_modulus(const BGC_FP32_Quaternion* quaternion);
extern inline double bgc_fp64_quaternion_get_square_modulus(const BGC_FP64_Quaternion* quaternion);
@ -22,84 +22,84 @@ extern inline int bgc_fp64_quaternion_is_zero(const BGC_FP64_Quaternion* quatern
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 void bgc_fp32_quaternion_copy(const BGC_FP32_Quaternion* source, BGC_FP32_Quaternion* destination);
extern inline void bgc_fp64_quaternion_copy(const BGC_FP64_Quaternion* source, BGC_FP64_Quaternion* destination);
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_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_fp64_quaternion_convert_to_fp32(const BGC_FP64_Quaternion* source, BGC_FP32_Quaternion* destination);
extern inline void bgc_fp32_quaternion_convert_to_fp64(const BGC_FP32_Quaternion* source, BGC_FP64_Quaternion* destination);
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_add(const BGC_FP32_Quaternion* quaternion1, const BGC_FP32_Quaternion* quaternion2, BGC_FP32_Quaternion* sum);
extern inline void bgc_fp64_quaternion_add(const BGC_FP64_Quaternion* quaternion1, const BGC_FP64_Quaternion* quaternion2, BGC_FP64_Quaternion* sum);
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_scaled(const BGC_FP32_Quaternion* basic_quaternion, const BGC_FP32_Quaternion* scalable_quaternion, const float scale, BGC_FP32_Quaternion* sum);
extern inline void bgc_fp64_quaternion_add_scaled(const BGC_FP64_Quaternion* basic_quaternion, const BGC_FP64_Quaternion* scalable_quaternion, const double scale, BGC_FP64_Quaternion* sum);
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_subtract(const BGC_FP32_Quaternion* minuend, const BGC_FP32_Quaternion* subtrahend, BGC_FP32_Quaternion* difference);
extern inline void bgc_fp64_quaternion_subtract(const BGC_FP64_Quaternion* minuend, const BGC_FP64_Quaternion* subtrahend, BGC_FP64_Quaternion* difference);
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_get_product(const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right, BGC_FP32_Quaternion* product);
extern inline void bgc_fp64_quaternion_get_product(const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right, BGC_FP64_Quaternion* product);
extern inline void bgc_fp32_quaternion_get_product(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* left, const BGC_FP32_Quaternion* right);
extern inline void bgc_fp64_quaternion_get_product(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* left, const BGC_FP64_Quaternion* right);
extern inline void bgc_fp32_quaternion_multiply(const BGC_FP32_Quaternion* multiplicand, const float multipier, BGC_FP32_Quaternion* product);
extern inline void bgc_fp64_quaternion_multiply(const BGC_FP64_Quaternion* multiplicand, const double multipier, BGC_FP64_Quaternion* product);
extern inline void bgc_fp32_quaternion_multiply(BGC_FP32_Quaternion* product, const BGC_FP32_Quaternion* multiplicand, const float multipier);
extern inline void bgc_fp64_quaternion_multiply(BGC_FP64_Quaternion* product, const BGC_FP64_Quaternion* multiplicand, const double multipier);
extern inline int bgc_fp32_quaternion_get_ratio(const BGC_FP32_Quaternion* divident, const BGC_FP32_Quaternion* divisor, BGC_FP32_Quaternion* quotient);
extern inline int bgc_fp64_quaternion_get_ratio(const BGC_FP64_Quaternion* divident, const BGC_FP64_Quaternion* divisor, BGC_FP64_Quaternion* quotient);
extern inline int bgc_fp32_quaternion_get_ratio(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* divident, const BGC_FP32_Quaternion* divisor);
extern inline int bgc_fp64_quaternion_get_ratio(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* divident, const BGC_FP64_Quaternion* divisor);
extern inline void bgc_fp32_quaternion_divide(const BGC_FP32_Quaternion* dividend, const float divisor, BGC_FP32_Quaternion* quotient);
extern inline void bgc_fp64_quaternion_divide(const BGC_FP64_Quaternion* dividend, const double divisor, BGC_FP64_Quaternion* quotient);
extern inline void bgc_fp32_quaternion_divide(BGC_FP32_Quaternion* quotient, const BGC_FP32_Quaternion* dividend, const float divisor);
extern inline void bgc_fp64_quaternion_divide(BGC_FP64_Quaternion* quotient, const BGC_FP64_Quaternion* dividend, const double divisor);
extern inline void bgc_fp32_quaternion_get_mean2(const BGC_FP32_Quaternion* vector1, const BGC_FP32_Quaternion* vector2, BGC_FP32_Quaternion* mean);
extern inline void bgc_fp64_quaternion_get_mean2(const BGC_FP64_Quaternion* vector1, const BGC_FP64_Quaternion* vector2, BGC_FP64_Quaternion* mean);
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_mean3(const BGC_FP32_Quaternion* vector1, const BGC_FP32_Quaternion* vector2, const BGC_FP32_Quaternion* vector3, BGC_FP32_Quaternion* mean);
extern inline void bgc_fp64_quaternion_get_mean3(const BGC_FP64_Quaternion* vector1, const BGC_FP64_Quaternion* vector2, const BGC_FP64_Quaternion* vector3, BGC_FP64_Quaternion* mean);
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_interpolate(const BGC_FP32_Quaternion* vector1, const BGC_FP32_Quaternion* vector2, const float phase, BGC_FP32_Quaternion* interpolation);
extern inline void bgc_fp64_quaternion_interpolate(const BGC_FP64_Quaternion* vector1, const BGC_FP64_Quaternion* vector2, const double phase, BGC_FP64_Quaternion* interpolation);
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_conjugate(BGC_FP32_Quaternion* quaternion);
extern inline void bgc_fp64_quaternion_conjugate(BGC_FP64_Quaternion* quaternion);
extern inline void bgc_fp32_quaternion_get_conjugate(const BGC_FP32_Quaternion* quaternion, BGC_FP32_Quaternion* conjugate);
extern inline void bgc_fp64_quaternion_get_conjugate(const BGC_FP64_Quaternion* quaternion, BGC_FP64_Quaternion* conjugate);
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_revert(BGC_FP32_Quaternion* quaternion);
extern inline void bgc_fp64_quaternion_revert(BGC_FP64_Quaternion* quaternion);
extern inline void bgc_fp32_quaternion_get_reverse(const BGC_FP32_Quaternion* quaternion, BGC_FP32_Quaternion* opposite);
extern inline void bgc_fp64_quaternion_get_reverse(const BGC_FP64_Quaternion* quaternion, BGC_FP64_Quaternion* opposite);
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 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_get_inverse(const BGC_FP32_Quaternion* quaternion, BGC_FP32_Quaternion* inverse);
extern inline int bgc_fp64_quaternion_get_inverse(const BGC_FP64_Quaternion* quaternion, BGC_FP64_Quaternion* inverse);
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_normalize(BGC_FP32_Quaternion* quaternion);
extern inline int bgc_fp64_quaternion_normalize(BGC_FP64_Quaternion* quaternion);
extern inline int bgc_fp32_quaternion_get_normalized(const BGC_FP32_Quaternion* quaternion, BGC_FP32_Quaternion* normalized);
extern inline int bgc_fp64_quaternion_get_normalized(const BGC_FP64_Quaternion* quaternion, BGC_FP64_Quaternion* normalized);
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_rotation_matrix(const BGC_FP32_Quaternion* quaternion, BGC_FP32_Matrix3x3* rotation);
extern inline int bgc_fp64_quaternion_get_rotation_matrix(const BGC_FP64_Quaternion* quaternion, BGC_FP64_Matrix3x3* rotation);
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_reverse_matrix(const BGC_FP32_Quaternion* quaternion, BGC_FP32_Matrix3x3* reverse);
extern inline int bgc_fp64_quaternion_get_reverse_matrix(const BGC_FP64_Quaternion* quaternion, BGC_FP64_Matrix3x3* reverse);
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_both_matrices(const BGC_FP32_Quaternion* quaternion, BGC_FP32_Matrix3x3* rotation, BGC_FP32_Matrix3x3* reverse);
extern inline int bgc_fp64_quaternion_get_both_matrices(const BGC_FP64_Quaternion* quaternion, BGC_FP64_Matrix3x3* rotation, BGC_FP64_Matrix3x3* reverse);
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_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);
// =============== Get Exponation =============== //
int bgc_fp32_quaternion_get_exponation(const BGC_FP32_Quaternion* base, const float exponent, BGC_FP32_Quaternion* power)
int bgc_fp32_quaternion_get_exponation(BGC_FP32_Quaternion* power, const BGC_FP32_Quaternion* base, const float exponent)
{
const float s0s0 = base->s0 * base->s0;
const float x1x1 = base->x1 * base->x1;
@ -140,7 +140,7 @@ int bgc_fp32_quaternion_get_exponation(const BGC_FP32_Quaternion* base, const fl
return 1;
}
int bgc_fp64_quaternion_get_exponation(const BGC_FP64_Quaternion* base, const double exponent, BGC_FP64_Quaternion* power)
int bgc_fp64_quaternion_get_exponation(BGC_FP64_Quaternion* power, const BGC_FP64_Quaternion* base, const double exponent)
{
const double s0s0 = base->s0 * base->s0;
const double x1x1 = base->x1 * base->x1;