Добавление новых функций, возвращение функций subtract_scaled

This commit is contained in:
Andrey Pokidov 2026-02-15 23:41:01 +07:00
parent 727961ad98
commit 1075624d05
26 changed files with 836 additions and 292 deletions

View file

@ -24,7 +24,7 @@
<ClInclude Include="angle.h" /> <ClInclude Include="angle.h" />
<ClInclude Include="basic-geometry.h" /> <ClInclude Include="basic-geometry.h" />
<ClInclude Include="complex.h" /> <ClInclude Include="complex.h" />
<ClInclude Include="dual-scalar.h" /> <ClInclude Include="dual-number.h" />
<ClInclude Include="dual-quaternion.h" /> <ClInclude Include="dual-quaternion.h" />
<ClInclude Include="dual-vector3.h" /> <ClInclude Include="dual-vector3.h" />
<ClInclude Include="matrix2x2.h" /> <ClInclude Include="matrix2x2.h" />
@ -47,7 +47,7 @@
<ClCompile Include="affine3.c" /> <ClCompile Include="affine3.c" />
<ClCompile Include="angle.c" /> <ClCompile Include="angle.c" />
<ClInclude Include="complex.c" /> <ClInclude Include="complex.c" />
<ClCompile Include="dual-scalar.c" /> <ClCompile Include="dual-number.c" />
<ClCompile Include="dual-quaternion.c" /> <ClCompile Include="dual-quaternion.c" />
<ClCompile Include="dual-vector3.c" /> <ClCompile Include="dual-vector3.c" />
<ClCompile Include="position2.c" /> <ClCompile Include="position2.c" />

View file

@ -78,7 +78,7 @@
<ClInclude Include="turn3.h"> <ClInclude Include="turn3.h">
<Filter>Файлы заголовков</Filter> <Filter>Файлы заголовков</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="dual-scalar.h"> <ClInclude Include="dual-number.h">
<Filter>Файлы заголовков</Filter> <Filter>Файлы заголовков</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="slerp3.h"> <ClInclude Include="slerp3.h">
@ -137,7 +137,7 @@
<ClCompile Include="turn3.c"> <ClCompile Include="turn3.c">
<Filter>Исходные файлы</Filter> <Filter>Исходные файлы</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="dual-scalar.c"> <ClCompile Include="dual-number.c">
<Filter>Исходные файлы</Filter> <Filter>Исходные файлы</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="slerp3.c"> <ClCompile Include="slerp3.c">

View file

@ -60,6 +60,9 @@ extern inline void bgc_fp64_complex_add_scaled(BGC_FP64_Complex* sum, const BGC_
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_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_fp64_complex_subtract(BGC_FP64_Complex* difference, const BGC_FP64_Complex* minuend, const BGC_FP64_Complex* 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_multiply_by_real(BGC_FP32_Complex* product, const BGC_FP32_Complex* multiplicand, const float multiplier); 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_fp64_complex_multiply_by_real(BGC_FP64_Complex* product, const BGC_FP64_Complex* multiplicand, const double multiplier);

View file

@ -337,7 +337,7 @@ inline void bgc_fp64_complex_add(BGC_FP64_Complex* sum, const BGC_FP64_Complex*
sum->imaginary = number1->imaginary + number2->imaginary; sum->imaginary = number1->imaginary + number2->imaginary;
} }
// ================= Add scaled ================= // // ================= 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* sum, const BGC_FP32_Complex* basic_number, const BGC_FP32_Complex* scalable_number, const float scale)
{ {
@ -365,6 +365,20 @@ inline void bgc_fp64_complex_subtract(BGC_FP64_Complex* difference, const BGC_FP
difference->imaginary = minuend->imaginary - subtrahend->imaginary; difference->imaginary = minuend->imaginary - subtrahend->imaginary;
} }
// ============== 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)
{
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)
{
difference->real = basic_number->real - scalable_number->real * scale;
difference->imaginary = basic_number->imaginary - scalable_number->imaginary * scale;
}
// ========== Multiply By Real Number =========== // // ========== 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* product, const BGC_FP32_Complex* multiplicand, const float multiplier)

View file

@ -0,0 +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_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_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_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_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_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_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 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_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 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_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_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_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_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_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_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_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_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 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_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_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 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_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_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);

View file

Internal server error - Personal Git Server: Beyond coding. We Forge.

500

Internal server error

Forgejo version: 11.0.1+gitea-1.22.0

@ -8,13 +8,13 @@
// =================== Reset ==================== // // =================== Reset ==================== //
inline void bgc_fp32_dual_scalar_reset(BGC_FP32_DualScalar* number) inline void bgc_fp32_dual_number_reset(BGC_FP32_DualNumber* number)
{ {
number->real_part = 0.0f; number->real_part = 0.0f;
number->dual_part = 0.0f; number->dual_part = 0.0f;
} }
inline void bgc_fp64_dual_scalar_reset(BGC_FP64_DualScalar* number) inline void bgc_fp64_dual_number_reset(BGC_FP64_DualNumber* number)
{ {
number->real_part = 0.0; number->real_part = 0.0;
number->dual_part = 0.0; number->dual_part = 0.0;
@ -22,13 +22,13 @@ inline void bgc_fp64_dual_scalar_reset(BGC_FP64_DualScalar* number)
// ==================== Make ==================== // // ==================== Make ==================== //
inline void bgc_fp32_dual_scalar_make(BGC_FP32_DualScalar* number, const float real_part, const float dual_part) inline void bgc_fp32_dual_number_make(BGC_FP32_DualNumber* number, const float real_part, const float dual_part)
{ {
number->real_part = real_part; number->real_part = real_part;
number->dual_part = dual_part; number->dual_part = dual_part;
} }
inline void bgc_fp64_dual_scalar_make(BGC_FP64_DualScalar* number, const double real_part, const double dual_part) inline void bgc_fp64_dual_number_make(BGC_FP64_DualNumber* number, const double real_part, const double dual_part)
{ {
number->real_part = real_part; number->real_part = real_part;
number->dual_part = dual_part; number->dual_part = dual_part;
@ -36,13 +36,13 @@ inline void bgc_fp64_dual_scalar_make(BGC_FP64_DualScalar* number, const double
// ==================== Copy ==================== // // ==================== Copy ==================== //
inline void bgc_fp32_dual_scalar_copy(BGC_FP32_DualScalar* destination, const BGC_FP32_DualScalar* source) inline void bgc_fp32_dual_number_copy(BGC_FP32_DualNumber* destination, const BGC_FP32_DualNumber* source)
{ {
destination->real_part = source->real_part; destination->real_part = source->real_part;
destination->dual_part = source->dual_part; destination->dual_part = source->dual_part;
} }
inline void bgc_fp64_dual_scalar_copy(BGC_FP64_DualScalar* destination, const BGC_FP64_DualScalar* source) inline void bgc_fp64_dual_number_copy(BGC_FP64_DualNumber* destination, const BGC_FP64_DualNumber* source)
{ {
destination->real_part = source->real_part; destination->real_part = source->real_part;
destination->dual_part = source->dual_part; destination->dual_part = source->dual_part;
@ -50,27 +50,39 @@ inline void bgc_fp64_dual_scalar_copy(BGC_FP64_DualScalar* destination, const BG
// ==================== Swap ==================== // // ==================== Swap ==================== //
inline void bgc_fp32_dual_scalar_swap(BGC_FP32_DualScalar* first, BGC_FP32_DualScalar* second) inline void bgc_fp32_dual_number_swap(BGC_FP32_DualNumber* first, BGC_FP32_DualNumber* second)
{ {
first->real_part = second->real_part; first->real_part = second->real_part;
first->dual_part = second->dual_part; first->dual_part = second->dual_part;
} }
inline void bgc_fp64_dual_scalar_swap(BGC_FP64_DualScalar* first, BGC_FP64_DualScalar* second) inline void bgc_fp64_dual_number_swap(BGC_FP64_DualNumber* first, BGC_FP64_DualNumber* second)
{ {
first->real_part = second->real_part; first->real_part = second->real_part;
first->dual_part = second->dual_part; first->dual_part = second->dual_part;
} }
// ================== Modulus =================== //
inline double bgc_fp32_dual_number_get_modulus(const BGC_FP32_DualNumber* number)
{
return fabsf(number->real_part);
}
inline double bgc_fp64_dual_number_get_modulus(const BGC_FP64_DualNumber* number)
{
return fabs(number->real_part);
}
// ================== Convert =================== // // ================== Convert =================== //
inline void bgc_fp64_dual_scalar_convert_to_fp32(BGC_FP32_DualScalar* first, BGC_FP64_DualScalar* second) inline void bgc_fp64_dual_number_convert_to_fp32(BGC_FP32_DualNumber* first, BGC_FP64_DualNumber* second)
{ {
first->real_part = (float) second->real_part; first->real_part = (float) second->real_part;
first->dual_part = (float) second->dual_part; first->dual_part = (float) second->dual_part;
} }
inline void bgc_fp32_dual_scalar_convert_to_fp64(BGC_FP64_DualScalar* first, BGC_FP32_DualScalar* second) inline void bgc_fp32_dual_number_convert_to_fp64(BGC_FP64_DualNumber* first, BGC_FP32_DualNumber* second)
{ {
first->real_part = second->real_part; first->real_part = second->real_part;
first->dual_part = second->dual_part; first->dual_part = second->dual_part;
@ -78,13 +90,13 @@ inline void bgc_fp32_dual_scalar_convert_to_fp64(BGC_FP64_DualScalar* first, BGC
// =================== Revert =================== // // =================== Revert =================== //
inline void bgc_fp32_dual_scalar_revert(BGC_FP32_DualScalar* number) inline void bgc_fp32_dual_number_revert(BGC_FP32_DualNumber* number)
{ {
number->real_part = -number->real_part; number->real_part = -number->real_part;
number->dual_part = -number->dual_part; number->dual_part = -number->dual_part;
} }
inline void bgc_fp64_dual_scalar_revert(BGC_FP64_DualScalar* number) inline void bgc_fp64_dual_number_revert(BGC_FP64_DualNumber* number)
{ {
number->real_part = -number->real_part; number->real_part = -number->real_part;
number->dual_part = -number->dual_part; number->dual_part = -number->dual_part;
@ -92,39 +104,103 @@ inline void bgc_fp64_dual_scalar_revert(BGC_FP64_DualScalar* number)
// ================ Get Reverse ================= // // ================ Get Reverse ================= //
inline void bgc_fp32_number_get_reverse(BGC_FP32_DualScalar* reverse, const BGC_FP32_DualScalar* number) inline void bgc_fp32_dual_number_get_reverse(BGC_FP32_DualNumber* reverse, const BGC_FP32_DualNumber* number)
{ {
reverse->real_part = -number->real_part; reverse->real_part = -number->real_part;
reverse->dual_part = -number->dual_part; reverse->dual_part = -number->dual_part;
} }
inline void bgc_fp64_number_get_reverse(BGC_FP64_DualScalar* reverse, const BGC_FP64_DualScalar* number) inline void bgc_fp64_dual_number_get_reverse(BGC_FP64_DualNumber* reverse, const BGC_FP64_DualNumber* number)
{ {
reverse->real_part = -number->real_part; reverse->real_part = -number->real_part;
reverse->dual_part = -number->dual_part; reverse->dual_part = -number->dual_part;
} }
// =================== Invert =================== //
inline int bgc_fp32_dual_number_invert(BGC_FP32_DualNumber* number)
{
if (bgc_fp32_is_zero(number->real_part) || isnan(number->real_part)) {
return BGC_FAILURE;
}
const float multiplicator = 1.0f / (number->real_part * number->real_part);
number->real_part = number->real_part * multiplicator;
number->dual_part = -number->dual_part * multiplicator;
return BGC_SUCCESS;
}
inline int bgc_fp64_dual_number_invert(BGC_FP64_DualNumber* number)
{
if (bgc_fp64_is_zero(number->real_part) || isnan(number->real_part)) {
return BGC_FAILURE;
}
const double multiplicator = 1.0 / (number->real_part * number->real_part);
number->real_part = number->real_part * multiplicator;
number->dual_part = -number->dual_part * multiplicator;
return BGC_SUCCESS;
}
// ================ Get Inverse ================= //
inline int bgc_fp32_dual_number_get_inverse(BGC_FP32_DualNumber* inverse, const BGC_FP32_DualNumber* number)
{
if (bgc_fp32_is_zero(number->real_part) || isnan(number->real_part)) {
inverse->real_part = 0.0f;
inverse->dual_part = 0.0f;
return BGC_FAILURE;
}
const float multiplicator = 1.0f / (number->real_part * number->real_part);
inverse->real_part = number->real_part * multiplicator;
inverse->dual_part = -number->dual_part * multiplicator;
return BGC_SUCCESS;
}
inline int bgc_fp64_dual_number_get_inverse(BGC_FP64_DualNumber* inverse, const BGC_FP64_DualNumber* number)
{
if (bgc_fp64_is_zero(number->real_part) || isnan(number->real_part)) {
inverse->real_part = 0.0;
inverse->dual_part = 0.0;
return BGC_FAILURE;
}
const double multiplicator = 1.0 / (number->real_part * number->real_part);
inverse->real_part = number->real_part * multiplicator;
inverse->dual_part = -number->dual_part * multiplicator;
return BGC_SUCCESS;
}
// ================= Conjugate ================== // // ================= Conjugate ================== //
inline void bgc_fp32_dual_scalar_conjugate(BGC_FP32_DualScalar* number) inline void bgc_fp32_dual_number_conjugate(BGC_FP32_DualNumber* number)
{ {
number->dual_part = -number->dual_part; number->dual_part = -number->dual_part;
} }
inline void bgc_fp64_dual_scalar_conjugate(BGC_FP64_DualScalar* number) inline void bgc_fp64_dual_number_conjugate(BGC_FP64_DualNumber* number)
{ {
number->dual_part = -number->dual_part; number->dual_part = -number->dual_part;
} }
// =============== Get Conjugate ================ // // =============== Get Conjugate ================ //
inline void bgc_fp32_dual_scalar_get_conjugate(BGC_FP32_DualScalar* conjugate, const BGC_FP32_DualScalar* number) inline void bgc_fp32_dual_number_get_conjugate(BGC_FP32_DualNumber* conjugate, const BGC_FP32_DualNumber* number)
{ {
conjugate->real_part = number->real_part; conjugate->real_part = number->real_part;
conjugate->dual_part = -number->dual_part; conjugate->dual_part = -number->dual_part;
} }
inline void bgc_fp64_dual_scalar_get_conjugate(BGC_FP64_DualScalar* conjugate, const BGC_FP64_DualScalar* number) inline void bgc_fp64_dual_number_get_conjugate(BGC_FP64_DualNumber* conjugate, const BGC_FP64_DualNumber* number)
{ {
conjugate->real_part = number->real_part; conjugate->real_part = number->real_part;
conjugate->dual_part = -number->dual_part; conjugate->dual_part = -number->dual_part;
@ -132,13 +208,13 @@ inline void bgc_fp64_dual_scalar_get_conjugate(BGC_FP64_DualScalar* conjugate, c
// ==================== Add ===================== // // ==================== Add ===================== //
inline void bgc_fp32_dual_scalar_add(BGC_FP32_DualScalar* sum, const BGC_FP32_DualScalar* first, const BGC_FP32_DualScalar* second) inline void bgc_fp32_dual_number_add(BGC_FP32_DualNumber* sum, const BGC_FP32_DualNumber* first, const BGC_FP32_DualNumber* second)
{ {
sum->real_part = first->real_part + second->real_part; sum->real_part = first->real_part + second->real_part;
sum->dual_part = first->dual_part + second->dual_part; sum->dual_part = first->dual_part + second->dual_part;
} }
inline void bgc_fp64_dual_scalar_add(BGC_FP64_DualScalar* sum, const BGC_FP64_DualScalar* first, const BGC_FP64_DualScalar* second) inline void bgc_fp64_dual_number_add(BGC_FP64_DualNumber* sum, const BGC_FP64_DualNumber* first, const BGC_FP64_DualNumber* second)
{ {
sum->real_part = first->real_part + second->real_part; sum->real_part = first->real_part + second->real_part;
sum->dual_part = first->dual_part + second->dual_part; sum->dual_part = first->dual_part + second->dual_part;
@ -146,13 +222,13 @@ inline void bgc_fp64_dual_scalar_add(BGC_FP64_DualScalar* sum, const BGC_FP64_Du
// ================= Add Scaled ================= // // ================= Add Scaled ================= //
inline void bgc_fp32_dual_scalar_add_scaled(BGC_FP32_DualScalar* sum, const BGC_FP32_DualScalar* base_number, const BGC_FP32_DualScalar* scalable_number, const float scale) 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)
{ {
sum->real_part = base_number->real_part + scalable_number->real_part * 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; sum->dual_part = base_number->dual_part + scalable_number->dual_part * scale;
} }
inline void bgc_fp64_dual_scalar_add_scaled(BGC_FP64_DualScalar* sum, const BGC_FP64_DualScalar* base_number, const BGC_FP64_DualScalar* scalable_number, const double 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)
{ {