{-# OPTIONS_HADDOCK hide, prune, ignore-exports #-} module Data.Number.Flint.NF.QQbar.Instances where import System.IO.Unsafe import Foreign.C.String import Foreign.Marshal.Alloc ( free ) import Data.Number.Flint.NF.QQbar instance Show QQbar where show :: QQbar -> String show QQbar x = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ do (QQbar _, CString cs) <- forall {a}. QQbar -> (Ptr CQQbar -> IO a) -> IO (QQbar, a) withQQbar QQbar x Ptr CQQbar -> IO CString qqbar_get_str String s <- CString -> IO String peekCString CString cs forall a. Ptr a -> IO () free CString cs forall (m :: * -> *) a. Monad m => a -> m a return String s instance Eq QQbar where == :: QQbar -> QQbar -> Bool (==) QQbar x QQbar y = forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ forall {a}. QQbar -> (Ptr CQQbar -> IO a) -> IO (QQbar, a) withQQbar QQbar x forall a b. (a -> b) -> a -> b $ \Ptr CQQbar x -> forall {a}. QQbar -> (Ptr CQQbar -> IO a) -> IO (QQbar, a) withQQbar QQbar y forall a b. (a -> b) -> a -> b $ \Ptr CQQbar y -> do CInt result <- Ptr CQQbar -> Ptr CQQbar -> IO CInt qqbar_equal Ptr CQQbar x Ptr CQQbar y forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ CInt result forall a. Eq a => a -> a -> Bool == CInt 1 instance Num QQbar where {-# INLINE (+) #-} + :: QQbar -> QQbar -> QQbar (+) = forall {a}. (Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO a) -> QQbar -> QQbar -> QQbar lift2 Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO () qqbar_add {-# INLINE (-) #-} (-) = forall {a}. (Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO a) -> QQbar -> QQbar -> QQbar lift2 Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO () qqbar_sub {-# INLINE (*) #-} * :: QQbar -> QQbar -> QQbar (*) = forall {a}. (Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO a) -> QQbar -> QQbar -> QQbar lift2 Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO () qqbar_mul negate :: QQbar -> QQbar negate = forall {a}. (Ptr CQQbar -> Ptr CQQbar -> IO a) -> QQbar -> QQbar lift1 Ptr CQQbar -> Ptr CQQbar -> IO () qqbar_neg abs :: QQbar -> QQbar abs = forall a. HasCallStack => a undefined fromInteger :: Integer -> QQbar fromInteger Integer x = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ do QQbar result <- IO QQbar newQQbar forall {a}. QQbar -> (Ptr CQQbar -> IO a) -> IO (QQbar, a) withQQbar QQbar result forall a b. (a -> b) -> a -> b $ \Ptr CQQbar result -> do Ptr CQQbar -> CLong -> IO () qqbar_set_si Ptr CQQbar result (forall a. Num a => Integer -> a fromInteger Integer x) forall (m :: * -> *) a. Monad m => a -> m a return QQbar result signum :: QQbar -> QQbar signum = forall a. HasCallStack => a undefined lift1 :: (Ptr CQQbar -> Ptr CQQbar -> IO a) -> QQbar -> QQbar lift1 Ptr CQQbar -> Ptr CQQbar -> IO a f QQbar x = forall a b. (a, b) -> a fst forall a b. (a -> b) -> a -> b $ forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ forall {a}. (Ptr CQQbar -> IO a) -> IO (QQbar, a) withNewQQbar forall a b. (a -> b) -> a -> b $ \Ptr CQQbar result -> forall {a}. QQbar -> (Ptr CQQbar -> IO a) -> IO (QQbar, a) withQQbar QQbar x forall a b. (a -> b) -> a -> b $ \Ptr CQQbar x -> Ptr CQQbar -> Ptr CQQbar -> IO a f Ptr CQQbar result Ptr CQQbar x lift2 :: (Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO a) -> QQbar -> QQbar -> QQbar lift2 Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO a f QQbar x QQbar y = forall a b. (a, b) -> a fst forall a b. (a -> b) -> a -> b $ forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ forall {a}. (Ptr CQQbar -> IO a) -> IO (QQbar, a) withNewQQbar forall a b. (a -> b) -> a -> b $ \Ptr CQQbar result -> forall {a}. QQbar -> (Ptr CQQbar -> IO a) -> IO (QQbar, a) withQQbar QQbar x forall a b. (a -> b) -> a -> b $ \Ptr CQQbar x -> forall {a}. QQbar -> (Ptr CQQbar -> IO a) -> IO (QQbar, a) withQQbar QQbar y forall a b. (a -> b) -> a -> b $ \Ptr CQQbar y -> Ptr CQQbar -> Ptr CQQbar -> Ptr CQQbar -> IO a f Ptr CQQbar result Ptr CQQbar x Ptr CQQbar y