2012-06-18 17 views
5

¿Android es compatible con log2?
Ya encuentro que Android no es compatible con el doble largo.¿Soporta Android log2

Cuando he intentado compilar cdce3.c recibí siguiente 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 

Parte del código fuente 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) 

encuentran source code completa aquí.

+5

'log2 (x) = log (x)/log (2)', para que pueda mover fácilmente su propia (de cómputo 'log (2)' primero). –

+0

Gracias, lo recuerdo del programa de matemáticas de la escuela. Pero no puedo hacerlo, porque todo lo que puedo cambiar algunas claves de compilación. O encuentra otra forma mágica para soportar la función log2. Me interesa apoyar el log2 en Android de forma predeterminada. Como ya dije quizás con algunas llaves mágicas. – Arseniy

Respuesta

4

Parece que Android no admite la función log2 de forma predeterminada. Porque no encuentro en ningún lugar en los códigos fuente la determinación de esta función.

7

Tu manera mágica está aquí. Lo he probado y he trabajado:

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

más rápido cálculo:

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