2012-06-18 2 views
5

안드로이드는 log2를 지원합니까?
나는 이미 안드로이드가 long double을 지원하지 않는다는 것을 알았다. cdce3.c 소스 코드의안드로이드는 log2를 지원합니까?

g++.dg/cdce3.C: In function 'void mlog2f(int)': 
g++.dg/cdce3.C:87: error: 'log2f' was not declared in this scope 
g++.dg/cdce3.C: In function 'void mlog2(int)': 
g++.dg/cdce3.C:87: error: 'log2' was not declared in this scope 
g++.dg/cdce3.C: In function 'void olog2f(int)': 
g++.dg/cdce3.C:108: error: 'log2f' was not declared in this scope 
g++.dg/cdce3.C: In function 'void olog2(int)': 
g++.dg/cdce3.C:108: error: 'log2' was not declared in this scope 

부 : 나는 오류 다음받은 cdce3.c를 컴파일하려고

#define DEF_MATH_FUNC(prefix, name) NI void prefix##name##f (int x) \ 
{ \ 
    float yy = name##f ((float) x); \ 
    STORE_RESULT; \ 
} \ 
NI void prefix##name (int x) \ 
{ \ 
    double yy = name ((double)x); \ 
    STORE_RESULT; \ 
} 
#endif 
......... 
DEF_MATH_FUNC (m,log2) 
DEF_MATH_FUNC (o,log2) 

source code 여기에 전체 찾을 수 있습니다.

+5

'의 LOG2 (X) = 로그 (X)/로그 (2)', 당신은 쉽게 자신의 (계산을 롤백 할 수 있도록 'log (2)'). –

+0

고맙습니다. 학교 수학 프로그램에서 기억합니다. 하지만 모든 컴파일 키를 변경할 수 있기 때문에 할 수 없습니다. 또는 log2 기능을 지원하는 또 다른 마법적인 방법을 찾아보십시오. 나는 기본적으로 Android에서 log2를 지원하는 데 관심이 있습니다. 이미 마술 열쇠로 말한 것 같습니다. – Arseniy

답변

4

Android는 기본적으로 log2 기능을 지원하지 않습니다. 왜냐하면 나는이 기능을 결정하는 소스 코드가 어디에도 없다는 것을 알기 때문이다.

7

당신의 마법의 길은 여기에 있습니다. 나는 그것을 테스트 작업 한 :

make CXXFLAGS="-Dlog2\(x\)=\(log\(x\)/log\(2\)\)" 

빠른 계산 :

make CXXFLAGS="-Dlog2\(x\)=\(log\(x\)*1.4426950408889634\)"