¿Hay una constante inf en Perl?
infinity (2)
Estoy inicializando una lista con infinitos para un algoritmo. Escribir $x = 9**9**9
es intuitivo y, además, es posible que desee utilizar BigInt en el futuro. 1/0
lanza un error.
¿Cuál es la forma canónica de inf
?
He usado bigrat para hacer esto. Es difícil decir qué características está habilitando -E.
use bigrat;
use feature qw(say);
say inf + inf;
say 9**99 / -inf(); #Perl doesn''t always like "-inf" by itself
use bigrat;
Ha existido durante mucho tiempo, por lo que debería ser bastante portátil.
Puedes usar la cadena especial "inf"
:
perl -E''say "inf" + 1''
inf
perl -E''say 1 / "inf"''
0
etcétera.
Otras cadenas especiales incluyen +inf
, -inf
, nan
. Por supuesto, esto también funciona con pragmas bignum
o bigint
. Sin embargo, estos pragmas exportan funciones equivalentes inf
y NaN
para que pueda usar palabras clave.
Editar
Como señaló @ikegami, no parece haber una manera portátil de lograr infinitos verdaderos sin un módulo. Acabo de vadear este interesante hilo de perlmonks , pero no se vuelve menos confuso. Quizás la mejor solución sería aceptar la penalización de rendimiento y use big{num,int,rat}
desde el principio, pero no big{num,int,rat}
usar no big{num,int,rat}
en ámbitos donde no sean necesarios.