aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <t.j.smeding@uu.nl>2025-02-23 21:57:40 +0100
committerTom Smeding <t.j.smeding@uu.nl>2025-02-23 21:57:40 +0100
commita16185618aa6f483f587f8a0c65031fc479afac7 (patch)
tree17c9ff3a524a1a97fb49861fd5c6955f3fe4e4ea
parent5f7a81acc7f75415d62dac86c5b50c848ab15341 (diff)
Remove redundant Num constraint on writeTape
-rw-r--r--src/Numeric/ADDual/Internal.hs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/Numeric/ADDual/Internal.hs b/src/Numeric/ADDual/Internal.hs
index 5dd84aa..c568232 100644
--- a/src/Numeric/ADDual/Internal.hs
+++ b/src/Numeric/ADDual/Internal.hs
@@ -28,6 +28,9 @@ import System.IO.Unsafe
import System.IO (hPutStrLn, stderr)
+-- TODO: type roles on 's'
+
+
debug :: Bool
debug = toEnum 0
@@ -190,7 +193,7 @@ instance (Floating a, Storable a, Taping s a) => Floating (Dual s a) where
constant :: a -> Dual s a
constant x = Dual x (-1)
-mkDual :: forall a s. (Num a, Storable a, Taping s a) => a -> Int -> a -> Int -> a -> Dual s a
+mkDual :: forall a s. (Storable a, Taping s a) => a -> Int -> a -> Int -> a -> Dual s a
mkDual res i1 dx i2 dy = Dual res (writeTapeUnsafe @a (Proxy @s) i1 dx i2 dy)
data WriteTapeAction a = WTANewvec (VSM.IOVector (Contrib a))
@@ -198,10 +201,10 @@ data WriteTapeAction a = WTANewvec (VSM.IOVector (Contrib a))
-- This NOINLINE really doesn't seem to matter for performance, so let's be safe
{-# NOINLINE writeTapeUnsafe #-}
-writeTapeUnsafe :: forall a s proxy. (Num a, Storable a, Taping s a) => proxy s -> Int -> a -> Int -> a -> Int
+writeTapeUnsafe :: forall a s proxy. (Storable a, Taping s a) => proxy s -> Int -> a -> Int -> a -> Int
writeTapeUnsafe _ i1 dx i2 dy = unsafePerformIO $ writeTapeIO (Proxy @s) i1 dx i2 dy
-writeTapeIO :: forall a s proxy. (Num a, Storable a, Taping s a)
+writeTapeIO :: forall a s proxy. (Storable a, Taping s a)
=> HasCallStack
=> proxy s -> Int -> a -> Int -> a -> IO Int
writeTapeIO _ i1 dx i2 dy = do