Отказ от restrict функций для упрощения библиотеки. Компиляторы достаточно хорошо оптимизируют не-restrict inline-функции
This commit is contained in:
parent
f402f68516
commit
ed404690ed
17 changed files with 48 additions and 257 deletions
|
|
@ -346,34 +346,6 @@ inline void bgc_fp64_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion*
|
|||
product->dual_part.z = dual_z;
|
||||
}
|
||||
|
||||
// ====== Restrict Multiply By Dual Number ====== //
|
||||
|
||||
inline void _bgc_fp32_restrict_quaternion_multiply_by_dual_number(BGC_FP32_DualQuaternion* restrict const product, const BGC_FP32_Quaternion* const multiplicand, const BGC_FP32_DualNumber* const multiplier)
|
||||
{
|
||||
product->real_part.s = multiplicand->s * multiplier->real_part;
|
||||
product->real_part.x = multiplicand->x * multiplier->real_part;
|
||||
product->real_part.y = multiplicand->y * multiplier->real_part;
|
||||
product->real_part.z = multiplicand->z * multiplier->real_part;
|
||||
|
||||
product->dual_part.s = multiplicand->s * multiplier->dual_part;
|
||||
product->dual_part.x = multiplicand->x * multiplier->dual_part;
|
||||
product->dual_part.y = multiplicand->y * multiplier->dual_part;
|
||||
product->dual_part.z = multiplicand->z * multiplier->dual_part;
|
||||
}
|
||||
|
||||
inline void _bgc_fp64_restrict_quaternion_multiply_by_dual_number(BGC_FP64_DualQuaternion* restrict const product, const BGC_FP64_Quaternion* const multiplicand, const BGC_FP64_DualNumber* const multiplier)
|
||||
{
|
||||
product->real_part.s = multiplicand->s * multiplier->real_part;
|
||||
product->real_part.x = multiplicand->x * multiplier->real_part;
|
||||
product->real_part.y = multiplicand->y * multiplier->real_part;
|
||||
product->real_part.z = multiplicand->z * multiplier->real_part;
|
||||
|
||||
product->dual_part.s = multiplicand->s * multiplier->dual_part;
|
||||
product->dual_part.x = multiplicand->x * multiplier->dual_part;
|
||||
product->dual_part.y = multiplicand->y * multiplier->dual_part;
|
||||
product->dual_part.z = multiplicand->z * multiplier->dual_part;
|
||||
}
|
||||
|
||||
// =========== Multiply By Quaternion =========== //
|
||||
|
||||
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)
|
||||
|
|
@ -486,42 +458,6 @@ inline void bgc_fp64_conjugate_quaternion_multiply_by_conjugate(BGC_FP64_Quatern
|
|||
product->z = z;
|
||||
}
|
||||
|
||||
// ====== Restrict Multiply By Quaternion ======= //
|
||||
|
||||
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->s = (left->s * right->s - left->x * right->x) - (left->y * right->y + left->z * right->z);
|
||||
product->x = (left->x * right->s + left->s * right->x) - (left->z * right->y - left->y * right->z);
|
||||
product->y = (left->y * right->s + left->s * right->y) - (left->x * right->z - left->z * right->x);
|
||||
product->z = (left->z * right->s + left->s * right->z) - (left->y * right->x - left->x * right->y);
|
||||
}
|
||||
|
||||
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->s = (left->s * right->s - left->x * right->x) - (left->y * right->y + left->z * right->z);
|
||||
product->x = (left->x * right->s + left->s * right->x) - (left->z * right->y - left->y * right->z);
|
||||
product->y = (left->y * right->s + left->s * right->y) - (left->x * right->z - left->z * right->x);
|
||||
product->z = (left->z * right->s + left->s * right->z) - (left->y * right->x - left->x * right->y);
|
||||
}
|
||||
|
||||
// = Restrict Multiply By Conjugate Quaternion == //
|
||||
|
||||
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->s = (left->s * right->s + left->x * right->x) + (left->y * right->y + left->z * right->z);
|
||||
product->x = (left->x * right->s + left->z * right->y) - (left->s * right->x + left->y * right->z);
|
||||
product->y = (left->y * right->s + left->x * right->z) - (left->s * right->y + left->z * right->x);
|
||||
product->z = (left->z * right->s + left->y * right->x) - (left->s * right->z + left->x * right->y);
|
||||
}
|
||||
|
||||
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->s = (left->s * right->s + left->x * right->x) + (left->y * right->y + left->z * right->z);
|
||||
product->x = (left->x * right->s + left->z * right->y) - (left->s * right->x + left->y * right->z);
|
||||
product->y = (left->y * right->s + left->x * right->z) - (left->s * right->y + left->z * right->x);
|
||||
product->z = (left->z * right->s + left->y * right->x) - (left->s * right->z + left->x * right->y);
|
||||
}
|
||||
|
||||
// ======== Multiply By Dual Quaternion ========= //
|
||||
|
||||
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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue