2010-06-28 8 views

Respuesta

6

Se sugiere cómo se puede hacer here.

Aquí es una solución de ese sitio:

private static double pow(double base, int exp){ 
    if(exp == 0) return 1; 
    double res = base; 
    for(;exp > 1; --exp) 
     res *= base; 
    return res; 
} 

public static double log(double x) { 
    long l = Double.doubleToLongBits(x); 
    long exp = ((0x7ff0000000000000L & l) >> 52) - 1023; 
    double man = (0x000fffffffffffffL & l)/(double)0x10000000000000L + 1.0; 
    double lnm = 0.0; 
    double a = (man - 1)/(man + 1); 
    for(int n = 1; n < 7; n += 2) { 
     lnm += pow(a, n)/n; 
    } 
    return 2 * lnm + exp * 0.69314718055994530941723212145818; 
} 
2

He utilizado la clase "Float11" de Nikolay Klimchuk para los cálculos de punto flotante en Java ME. El enlace original parece estar roto, pero está disponible here.

+0

Guau, mi clase todavía está presente después de todos estos años ... –

Cuestiones relacionadas