Página 1 de 1

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

NotaPublicado: 2011-07-31 17:56 @788
por pvaldes
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.003 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. 4,7874917
  2. 71,380137
Coloreado en 0.004 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?

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

NotaPublicado: 2011-07-31 18:11 @799
por pvaldes
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