perl infinity

¿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.