2012-06-18 42 views
5

Android có hỗ trợ log2 không?
Tôi đã nhận thấy rằng hỗ trợ android doesnt dài gấp đôi.Android có hỗ trợ log2

Khi tôi đã cố gắng để biên dịch cdce3.c tôi nhận được lỗi sau:

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 

Một phần của mã nguồn 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) 

tìm đầy đủ source code đây.

+5

'log2 (x) = log (x)/log (2) ', vì vậy bạn có thể dễ dàng cuộn của riêng bạn (compute 'log (2)' đầu tiên). –

+0

Cảm ơn bạn, tôi nhớ nó từ chương trình toán học. Nhưng tôi không thể làm điều đó, bởi vì tất cả tôi có thể thay đổi một số phím biên dịch. Hoặc tìm một cách kỳ diệu khác để hỗ trợ chức năng log2. Tôi quan tâm đến việc hỗ trợ log2 trong Android theo mặc định. Như tôi đã nói có thể với một số chìa khóa ma thuật. – Arseniy

Trả lời

4

Dường như Android không hỗ trợ chức năng log2 theo mặc định. Bởi vì tôi không tìm thấy hư không trong mã nguồn xác định chức năng này.

7

Cách kỳ diệu của bạn là ở đây. Tôi đã thử nghiệm nó và làm việc:

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

nhanh hơn tính toán:

make CXXFLAGS="-Dlog2\(x\)=\(log\(x\)*1.4426950408889634\)" 
Các vấn đề liên quan