aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-03-13 09:26:20 +0100
committerTom Smeding <tom@tomsmeding.com>2025-03-13 09:28:24 +0100
commita87c80b1fbaa826142605d0846479c94d6ee2bcc (patch)
tree902faed123c7b363170726ca1d9adb2211eca4ac /src
parent4ec47c712e6809bb7ed839055d1ac008cf500f50 (diff)
Add atan2
Diffstat (limited to 'src')
-rw-r--r--src/Data/Array/Mixed/Internal/Arith.hs3
-rw-r--r--src/Data/Array/Nested.hs6
-rw-r--r--src/Data/Array/Nested/Internal/Mixed.hs3
-rw-r--r--src/Data/Array/Nested/Internal/Ranked.hs3
-rw-r--r--src/Data/Array/Nested/Internal/Shaped.hs3
5 files changed, 15 insertions, 3 deletions
diff --git a/src/Data/Array/Mixed/Internal/Arith.hs b/src/Data/Array/Mixed/Internal/Arith.hs
index 11cbba6..c940914 100644
--- a/src/Data/Array/Mixed/Internal/Arith.hs
+++ b/src/Data/Array/Mixed/Internal/Arith.hs
@@ -860,6 +860,7 @@ class NumElt a => FloatElt a where
floatEltExpm1 :: SNat n -> RS.Array n a -> RS.Array n a
floatEltLog1pexp :: SNat n -> RS.Array n a -> RS.Array n a
floatEltLog1mexp :: SNat n -> RS.Array n a -> RS.Array n a
+ floatEltAtan2 :: SNat n -> RS.Array n a -> RS.Array n a -> RS.Array n a
instance FloatElt Float where
floatEltDiv = divVectorFloat
@@ -885,6 +886,7 @@ instance FloatElt Float where
floatEltExpm1 = expm1VectorFloat
floatEltLog1pexp = log1pexpVectorFloat
floatEltLog1mexp = log1mexpVectorFloat
+ floatEltAtan2 = atan2VectorFloat
instance FloatElt Double where
floatEltDiv = divVectorDouble
@@ -910,3 +912,4 @@ instance FloatElt Double where
floatEltExpm1 = expm1VectorDouble
floatEltLog1pexp = log1pexpVectorDouble
floatEltLog1mexp = log1mexpVectorDouble
+ floatEltAtan2 = atan2VectorDouble
diff --git a/src/Data/Array/Nested.hs b/src/Data/Array/Nested.hs
index 58c0c71..4e5acb4 100644
--- a/src/Data/Array/Nested.hs
+++ b/src/Data/Array/Nested.hs
@@ -24,7 +24,7 @@ module Data.Array.Nested (
-- ** Additional arithmetic operations
--
-- $integralRealFloat
- rquotArray, rremArray,
+ rquotArray, rremArray, ratan2Array,
-- * Shaped arrays
Shaped(Shaped),
@@ -50,7 +50,7 @@ module Data.Array.Nested (
-- ** Additional arithmetic operations
--
-- $integralRealFloat
- squotArray, sremArray,
+ squotArray, sremArray, satan2Array,
-- * Mixed arrays
Mixed,
@@ -79,7 +79,7 @@ module Data.Array.Nested (
-- ** Additional arithmetic operations
--
-- $integralRealFloat
- mquotArray, mremArray,
+ mquotArray, mremArray, matan2Array,
-- * Array elements
Elt,
diff --git a/src/Data/Array/Nested/Internal/Mixed.hs b/src/Data/Array/Nested/Internal/Mixed.hs
index 7e1f100..80d581e 100644
--- a/src/Data/Array/Nested/Internal/Mixed.hs
+++ b/src/Data/Array/Nested/Internal/Mixed.hs
@@ -269,6 +269,9 @@ mquotArray, mremArray :: (IntElt a, PrimElt a) => Mixed sh a -> Mixed sh a -> Mi
mquotArray = mliftNumElt2 intEltQuot
mremArray = mliftNumElt2 intEltRem
+matan2Array :: (FloatElt a, PrimElt a) => Mixed sh a -> Mixed sh a -> Mixed sh a
+matan2Array = mliftNumElt2 floatEltAtan2
+
-- | Allowable element types in a mixed array, and by extension in a 'Ranked' or
-- 'Shaped' array. Note the polymorphic instance for 'Elt' of @'Primitive'
diff --git a/src/Data/Array/Nested/Internal/Ranked.hs b/src/Data/Array/Nested/Internal/Ranked.hs
index 4fb29e0..9493bc6 100644
--- a/src/Data/Array/Nested/Internal/Ranked.hs
+++ b/src/Data/Array/Nested/Internal/Ranked.hs
@@ -240,6 +240,9 @@ rquotArray, rremArray :: (IntElt a, PrimElt a) => Ranked n a -> Ranked n a -> Ra
rquotArray = arithPromoteRanked2 mquotArray
rremArray = arithPromoteRanked2 mremArray
+ratan2Array :: (FloatElt a, PrimElt a) => Ranked n a -> Ranked n a -> Ranked n a
+ratan2Array = arithPromoteRanked2 matan2Array
+
remptyArray :: KnownElt a => Ranked 1 a
remptyArray = mtoRanked (memptyArray ZSX)
diff --git a/src/Data/Array/Nested/Internal/Shaped.hs b/src/Data/Array/Nested/Internal/Shaped.hs
index ed616cf..03631b0 100644
--- a/src/Data/Array/Nested/Internal/Shaped.hs
+++ b/src/Data/Array/Nested/Internal/Shaped.hs
@@ -238,6 +238,9 @@ squotArray, sremArray :: (IntElt a, PrimElt a) => Shaped sh a -> Shaped sh a ->
squotArray = arithPromoteShaped2 mquotArray
sremArray = arithPromoteShaped2 mremArray
+satan2Array :: (FloatElt a, PrimElt a) => Shaped sh a -> Shaped sh a -> Shaped sh a
+satan2Array = arithPromoteShaped2 matan2Array
+
semptyArray :: KnownElt a => ShS sh -> Shaped (0 : sh) a
semptyArray sh = Shaped (memptyArray (shCvtSX sh))