5

アンドロイドは log2 をサポートしていますか?
私はすでにアンドロイドがロングダブルをサポートしていないことを発見しました。

cdce3.c をコンパイルしようとすると、次のエラーが発生しました。

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)

ここで完全なソースコードを見つけてください。

4

2 に答える 2

8

あなたの魔法の方法はここにあります。私はそれをテストして動作しました:

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

より高速な計算:

make CXXFLAGS="-Dlog2\(x\)=\(log\(x\)*1.4426950408889634\)"
于 2016-02-27T17:14:35.077 に答える
4

Android はデフォルトで log2 関数をサポートしていないようです。この機能を決定するソースコードのどこにも見つからないからです。

于 2012-06-28T07:14:39.667 に答える