Добавление проверки при делении, стандартизация возвращаемого значения (BGC_SUCCESS, BGC_FAILURE)
This commit is contained in:
parent
a4b9f8b2b9
commit
e9558ff977
27 changed files with 589 additions and 370 deletions
|
|
@ -145,28 +145,46 @@ inline void bgc_fp64_dual_vector3_subtract(BGC_FP64_DualVector3* difference, con
|
|||
|
||||
// ================== Multiply ================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_multiply(BGC_FP32_DualVector3* product, const BGC_FP32_DualVector3* multiplicand, const float multiplier)
|
||||
inline void bgc_fp32_dual_vector3_multiply_by_real(BGC_FP32_DualVector3* product, const BGC_FP32_DualVector3* multiplicand, const float multiplier)
|
||||
{
|
||||
bgc_fp32_vector3_multiply(&product->real, &multiplicand->real, multiplier);
|
||||
bgc_fp32_vector3_multiply(&product->dual, &multiplicand->dual, multiplier);
|
||||
bgc_fp32_vector3_multiply_by_real(&product->real, &multiplicand->real, multiplier);
|
||||
bgc_fp32_vector3_multiply_by_real(&product->dual, &multiplicand->dual, multiplier);
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_vector3_multiply(BGC_FP64_DualVector3* product, const BGC_FP64_DualVector3* multiplicand, const double multiplier)
|
||||
inline void bgc_fp64_dual_vector3_multiply_by_real(BGC_FP64_DualVector3* product, const BGC_FP64_DualVector3* multiplicand, const double multiplier)
|
||||
{
|
||||
bgc_fp64_vector3_multiply(&product->real, &multiplicand->real, multiplier);
|
||||
bgc_fp64_vector3_multiply(&product->dual, &multiplicand->dual, multiplier);
|
||||
bgc_fp64_vector3_multiply_by_real(&product->real, &multiplicand->real, multiplier);
|
||||
bgc_fp64_vector3_multiply_by_real(&product->dual, &multiplicand->dual, multiplier);
|
||||
}
|
||||
|
||||
// =================== Divide =================== //
|
||||
|
||||
inline void bgc_fp32_dual_vector3_divide(BGC_FP32_DualVector3* quotient, const BGC_FP32_DualVector3* dividend, const float divisor)
|
||||
inline int bgc_fp32_dual_vector3_divide_by_real(BGC_FP32_DualVector3* quotient, const BGC_FP32_DualVector3* dividend, const float divisor)
|
||||
{
|
||||
bgc_fp32_dual_vector3_multiply(quotient, dividend, 1.0f / divisor);
|
||||
if (bgc_fp32_is_zero(divisor) || isnan(divisor)) {
|
||||
return BGC_FAILURE;
|
||||
}
|
||||
|
||||
const float multiplier = 1.0f / divisor;
|
||||
|
||||
bgc_fp32_vector3_multiply_by_real("ient->real, ÷nd->real, multiplier);
|
||||
bgc_fp32_vector3_multiply_by_real("ient->dual, ÷nd->dual, multiplier);
|
||||
|
||||
return BGC_SUCCESS;
|
||||
}
|
||||
|
||||
inline void bgc_fp64_dual_vector3_divide(BGC_FP64_DualVector3* quotient, const BGC_FP64_DualVector3* dividend, const double divisor)
|
||||
inline int bgc_fp64_dual_vector3_divide_by_real(BGC_FP64_DualVector3* quotient, const BGC_FP64_DualVector3* dividend, const double divisor)
|
||||
{
|
||||
bgc_fp64_dual_vector3_multiply(quotient, dividend, 1.0 / divisor);
|
||||
if (bgc_fp64_is_zero(divisor) || isnan(divisor)) {
|
||||
return BGC_FAILURE;
|
||||
}
|
||||
|
||||
const double multiplier = 1.0 / divisor;
|
||||
|
||||
bgc_fp64_vector3_multiply_by_real("ient->real, ÷nd->real, multiplier);
|
||||
bgc_fp64_vector3_multiply_by_real("ient->dual, ÷nd->dual, multiplier);
|
||||
|
||||
return BGC_SUCCESS;
|
||||
}
|
||||
|
||||
// ================ Mean of Two ================= //
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue