问题
Does android supports log2 ?
I already find that android doesnt support long double.
When i tried to compile cdce3.c I received following error:
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
Part of cdce3.c source code:
#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)
find full source code here.
回答1:
Your magical way is here. I've tested it and worked:
make CXXFLAGS="-Dlog2\(x\)=\(log\(x\)/log\(2\)\)"
faster computation:
make CXXFLAGS="-Dlog2\(x\)=\(log\(x\)*1.4426950408889634\)"
回答2:
Looks like Android doesn't support log2 function by default. Because i don't found nowhere in source codes determining of this function.
来源:https://stackoverflow.com/questions/11080118/does-android-support-log2