@@ -5,6 +5,7 @@
55module Data.Fixed
66 ( Fixed
77 , fromInt
8+ , fromBigInt
89 , fromNumber
910 , toNumber
1011 , fromString
@@ -36,6 +37,7 @@ import Prelude
3637
3738import Control.MonadZero (guard)
3839import Data.Array (replicate)
40+import Data.BigInt (BigInt)
3941import Data.BigInt as BigInt
4042import Data.Int as Int
4143import Data.Maybe (Maybe(..))
@@ -169,7 +171,15 @@ fromInt
169171 . KnownPrecision precision
170172 => Int
171173 -> Fixed precision
172−fromInt i = Fixed (BigInt.fromInt i * reflectPrecision (PProxy :: PProxy precision))
174+fromInt = fromBigInt <<< BigInt.fromInt
175+
176+-- | Create a `Fixed` representation of a `BigInt`.
177+fromBigInt
178+ :: forall precision
179+ . KnownPrecision precision
180+ => BigInt
181+ -> Fixed precision
182+fromBigInt i = Fixed (i * reflectPrecision (PProxy :: PProxy precision))
173183
174184-- | Approximate a `Number` as a `Fixed` value with the specified precision.
175185-- |