• Publicidad

Choque de trenes entre bignum (módulo) y función logaritmo

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Choque de trenes entre bignum (módulo) y función logaritmo

Notapor pvaldes » 2011-07-31 17:56 @788

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $x = log(120);
  2. my $y = log(10000000000000000000000000000000);
  3. print "$x \n $y";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. 4,7874917
  2. 71,380137
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

(logaritmos neperianos correctos, la vida es genial...)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use bignum; # <------ módulo maligno entrando en escena, a punto de estropearme el día
  2. my $x = log(120);
  3. my $y = log(10000000000000000000000000000000);
  4. print "$x \n $y";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. NaN
  2. NaN
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
(ouch!)


El problema es que estoy cargando bignum porque necesitaré trabajar con números grandes, por ej. 2,487499029×10³⁶⁸⁶¹, pero entonces obtengo NaN a mansalva en vez del resultado de los logaritmos.

Veo en perlmonks que es un problema conocido e intermitente, hay gente a la que le funciona pero otra a la que no.

¿Alguien puede sugerir un reemplazo para la función logaritmo que funcione con este módulo o darle una paliza al módulo por mí pero que parezca un accidente?
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Publicidad

Re: Choque de trenes entre bignum (módulo) y función logaritmo

Notapor pvaldes » 2011-07-31 18:11 @799

Bueno, me autorespondo

la solución es usar la función blog en lugar de log, necesita un chorro de recursos de CPU y memoria pero parece que al menos funciona

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Math::BigFloat;
  2.  
  3. $x = 100000000000000000000000000000000000000000000000000000000;
  4. $x = $x->blog();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados