¿Hay un sustituto de Pow en BigInteger en F #?
-
11-09-2019 - |
Pregunta
Yo estaba usando la función Pow de la clase BigInteger en F # cuando mi compilador me dijo:
Esta construcción está en desuso. Este miembro se ha eliminado para asegurar que este tipo es binario compatible con el tipo de .NET 4.0 System.Numerics.BigInteger
Justo lo suficiente, supongo, pero no me encontré con un reemplazo de inmediato.
¿Hay uno? En caso de que sólo se utilice nuestras propias funciones Pow? Y (cómo) que va a ser reemplazado en NET4.0?
Solución
Puede utilizar la función pown
let result = pown 42I 42
pown funciona en cualquier tipo que 'entiende' multiplicación y 'uno'.
Otros consejos
Si nos fijamos en F # desde la perspectiva de estar basado en OCaml, entonces el módulo de OCaml Num tiene power_num. Desde OCaml tipo num son de precisión arbitraria números racionales que pueden manejar cualquier número de tamaño, por ejemplo, ellos no están limitados por el registro de la CPU, ya que pueden hacer los cálculos simbólicamente. También desde num se define como
Tipo num =
| Int int de
| Big_int de Big_int.big_int
| Proporción de Ratio.ratio
que pueden manejar números muy pequeños con pérdida de precisión debido al tipo de relación.
Como F # no tiene el tipo num, Jack creado el módulo FSharp.Compatibility.OCaml que tiene num.fs y está disponible a través NuGet.
Así se puede obtener toda la precisión que desee utilizar este, y las funciones num puede manejar exponentes negativos.