2012-06-18 14 views
5

Android supporta log2?
Ho già trovato che Android non supporta il doppio lungo.Supporto Android log2

Quando ho provato a compilare cdce3.c Ho ricevuto seguente errore:

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 codice sorgente 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) 

trovare piena source code qui.

+5

'log2 (x) = log (x)/log (2)', in modo da poter facilmente rotolare il proprio (di calcolo 'log (2)' prima). –

+0

Grazie, lo ricordo dal programma di matematica scolastica. Ma non posso farlo, perché tutto ciò che posso è modificare alcune chiavi di compilazione. Oppure trova un altro modo magico per supportare la funzione log2. Sono interessato a supportare log2 in Android per impostazione predefinita. Come ho già detto forse con alcune chiavi magiche. – Arseniy

risposta

4

Sembra che Android non supporti la funzione log2 per impostazione predefinita. Perché non ho trovato da nessuna parte nella determinazione dei codici sorgente di questa funzione.

7

Il tuo modo magico è qui. Ho provato e ho lavorato:

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

più veloce calcolo:

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