Отказ от функций getWeightedSum в пользу appendScaled; оптимизация версоров / Replacing of getWeightedSum onto appendScaled; versor optimization
This commit is contained in:
parent
7bd9c07f17
commit
e354b2425c
13 changed files with 331 additions and 835 deletions
|
@ -6,6 +6,14 @@
|
|||
#define TEST_RESULT_SUCCES 0
|
||||
#define TEST_RESULT_FAILED 100
|
||||
|
||||
#define TEST_SP_EPSYLON 1E-6f
|
||||
#define TEST_SP_TWO_EPSYLON 2E-6f
|
||||
#define TEST_SP_SQUARE_EPSYLON 1E-12f
|
||||
|
||||
#define TEST_DP_EPSYLON 1E-13f
|
||||
#define TEST_DP_TWO_EPSYLON 2E-13f
|
||||
#define TEST_DP_SQUARE_EPSYLON 1E-26f
|
||||
|
||||
void print_test_section(const char * name);
|
||||
|
||||
void print_test_name(const char * name);
|
||||
|
@ -14,4 +22,32 @@ void print_test_success();
|
|||
|
||||
void print_test_failed();
|
||||
|
||||
inline int test_sp_are_equal(const float value1, const float value2, const float epsylon)
|
||||
{
|
||||
if (-1.0f <= value1 && value1 <= 1.0f) {
|
||||
const float difference = value1 - value2;
|
||||
return -epsylon <= difference && difference <= epsylon;
|
||||
}
|
||||
|
||||
if (value1 > 0.0f) {
|
||||
return value1 <= value2 * (1.0f + epsylon) && value2 <= value1 * (1.0f + epsylon);
|
||||
}
|
||||
|
||||
return value1 * (1.0f + epsylon) <= value2 && value2 * (1.0f + epsylon) <= value1;
|
||||
}
|
||||
|
||||
inline int test_dp_are_equal(const double value1, const double value2, const double epsylon)
|
||||
{
|
||||
if (-1.0 <= value1 && value1 <= 1.0) {
|
||||
const double difference = value1 - value2;
|
||||
return -epsylon <= difference && difference <= epsylon;
|
||||
}
|
||||
|
||||
if (value1 > 0.0) {
|
||||
return value1 <= value2 * (1.0 + epsylon) && value2 <= value1 * (1.0 + epsylon);
|
||||
}
|
||||
|
||||
return value1 * (1.0 + epsylon) <= value2 && value2 * (1.0 + epsylon) <= value1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue