{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module ArrayFire.Statistics where
import ArrayFire.Array
import ArrayFire.FFI
import ArrayFire.Internal.Statistics
import ArrayFire.Internal.Types
mean
:: AFType a
=> Array a
-> Int
-> Array a
mean :: forall a. AFType a => Array a -> Int -> Array a
mean Array a
a Int
n =
Array a
a Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
forall a.
Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
`op1` (\Ptr AFArray
x AFArray
y ->
Ptr AFArray -> AFArray -> DimT -> IO AFErr
af_mean Ptr AFArray
x AFArray
y (Int -> DimT
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n))
meanWeighted
:: AFType a
=> Array a
-> Array a
-> Int
-> Array a
meanWeighted :: forall a. AFType a => Array a -> Array a -> Int -> Array a
meanWeighted Array a
x Array a
y (Int -> DimT
forall a b. (Integral a, Num b) => a -> b
fromIntegral -> DimT
n) =
Array a
-> Array a
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr)
-> Array a
forall b a.
Array b
-> Array a
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr)
-> Array a
op2 Array a
x Array a
y ((Ptr AFArray -> AFArray -> AFArray -> IO AFErr) -> Array a)
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr) -> Array a
forall a b. (a -> b) -> a -> b
$ \Ptr AFArray
a AFArray
b AFArray
c ->
Ptr AFArray -> AFArray -> AFArray -> DimT -> IO AFErr
af_mean_weighted Ptr AFArray
a AFArray
b AFArray
c DimT
n
var
:: AFType a
=> Array a
-> Bool
-> Int
-> Array a
var :: forall a. AFType a => Array a -> Bool -> Int -> Array a
var Array a
arr (Int -> CBool
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CBool) -> (Bool -> Int) -> Bool -> CBool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
fromEnum -> CBool
b) Int
d =
Array a
arr Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
forall a.
Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
`op1` (\Ptr AFArray
p AFArray
x ->
Ptr AFArray -> AFArray -> CBool -> DimT -> IO AFErr
af_var Ptr AFArray
p AFArray
x CBool
b (Int -> DimT
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
d))
varWeighted
:: AFType a
=> Array a
-> Array a
-> Int
-> Array a
varWeighted :: forall a. AFType a => Array a -> Array a -> Int -> Array a
varWeighted Array a
x Array a
y (Int -> DimT
forall a b. (Integral a, Num b) => a -> b
fromIntegral -> DimT
n) =
Array a
-> Array a
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr)
-> Array a
forall b a.
Array b
-> Array a
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr)
-> Array a
op2 Array a
x Array a
y ((Ptr AFArray -> AFArray -> AFArray -> IO AFErr) -> Array a)
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr) -> Array a
forall a b. (a -> b) -> a -> b
$ \Ptr AFArray
a AFArray
b AFArray
c ->
Ptr AFArray -> AFArray -> AFArray -> DimT -> IO AFErr
af_var_weighted Ptr AFArray
a AFArray
b AFArray
c DimT
n
stdev
:: AFType a
=> Array a
-> Int
-> Array a
stdev :: forall a. AFType a => Array a -> Int -> Array a
stdev Array a
a Int
n =
Array a
a Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
forall a.
Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
`op1` (\Ptr AFArray
x AFArray
y ->
Ptr AFArray -> AFArray -> DimT -> IO AFErr
af_stdev Ptr AFArray
x AFArray
y (Int -> DimT
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n))
cov
:: AFType a
=> Array a
-> Array a
-> Bool
-> Array a
cov :: forall a. AFType a => Array a -> Array a -> Bool -> Array a
cov Array a
x Array a
y (Int -> CBool
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CBool) -> (Bool -> Int) -> Bool -> CBool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
fromEnum -> CBool
n) =
Array a
-> Array a
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr)
-> Array a
forall b a.
Array b
-> Array a
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr)
-> Array a
op2 Array a
x Array a
y ((Ptr AFArray -> AFArray -> AFArray -> IO AFErr) -> Array a)
-> (Ptr AFArray -> AFArray -> AFArray -> IO AFErr) -> Array a
forall a b. (a -> b) -> a -> b
$ \Ptr AFArray
a AFArray
b AFArray
c ->
Ptr AFArray -> AFArray -> AFArray -> CBool -> IO AFErr
af_cov Ptr AFArray
a AFArray
b AFArray
c CBool
n
median
:: AFType a
=> Array a
-> Int
-> Array a
median :: forall a. AFType a => Array a -> Int -> Array a
median Array a
a Int
n =
Array a
a Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
forall a.
Array a -> (Ptr AFArray -> AFArray -> IO AFErr) -> Array a
`op1` (\Ptr AFArray
x AFArray
y ->
Ptr AFArray -> AFArray -> DimT -> IO AFErr
af_median Ptr AFArray
x AFArray
y (Int -> DimT
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n))
meanAll
:: AFType a
=> Array a
-> (Double, Double)
meanAll :: forall a. AFType a => Array a -> (Double, Double)
meanAll = (Array a
-> (Ptr Double -> Ptr Double -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b arr.
(Storable a, Storable b) =>
Array arr -> (Ptr a -> Ptr b -> AFArray -> IO AFErr) -> (a, b)
`infoFromArray2` Ptr Double -> Ptr Double -> AFArray -> IO AFErr
af_mean_all)
meanAllWeighted
:: AFType a
=> Array a
-> Array a
-> (Double, Double)
meanAllWeighted :: forall a. AFType a => Array a -> Array a -> (Double, Double)
meanAllWeighted Array a
a Array a
b =
Array a
-> Array a
-> (Ptr Double -> Ptr Double -> AFArray -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b arr.
(Storable a, Storable b) =>
Array arr
-> Array arr
-> (Ptr a -> Ptr b -> AFArray -> AFArray -> IO AFErr)
-> (a, b)
infoFromArray22 Array a
a Array a
b Ptr Double -> Ptr Double -> AFArray -> AFArray -> IO AFErr
af_mean_all_weighted
varAll
:: AFType a
=> Array a
-> Bool
-> (Double, Double)
varAll :: forall a. AFType a => Array a -> Bool -> (Double, Double)
varAll Array a
a (Int -> CBool
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CBool) -> (Bool -> Int) -> Bool -> CBool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
fromEnum -> CBool
b) =
Array a
-> (Ptr Double -> Ptr Double -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b arr.
(Storable a, Storable b) =>
Array arr -> (Ptr a -> Ptr b -> AFArray -> IO AFErr) -> (a, b)
infoFromArray2 Array a
a ((Ptr Double -> Ptr Double -> AFArray -> IO AFErr)
-> (Double, Double))
-> (Ptr Double -> Ptr Double -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr Double
x Ptr Double
y AFArray
z ->
Ptr Double -> Ptr Double -> AFArray -> CBool -> IO AFErr
af_var_all Ptr Double
x Ptr Double
y AFArray
z CBool
b
varAllWeighted
:: AFType a
=> Array a
-> Array a
-> (Double, Double)
varAllWeighted :: forall a. AFType a => Array a -> Array a -> (Double, Double)
varAllWeighted Array a
a Array a
b =
Array a
-> Array a
-> (Ptr Double -> Ptr Double -> AFArray -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b arr.
(Storable a, Storable b) =>
Array arr
-> Array arr
-> (Ptr a -> Ptr b -> AFArray -> AFArray -> IO AFErr)
-> (a, b)
infoFromArray22 Array a
a Array a
b Ptr Double -> Ptr Double -> AFArray -> AFArray -> IO AFErr
af_var_all_weighted
stdevAll
:: AFType a
=> Array a
-> (Double, Double)
stdevAll :: forall a. AFType a => Array a -> (Double, Double)
stdevAll = (Array a
-> (Ptr Double -> Ptr Double -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b arr.
(Storable a, Storable b) =>
Array arr -> (Ptr a -> Ptr b -> AFArray -> IO AFErr) -> (a, b)
`infoFromArray2` Ptr Double -> Ptr Double -> AFArray -> IO AFErr
af_stdev_all)
medianAll
:: (AFType a, Fractional a)
=> Array a
-> (Double, Double)
medianAll :: forall a. (AFType a, Fractional a) => Array a -> (Double, Double)
medianAll = (Array a
-> (Ptr Double -> Ptr Double -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b arr.
(Storable a, Storable b) =>
Array arr -> (Ptr a -> Ptr b -> AFArray -> IO AFErr) -> (a, b)
`infoFromArray2` Ptr Double -> Ptr Double -> AFArray -> IO AFErr
af_median_all)
corrCoef
:: AFType a
=> Array a
-> Array a
-> (Double, Double)
corrCoef :: forall a. AFType a => Array a -> Array a -> (Double, Double)
corrCoef Array a
a Array a
b =
Array a
-> Array a
-> (Ptr Double -> Ptr Double -> AFArray -> AFArray -> IO AFErr)
-> (Double, Double)
forall a b arr.
(Storable a, Storable b) =>
Array arr
-> Array arr
-> (Ptr a -> Ptr b -> AFArray -> AFArray -> IO AFErr)
-> (a, b)
infoFromArray22 Array a
a Array a
b Ptr Double -> Ptr Double -> AFArray -> AFArray -> IO AFErr
af_corrcoef
topk
:: AFType a
=> Array a
-> Int
-> TopK
-> (Array a, Array a)
topk :: forall a. AFType a => Array a -> Int -> TopK -> (Array a, Array a)
topk Array a
a (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
x) (TopK -> AFTopkFunction
fromTopK -> AFTopkFunction
f)
= Array a
a Array a
-> (Ptr AFArray -> Ptr AFArray -> AFArray -> IO AFErr)
-> (Array a, Array a)
forall a.
Array a
-> (Ptr AFArray -> Ptr AFArray -> AFArray -> IO AFErr)
-> (Array a, Array a)
`op2p` (\Ptr AFArray
b Ptr AFArray
c AFArray
d -> Ptr AFArray
-> Ptr AFArray
-> AFArray
-> CInt
-> CInt
-> AFTopkFunction
-> IO AFErr
af_topk Ptr AFArray
b Ptr AFArray
c AFArray
d CInt
x CInt
0 AFTopkFunction
f)