module Data.Number.Flint.Fmpq.Mat.Instances where import System.IO.Unsafe import Foreign.C.String import Foreign.Marshal.Alloc ( free ) import Foreign.Storable import Data.Number.Flint.Fmpq.Mat instance Show FmpqMat where show :: FmpqMat -> String show FmpqMat x = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ do (FmpqMat _, CString cs) <- forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x Ptr CFmpqMat -> IO CString fmpq_mat_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 FmpqMat where == :: FmpqMat -> FmpqMat -> Bool (==) FmpqMat x FmpqMat y = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ do (FmpqMat _, (FmpqMat _, CInt flag)) <- forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat x -> do forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat y forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat y -> do Ptr CFmpqMat -> Ptr CFmpqMat -> IO CInt fmpq_mat_equal Ptr CFmpqMat x Ptr CFmpqMat y forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ CInt flag forall a. Eq a => a -> a -> Bool == CInt 1 instance Num FmpqMat where + :: FmpqMat -> FmpqMat -> FmpqMat (+) = forall {a}. (Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO a) -> FmpqMat -> FmpqMat -> FmpqMat lift2 Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO () fmpq_mat_add (-) = forall {a}. (Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO a) -> FmpqMat -> FmpqMat -> FmpqMat lift2 Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO () fmpq_mat_sub * :: FmpqMat -> FmpqMat -> FmpqMat (*) = forall {a}. (Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO a) -> FmpqMat -> FmpqMat -> FmpqMat lift2 Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO () fmpq_mat_mul negate :: FmpqMat -> FmpqMat negate = forall {a}. (Ptr CFmpqMat -> Ptr CFmpqMat -> IO a) -> FmpqMat -> FmpqMat lift1 Ptr CFmpqMat -> Ptr CFmpqMat -> IO () fmpq_mat_neg fromInteger :: Integer -> FmpqMat fromInteger = forall a. HasCallStack => a undefined signum :: FmpqMat -> FmpqMat signum = forall a. HasCallStack => a undefined abs :: FmpqMat -> FmpqMat abs = forall a. HasCallStack => a undefined instance Fractional FmpqMat where recip :: FmpqMat -> FmpqMat recip FmpqMat x = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ do (FmpqMat _, (CLong nx, CLong mx)) <- forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat x -> do CFmpqMat Ptr CFmpq _ CLong nx CLong mx Ptr (Ptr CFmpq) _ <- forall a. Storable a => Ptr a -> IO a peek Ptr CFmpqMat x forall (m :: * -> *) a. Monad m => a -> m a return (CLong nx, CLong mx) FmpqMat result <- CLong -> CLong -> IO FmpqMat newFmpqMat CLong nx CLong mx (FmpqMat _, (FmpqMat _, CInt flag)) <- forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat x -> do forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat result forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat result -> do CInt flag <- Ptr CFmpqMat -> Ptr CFmpqMat -> IO CInt fmpq_mat_inv Ptr CFmpqMat result Ptr CFmpqMat x forall (m :: * -> *) a. Monad m => a -> m a return CInt flag forall (m :: * -> *) a. Monad m => a -> m a return FmpqMat result fromRational :: Rational -> FmpqMat fromRational = forall a. HasCallStack => a undefined instance Semigroup FmpqMat where <> :: FmpqMat -> FmpqMat -> FmpqMat (<>) = forall a. Num a => a -> a -> a (*) lift1 :: (Ptr CFmpqMat -> Ptr CFmpqMat -> IO a) -> FmpqMat -> FmpqMat lift1 Ptr CFmpqMat -> Ptr CFmpqMat -> IO a f FmpqMat x = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ do (FmpqMat _, (CLong nx, CLong mx)) <- forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat x -> do CFmpqMat Ptr CFmpq _ CLong nx CLong mx Ptr (Ptr CFmpq) _ <- forall a. Storable a => Ptr a -> IO a peek Ptr CFmpqMat x forall (m :: * -> *) a. Monad m => a -> m a return (CLong nx, CLong mx) FmpqMat result <- CLong -> CLong -> IO FmpqMat newFmpqMat CLong nx CLong mx forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat x -> do forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat result forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat result -> do Ptr CFmpqMat -> Ptr CFmpqMat -> IO a f Ptr CFmpqMat result Ptr CFmpqMat x forall (m :: * -> *) a. Monad m => a -> m a return FmpqMat result lift2 :: (Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO a) -> FmpqMat -> FmpqMat -> FmpqMat lift2 Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO a f FmpqMat x FmpqMat y = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ do (FmpqMat _, (CLong nx, CLong mx)) <- forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat x -> do CFmpqMat Ptr CFmpq _ CLong nx CLong mx Ptr (Ptr CFmpq) _ <- forall a. Storable a => Ptr a -> IO a peek Ptr CFmpqMat x forall (m :: * -> *) a. Monad m => a -> m a return (CLong nx, CLong mx) (FmpqMat _, (CLong ny, CLong my)) <- forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat y forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat y -> do CFmpqMat Ptr CFmpq _ CLong ny CLong my Ptr (Ptr CFmpq) _ <- forall a. Storable a => Ptr a -> IO a peek Ptr CFmpqMat y forall (m :: * -> *) a. Monad m => a -> m a return (CLong ny, CLong my) FmpqMat result <- CLong -> CLong -> IO FmpqMat newFmpqMat CLong nx CLong my forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat result forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat z -> do forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat x forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat x -> do forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a) withFmpqMat FmpqMat y forall a b. (a -> b) -> a -> b $ \Ptr CFmpqMat y -> do Ptr CFmpqMat -> Ptr CFmpqMat -> Ptr CFmpqMat -> IO a f Ptr CFmpqMat z Ptr CFmpqMat x Ptr CFmpqMat y forall (m :: * -> *) a. Monad m => a -> m a return FmpqMat result