Movatterモバイル変換


[0]ホーム

URL:


modulePostgreSQL.Binary.NumericwhereimportqualifiedData.ScientificasScientificimportqualifiedData.VectorasVectorimportPostgreSQL.Binary.Prelude{-# INLINEposSignCode#-}posSignCode::Word16posSignCode :: Word16posSignCode=Word160x0000{-# INLINEnegSignCode#-}negSignCode::Word16negSignCode :: Word16negSignCode=Word160x4000{-# INLINEnanSignCode#-}nanSignCode::Word16nanSignCode :: Word16nanSignCode=Word160xC000{-# INLINEextractComponents#-}extractComponents::Integrala=>a->[Word16]extractComponents :: forall a. Integral a => a -> [Word16]extractComponents=(forall a. [a] -> [a]reverseforall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.)forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.(forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.forall a. Num a => a -> aabs)forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.forall b a. (b -> Maybe (a, b)) -> b -> [a]unfoldrforall a b. (a -> b) -> a -> b$\casea0->forall a. Maybe aNothingax->caseforall a. Integral a => a -> a -> (a, a)divModaxa10000of(ad,am)->forall a. a -> Maybe aJust(forall a b. (Integral a, Num b) => a -> bfromIntegralam,ad){-# INLINEmergeComponents#-}mergeComponents::Integrala=>Vectora->IntegermergeComponents :: forall a. Integral a => Vector a -> IntegermergeComponents=forall a b. (a -> b -> a) -> a -> Vector b -> aVector.foldl'(\Integerlar->Integerlforall a. Num a => a -> a -> a*Integer10000forall a. Num a => a -> a -> a+forall a b. (Integral a, Num b) => a -> bfromIntegralar)Integer0{-# INLINEmergeDigits#-}mergeDigits::Integrala=>Vectora->amergeDigits :: forall a. Integral a => Vector a -> amergeDigits=forall a b. (a -> b -> a) -> a -> Vector b -> aVector.foldl'(\alar->alforall a. Num a => a -> a -> a*a10forall a. Num a => a -> a -> a+ar)a0-- |-- Unpack a component into digits.{-# INLINEcomponentDigits#-}componentDigits::Int16->[Int16]componentDigits :: Int16 -> [Int16]componentDigits=forall s a. State s a -> s -> aevalStateforall a b. (a -> b) -> a -> b$doInt16a<-forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate(forall a b c. (a -> b -> c) -> b -> a -> cflipforall a. Integral a => a -> a -> (a, a)divModInt161000)Int16b<-forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate(forall a b c. (a -> b -> c) -> b -> a -> cflipforall a. Integral a => a -> a -> (a, a)divModInt16100)Int16c<-forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m astate(forall a b c. (a -> b -> c) -> b -> a -> cflipforall a. Integral a => a -> a -> (a, a)divModInt1610)Int16d<-forall (m :: * -> *) s. Monad m => StateT s m sgetforall (m :: * -> *) a. Monad m => a -> m areturnforall a b. (a -> b) -> a -> b$[Int16a,Int16b,Int16c,Int16d]{-# INLINEABLEcomponentsReplicateM#-}componentsReplicateM::(Integrala,Applicativem)=>Int->ma->macomponentsReplicateM :: forall a (m :: * -> *).(Integral a, Applicative m) =>Int -> m a -> m acomponentsReplicateMIntamountm acomponent=forall (t :: * -> *) b a.Foldable t =>(b -> a -> b) -> b -> t a -> bfoldl'forall {f :: * -> *} {c}.(Applicative f, Num c) =>f c -> f c -> f cfolder(forall (f :: * -> *) a. Applicative f => a -> f apurea0)(forall a. Int -> a -> [a]replicateIntamountm acomponent)wherefolder :: f c -> f c -> f cfolderf caccf ccomponent=forall (f :: * -> *) a b c.Applicative f =>(a -> b -> c) -> f a -> f b -> f cliftA2forall a. Num a => a -> a -> a(+)(forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f bfmap(forall a. Num a => a -> a -> a*c10000)f cacc)f ccomponent{-# INLINEsigner#-}signer::Integrala=>Word16->EitherText(a->a)signer :: forall a. Integral a => Word16 -> Either Text (a -> a)signer=\caseWord160x0000->forall (m :: * -> *) a. Monad m => a -> m areturnforall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a aidWord160x4000->forall (m :: * -> *) a. Monad m => a -> m areturnforall a. Num a => a -> anegateWord160xC000->forall a b. a -> Either a bLeftText"NAN sign"Word16signCode->forall a b. a -> Either a bLeft(Text"Unexpected sign code: "forall a. Semigroup a => a -> a -> a<>(forall a. IsString a => String -> afromStringforall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).Category cat =>cat b c -> cat a b -> cat a c.forall a. Show a => a -> Stringshow)Word16signCode){-# INLINEscientific#-}scientific::Int16->Word16->VectorWord16->EitherTextScientificscientific :: Int16 -> Word16 -> Vector Word16 -> Either Text ScientificscientificInt16pointIndexWord16signCodeVector Word16components=doInteger -> IntegertheSigner<-forall a. Integral a => Word16 -> Either Text (a -> a)signerWord16signCodeforall (m :: * -> *) a. Monad m => a -> m areturn(Integer -> Int -> ScientificScientific.scientific((Integer -> Integer) -> IntegercInteger -> IntegertheSigner)Inte)wherec :: (Integer -> Integer) -> IntegercInteger -> Integersigner=Integer -> Integersigner(forall a. Integral a => Vector a -> IntegermergeComponentsVector Word16components)e :: Inte=(forall a b. (Integral a, Num b) => a -> bfromIntegralInt16pointIndexforall a. Num a => a -> a -> a+Int1forall a. Num a => a -> a -> a-forall a. Vector a -> IntVector.lengthVector Word16components)forall a. Num a => a -> a -> a*Int4

[8]ページ先頭

©2009-2025 Movatter.jp