Tokenizer:simplifyMathFunctions: added support for acosh[f|l]() functions.
This commit is contained in:
parent
9ce7efc6e4
commit
f08325284c
|
@ -8342,7 +8342,8 @@ bool Tokenizer::isTwoNumber(const std::string &s)
|
||||||
// sqrtf(), sqrtl(), exp(), expf(), expl(), exp2(),
|
// sqrtf(), sqrtl(), exp(), expf(), expl(), exp2(),
|
||||||
// exp2f(), exp2l(), log2(), log2f(), log2l(), log1p(),
|
// exp2f(), exp2l(), log2(), log2f(), log2l(), log1p(),
|
||||||
// log1pf(), log1pl(), log10(), log10l(), log10f(),
|
// log1pf(), log1pl(), log10(), log10l(), log10f(),
|
||||||
// log(),logf(),logl(),logb(),logbf(),logbl()
|
// log(),logf(),logl(),logb(),logbf(),logbl(), acosh()
|
||||||
|
// acoshf(), acoshl()
|
||||||
// in the tokenlist.
|
// in the tokenlist.
|
||||||
//
|
//
|
||||||
// Reference:
|
// Reference:
|
||||||
|
@ -8419,8 +8420,11 @@ bool Tokenizer::simplifyMathFunctions()
|
||||||
tok->str("0"); // insert result into token list
|
tok->str("0"); // insert result into token list
|
||||||
simplifcationMade = true;
|
simplifcationMade = true;
|
||||||
}
|
}
|
||||||
} else if (Token::Match(tok, "log2|log2f|log2l|log|logf|logl|log10|log10f|log10l|logb|logbf|logbl ( %num% )")) {
|
} else if (Token::Match(tok, "log2|log2f|log2l|log|logf|logl|log10|log10f|log10l|logb|logbf|logbl|acosh|acoshf|acoshl ( %num% )")) {
|
||||||
// Simplify: log2[f|l](1) = 0
|
// Simplify: log2[f|l](1) = 0 , log10[f|l](1) = 0
|
||||||
|
// log[f|l](1) = 0 , logb10[f|l](1) = 0
|
||||||
|
// acosh[f|l](1) = 0
|
||||||
|
// TODO: acos[f|l](1) = 0
|
||||||
// get number string
|
// get number string
|
||||||
const std::string parameter(tok->tokAt(2)->str());
|
const std::string parameter(tok->tokAt(2)->str());
|
||||||
// is parameter 1 ?
|
// is parameter 1 ?
|
||||||
|
|
|
@ -514,6 +514,7 @@ private:
|
||||||
TEST_CASE(simplifyMathFunctions_isgreater);
|
TEST_CASE(simplifyMathFunctions_isgreater);
|
||||||
TEST_CASE(simplifyMathFunctions_fmin);
|
TEST_CASE(simplifyMathFunctions_fmin);
|
||||||
TEST_CASE(simplifyMathFunctions_fmax);
|
TEST_CASE(simplifyMathFunctions_fmax);
|
||||||
|
TEST_CASE(simplifyMathFunctions_acosh);
|
||||||
|
|
||||||
TEST_CASE(simplifyMathExpressions); //ticket #1620
|
TEST_CASE(simplifyMathExpressions); //ticket #1620
|
||||||
|
|
||||||
|
@ -8343,6 +8344,39 @@ private:
|
||||||
ASSERT_EQUALS(false, Tokenizer::isTwoNumber("garbage"));
|
ASSERT_EQUALS(false, Tokenizer::isTwoNumber("garbage"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void simplifyMathFunctions_acosh() {
|
||||||
|
// verify acosh(), acoshf(), acoshl() - simplifcation
|
||||||
|
const char code_acosh[] ="void f(int x) {\n"
|
||||||
|
" std::cout << acosh(x);\n" // do not simplify
|
||||||
|
" std::cout << acosh(1L);\n" // simplify to 0
|
||||||
|
"}";
|
||||||
|
const char expected_acosh[] = "void f ( int x ) {\n"
|
||||||
|
"std :: cout << acosh ( x ) ;\n"
|
||||||
|
"std :: cout << 0 ;\n"
|
||||||
|
"}";
|
||||||
|
ASSERT_EQUALS(expected_acosh, tokenizeAndStringify(code_acosh));
|
||||||
|
|
||||||
|
const char code_acoshf[] ="void f(float x) {\n"
|
||||||
|
" std::cout << acoshf(x);\n" // do not simplify
|
||||||
|
" std::cout << acoshf(1.0f);\n" // simplify to 0
|
||||||
|
"}";
|
||||||
|
const char expected_acoshf[] = "void f ( float x ) {\n"
|
||||||
|
"std :: cout << acoshf ( x ) ;\n"
|
||||||
|
"std :: cout << 0 ;\n"
|
||||||
|
"}";
|
||||||
|
ASSERT_EQUALS(expected_acoshf, tokenizeAndStringify(code_acoshf));
|
||||||
|
|
||||||
|
const char code_acoshl[] ="void f(long double x) {\n"
|
||||||
|
" std::cout << acoshl(x);\n" // do not simplify
|
||||||
|
" std::cout << acoshl(1.0d);\n" // simplify to 0
|
||||||
|
"}";
|
||||||
|
const char expected_acoshl[] = "void f ( long double x ) {\n"
|
||||||
|
"std :: cout << acoshl ( x ) ;\n"
|
||||||
|
"std :: cout << 0 ;\n"
|
||||||
|
"}";
|
||||||
|
ASSERT_EQUALS(expected_acoshl, tokenizeAndStringify(code_acoshl));
|
||||||
|
}
|
||||||
|
|
||||||
void simplifyMathFunctions_sqrt() {
|
void simplifyMathFunctions_sqrt() {
|
||||||
// verify sqrt(), sqrtf(), sqrtl() - simplifcation
|
// verify sqrt(), sqrtf(), sqrtl() - simplifcation
|
||||||
const char code_sqrt[] ="void f(int x) {\n"
|
const char code_sqrt[] ="void f(int x) {\n"
|
||||||
|
|
Loading…
Reference in New Issue