{-# OPTIONS_GHC -fno-cse #-}
module Torch.Indef.Dynamic.Tensor.Math.Floating where
import Control.Monad.Managed
import GHC.Int
import Numeric.Dimensions
import System.IO.Unsafe
import qualified Torch.Sig.Tensor.Math.Floating as Sig
import Torch.Indef.Dynamic.Tensor (empty)
import Torch.Indef.Types
linspace
:: HsReal
-> HsReal
-> Int64
-> Dynamic
linspace a b l = unsafeDupablePerformIO $ let t = empty in linspace_ t a b l >> pure t
{-# NOINLINE linspace #-}
linspace_ :: Dynamic -> HsReal -> HsReal -> Int64 -> IO ()
linspace_ r a b l = runManaged $ do
s' <- managedState
r' <- managedTensor r
liftIO $ Sig.c_linspace s' r' (hs2cReal a) (hs2cReal b) (fromIntegral l)
logspace
:: HsReal
-> HsReal
-> Int64
-> Dynamic
logspace a b l = unsafeDupablePerformIO $ let t = empty in logspace_ t a b l >> pure t
{-# NOINLINE logspace #-}
logspace_ :: Dynamic -> HsReal -> HsReal -> Int64 -> IO ()
logspace_ r a b l = runManaged $ do
s' <- managedState
r' <- managedTensor r
liftIO $ Sig.c_logspace s' r' (hs2cReal a) (hs2cReal b) (fromIntegral l)