Переход на версию 0.3: изменение подхода к именованию сущностей, добавление, изменение и удаление ряда функций
This commit is contained in:
parent
d33daf4e2d
commit
f7e41645fe
87 changed files with 4580 additions and 4051 deletions
|
|
@ -1,33 +1,31 @@
|
|||
#ifndef _BGC_UTILITIES_H_
|
||||
#define _BGC_UTILITIES_H_
|
||||
|
||||
#define BGC_EPSYLON_EFFECTIVENESS_LIMIT_FP32 1.0f
|
||||
#define BGC_FP32_EPSYLON_EFFECTIVENESS_LIMIT 1.0f
|
||||
|
||||
#define BGC_EPSYLON_FP32 4.76837E-7f
|
||||
#define BGC_SQUARE_EPSYLON_FP32 (BGC_EPSYLON_FP32 * BGC_EPSYLON_FP32)
|
||||
#define BGC_FP32_EPSYLON 4.76837E-7f
|
||||
#define BGC_FP32_SQUARE_EPSYLON (BGC_FP32_EPSYLON * BGC_FP32_EPSYLON)
|
||||
|
||||
#define BGC_ONE_THIRD_FP32 0.3333333333f
|
||||
#define BGC_ONE_SIXTH_FP32 0.1666666667f
|
||||
#define BGC_ONE_SEVENTH_FP32 0.142857142857f
|
||||
#define BGC_ONE_NINETH_FP32 0.1111111111f
|
||||
#define BGC_FP32_ONE_THIRD 0.3333333333f
|
||||
#define BGC_FP32_ONE_SIXTH 0.1666666667f
|
||||
#define BGC_FP32_ONE_SEVENTH 0.142857142857f
|
||||
#define BGC_FP32_ONE_NINETH 0.1111111111f
|
||||
|
||||
#define BGC_ARCCOSINE_PRECISION_LIMIT_FP32 0.70711f
|
||||
#define BGC_FP32_GOLDEN_RATIO_HIGH 1.618034f
|
||||
#define BGC_FP32_GOLDEN_RATIO_LOW 0.618034f
|
||||
|
||||
#define BGC_GOLDEN_RATIO_HIGH_FP32 1.618034f
|
||||
#define BGC_GOLDEN_RATIO_LOW_FP32 0.618034f
|
||||
#define BGC_FP64_EPSYLON_EFFECTIVENESS_LIMIT 1.0
|
||||
|
||||
#define BGC_EPSYLON_EFFECTIVENESS_LIMIT_FP64 1.0
|
||||
#define BGC_FP64_EPSYLON 4.996003611E-14
|
||||
#define BGC_FP64_SQUARE_EPSYLON (BGC_FP64_EPSYLON * BGC_FP64_EPSYLON)
|
||||
|
||||
#define BGC_EPSYLON_FP64 4.996003611E-14
|
||||
#define BGC_SQUARE_EPSYLON_FP64 (BGC_EPSYLON_FP64 * BGC_EPSYLON_FP64)
|
||||
#define BGC_FP64_ONE_THIRD 0.3333333333333333333
|
||||
#define BGC_FP64_ONE_SIXTH 0.1666666666666666667
|
||||
#define BGC_FP64_ONE_SEVENTH 0.142857142857142857
|
||||
#define BGC_FP64_ONE_NINETH 0.1111111111111111111
|
||||
|
||||
#define BGC_ONE_THIRD_FP64 0.3333333333333333333
|
||||
#define BGC_ONE_SIXTH_FP64 0.1666666666666666667
|
||||
#define BGC_ONE_SEVENTH_FP64 0.142857142857142857
|
||||
#define BGC_ONE_NINETH_FP64 0.1111111111111111111
|
||||
|
||||
#define BGC_GOLDEN_RATIO_HIGH_FP64 1.61803398874989485
|
||||
#define BGC_GOLDEN_RATIO_LOW_FP64 0.61803398874989485
|
||||
#define BGC_FP64_GOLDEN_RATIO_HIGH 1.61803398874989485
|
||||
#define BGC_FP64_GOLDEN_RATIO_LOW 0.61803398874989485
|
||||
|
||||
#define BGC_SUCCESS 0
|
||||
#define BGC_FAILED -1
|
||||
|
|
@ -53,66 +51,66 @@ inline int bgc_is_correct_axis(const int axis)
|
|||
|| axis == BGC_AXIS_X3 || axis == BGC_AXIS_REVERSE_X3;
|
||||
}
|
||||
|
||||
inline int bgc_is_zero_fp32(const float value)
|
||||
inline int bgc_fp32_is_zero(const float value)
|
||||
{
|
||||
return (-BGC_EPSYLON_FP32 <= value) && (value <= BGC_EPSYLON_FP32);
|
||||
return (-BGC_FP32_EPSYLON <= value) && (value <= BGC_FP32_EPSYLON);
|
||||
}
|
||||
|
||||
inline int bgc_is_zero_fp64(const double value)
|
||||
inline int bgc_fp64_is_zero(const double value)
|
||||
{
|
||||
return (-BGC_EPSYLON_FP64 <= value) && (value <= BGC_EPSYLON_FP64);
|
||||
return (-BGC_FP64_EPSYLON <= value) && (value <= BGC_FP64_EPSYLON);
|
||||
}
|
||||
|
||||
|
||||
inline int bgc_is_unit_fp32(const float value)
|
||||
inline int bgc_fp32_is_unit(const float value)
|
||||
{
|
||||
return (1.0f - BGC_EPSYLON_FP32 <= value) && (value <= 1.0f + BGC_EPSYLON_FP32);
|
||||
return (1.0f - BGC_FP32_EPSYLON <= value) && (value <= 1.0f + BGC_FP32_EPSYLON);
|
||||
}
|
||||
|
||||
inline int bgc_is_unit_fp64(const double value)
|
||||
inline int bgc_fp64_is_unit(const double value)
|
||||
{
|
||||
return (1.0 - BGC_EPSYLON_FP64 <= value) && (value <= 1.0 + BGC_EPSYLON_FP64);
|
||||
return (1.0 - BGC_FP64_EPSYLON <= value) && (value <= 1.0 + BGC_FP64_EPSYLON);
|
||||
}
|
||||
|
||||
|
||||
inline int bgc_is_sqare_unit_fp32(const float square_value)
|
||||
inline int bgc_fp32_is_square_unit(const float square_value)
|
||||
{
|
||||
return (1.0f - 2.0f * BGC_EPSYLON_FP32 <= square_value) && (square_value <= 1.0f + 2.0f * BGC_EPSYLON_FP32);
|
||||
return (1.0f - 2.0f * BGC_FP32_EPSYLON <= square_value) && (square_value <= 1.0f + 2.0f * BGC_FP32_EPSYLON);
|
||||
}
|
||||
|
||||
inline int bgc_is_sqare_unit_fp64(const double square_value)
|
||||
inline int bgc_fp64_is_square_unit(const double square_value)
|
||||
{
|
||||
return (1.0 - 2.0 * BGC_EPSYLON_FP64 <= square_value) && (square_value <= 1.0 + 2.0 * BGC_EPSYLON_FP64);
|
||||
return (1.0 - 2.0 * BGC_FP64_EPSYLON <= square_value) && (square_value <= 1.0 + 2.0 * BGC_FP64_EPSYLON);
|
||||
}
|
||||
|
||||
// ================== Are Close ================= //
|
||||
|
||||
inline int bgc_are_close_fp32(const float value1, const float value2)
|
||||
inline int bgc_fp32_are_close(const float value1, const float value2)
|
||||
{
|
||||
const float difference = value1 - value2;
|
||||
const float square_value1 = value1 * value1;
|
||||
const float square_value2 = value2 * value2;
|
||||
const float square_difference = difference * difference;
|
||||
|
||||
if (square_value1 <= BGC_EPSYLON_EFFECTIVENESS_LIMIT_FP32 || square_value2 <= BGC_EPSYLON_EFFECTIVENESS_LIMIT_FP32) {
|
||||
return square_difference <= BGC_SQUARE_EPSYLON_FP32;
|
||||
if (square_value1 <= BGC_FP32_EPSYLON_EFFECTIVENESS_LIMIT || square_value2 <= BGC_FP32_EPSYLON_EFFECTIVENESS_LIMIT) {
|
||||
return square_difference <= BGC_FP32_SQUARE_EPSYLON;
|
||||
}
|
||||
|
||||
return square_difference <= BGC_SQUARE_EPSYLON_FP32 * square_value1 && square_difference <= BGC_SQUARE_EPSYLON_FP32 * square_value2;
|
||||
return square_difference <= BGC_FP32_SQUARE_EPSYLON * square_value1 && square_difference <= BGC_FP32_SQUARE_EPSYLON * square_value2;
|
||||
}
|
||||
|
||||
inline int bgc_are_close_fp64(const double value1, const double value2)
|
||||
inline int bgc_fp64_are_close(const double value1, const double value2)
|
||||
{
|
||||
const double difference = value1 - value2;
|
||||
const double square_value1 = value1 * value1;
|
||||
const double square_value2 = value2 * value2;
|
||||
const double square_difference = difference * difference;
|
||||
|
||||
if (square_value1 <= BGC_EPSYLON_EFFECTIVENESS_LIMIT_FP64 || square_value2 <= BGC_EPSYLON_EFFECTIVENESS_LIMIT_FP64) {
|
||||
return square_difference <= BGC_SQUARE_EPSYLON_FP64;
|
||||
if (square_value1 <= BGC_FP64_EPSYLON_EFFECTIVENESS_LIMIT || square_value2 <= BGC_FP64_EPSYLON_EFFECTIVENESS_LIMIT) {
|
||||
return square_difference <= BGC_FP64_SQUARE_EPSYLON;
|
||||
}
|
||||
|
||||
return square_difference <= BGC_SQUARE_EPSYLON_FP64 * square_value1 && square_difference <= BGC_SQUARE_EPSYLON_FP64 * square_value2;
|
||||
return square_difference <= BGC_FP64_SQUARE_EPSYLON * square_value1 && square_difference <= BGC_FP64_SQUARE_EPSYLON * square_value2;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue