module Combinatorics.BellNumbers where
import Combinatorics (binomials, )
import Combinatorics.Utility (scalarProduct, )
import qualified PowerSeries
bellRec :: Num a => [a]
bellRec :: forall a. Num a => [a]
bellRec =
a
1 forall a. a -> [a] -> [a]
: forall a b. (a -> b) -> [a] -> [b]
map (forall a. Num a => [a] -> [a] -> a
scalarProduct forall a. Num a => [a]
bellRec) forall a. Num a => [[a]]
binomials
bellSeries :: (Floating a, Enum a) => Int -> a
bellSeries :: forall a. (Floating a, Enum a) => Int -> a
bellSeries Int
n =
forall a. Num a => [a] -> [a] -> a
scalarProduct
(forall a b. (a -> b) -> [a] -> [b]
map (forall a b. (Num a, Integral b) => a -> b -> a
^Int
n) [a
0..])
(forall a. Int -> [a] -> [a]
take Int
30 forall a. Fractional a => T a
PowerSeries.derivativeCoefficients)
forall a. Fractional a => a -> a -> a
/ forall a. Floating a => a -> a
exp a
1