{-# LANGUAGE OverloadedLists #-}
module Numeric.Noise.Internal.Math (
Seed,
Hash,
lerp,
cubicInterp,
hermiteInterp,
quinticInterp,
clamp,
primeX,
primeY,
primeZ,
hash2,
hash3,
infinity,
g2,
sqrt3,
valCoord2,
valCoord3,
gradCoord2,
gradCoord3,
maxHash,
) where
import Data.Bits
import Data.Int
import Data.Vector.Unboxed qualified as U
import Data.Word
type Seed = Word64
type Hash = Int32
lerp
:: (Num a)
=> a
-> a
-> a
-> a
lerp :: forall a. Num a => a -> a -> a -> a
lerp a
v0 a
v1 a
t = a
v0 a -> a -> a
forall a. Num a => a -> a -> a
+ a
t a -> a -> a
forall a. Num a => a -> a -> a
* (a
v1 a -> a -> a
forall a. Num a => a -> a -> a
- a
v0)
{-# INLINE lerp #-}
cubicInterp :: (Num a) => a -> a -> a -> a -> a -> a
cubicInterp :: forall a. Num a => a -> a -> a -> a -> a -> a
cubicInterp a
a a
b a
c a
d a
t =
let !p :: a
p = (a
d a -> a -> a
forall a. Num a => a -> a -> a
- a
c) a -> a -> a
forall a. Num a => a -> a -> a
- (a
a a -> a -> a
forall a. Num a => a -> a -> a
- a
b)
in a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
p a -> a -> a
forall a. Num a => a -> a -> a
+ a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
t a -> a -> a
forall a. Num a => a -> a -> a
* ((a
a a -> a -> a
forall a. Num a => a -> a -> a
- a
b) a -> a -> a
forall a. Num a => a -> a -> a
- a
p) a -> a -> a
forall a. Num a => a -> a -> a
+ a
t a -> a -> a
forall a. Num a => a -> a -> a
* (a
c a -> a -> a
forall a. Num a => a -> a -> a
- a
a) a -> a -> a
forall a. Num a => a -> a -> a
+ a
b
{-# INLINE cubicInterp #-}
hermiteInterp :: (Num a) => a -> a
hermiteInterp :: forall a. Num a => a -> a
hermiteInterp a
t = a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
t a -> a -> a
forall a. Num a => a -> a -> a
* (a
3 a -> a -> a
forall a. Num a => a -> a -> a
- a
2 a -> a -> a
forall a. Num a => a -> a -> a
* a
t)
{-# INLINE hermiteInterp #-}
quinticInterp :: (Num a) => a -> a
quinticInterp :: forall a. Num a => a -> a
quinticInterp a
t = a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
t a -> a -> a
forall a. Num a => a -> a -> a
* (a
t a -> a -> a
forall a. Num a => a -> a -> a
* (a
t a -> a -> a
forall a. Num a => a -> a -> a
* a
6 a -> a -> a
forall a. Num a => a -> a -> a
- a
15) a -> a -> a
forall a. Num a => a -> a -> a
+ a
10)
{-# INLINE quinticInterp #-}
clamp
:: (Ord a)
=> a
-> a
-> a
-> a
clamp :: forall a. Ord a => a -> a -> a -> a
clamp a
l a
u a
v
| a
v a -> a -> Bool
forall a. Ord a => a -> a -> Bool
< a
l = a
l
| a
v a -> a -> Bool
forall a. Ord a => a -> a -> Bool
> a
u = a
u
| Bool
otherwise = a
v
{-# INLINE clamp #-}
primeX, primeY, primeZ :: Hash
primeX :: Hash
primeX = Hash
501125321
{-# INLINE primeX #-}
primeY :: Hash
primeY = Hash
1136930381
{-# INLINE primeY #-}
primeZ :: Hash
primeZ = Hash
1720413743
{-# INLINE primeZ #-}
hash2 :: Seed -> Hash -> Hash -> Hash
hash2 :: Seed -> Hash -> Hash -> Hash
hash2 Seed
seed Hash
xPrimed Hash
yPrimed =
(Seed -> Hash
forall a b. (Integral a, Num b) => a -> b
fromIntegral Seed
seed Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` Hash
xPrimed Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` Hash
yPrimed)
Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
0x27d4eb2d
{-# INLINE hash2 #-}
hash3 :: Seed -> Hash -> Hash -> Hash -> Hash
hash3 :: Seed -> Hash -> Hash -> Hash -> Hash
hash3 Seed
seed Hash
xPrimed Hash
yPrimed Hash
zPrimed =
(Seed -> Hash
forall a b. (Integral a, Num b) => a -> b
fromIntegral Seed
seed Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` Hash
xPrimed Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` Hash
yPrimed Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` Hash
zPrimed)
Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
0x27d4eb2d
{-# INLINE hash3 #-}
infinity :: (Fractional a) => a
infinity :: forall a. Fractional a => a
infinity = a
1 a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
0
{-# INLINE infinity #-}
g2 :: (Fractional a) => a
g2 :: forall a. Fractional a => a
g2 = (a
3 a -> a -> a
forall a. Num a => a -> a -> a
- a
forall a. Fractional a => a
sqrt3) a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
6
{-# INLINE g2 #-}
sqrt3 :: (Fractional a) => a
sqrt3 :: forall a. Fractional a => a
sqrt3 = a
1.7320508075688772935274463415059
{-# INLINE sqrt3 #-}
valCoord2 :: (RealFrac a) => Word64 -> Hash -> Hash -> a
valCoord2 :: forall a. RealFrac a => Seed -> Hash -> Hash -> a
valCoord2 Seed
seed Hash
xPrimed Hash
yPrimed =
let !hash :: Hash
hash = Seed -> Hash -> Hash -> Hash
hash2 Seed
seed Hash
xPrimed Hash
yPrimed
!val :: Hash
val = (Hash
hash Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
hash) Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` (Hash
hash Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftL` Int
19)
in Hash -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
val a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
forall a. RealFrac a => a
maxHash
{-# INLINE valCoord2 #-}
valCoord3 :: (RealFrac a) => Word64 -> Hash -> Hash -> Hash -> a
valCoord3 :: forall a. RealFrac a => Seed -> Hash -> Hash -> Hash -> a
valCoord3 Seed
seed Hash
xPrimed Hash
yPrimed Hash
zPrimed =
let !hash :: Hash
hash = Seed -> Hash -> Hash -> Hash -> Hash
hash3 Seed
seed Hash
xPrimed Hash
yPrimed Hash
zPrimed
!val :: Hash
val = (Hash
hash Hash -> Hash -> Hash
forall a. Num a => a -> a -> a
* Hash
hash) Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` (Hash
hash Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftL` Int
19)
in Hash -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
val a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
forall a. RealFrac a => a
maxHash
{-# INLINE valCoord3 #-}
gradCoord2 :: (RealFrac a) => Seed -> Hash -> Hash -> a -> a -> a
gradCoord2 :: forall a. RealFrac a => Seed -> Hash -> Hash -> a -> a -> a
gradCoord2 Seed
seed Hash
xPrimed Hash
yPrimed a
xd a
yd =
let !hash :: Hash
hash = Seed -> Hash -> Hash -> Hash
hash2 Seed
seed Hash
xPrimed Hash
yPrimed
!ix :: Hash
ix = (Hash
hash Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` (Hash
hash Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftR` Int
15)) Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
.&. Hash
0xFE
!xg :: Float
xg = Vector Float
grad2d Vector Float -> Int -> Float
forall a. Unbox a => Vector a -> Int -> a
`U.unsafeIndex` Hash -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
ix
!yg :: Float
yg = Vector Float
grad2d Vector Float -> Int -> Float
forall a. Unbox a => Vector a -> Int -> a
`U.unsafeIndex` Hash -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Hash
ix Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
.|. Hash
1)
in a
xd a -> a -> a
forall a. Num a => a -> a -> a
* Float -> a
forall a b. (Real a, Fractional b) => a -> b
realToFrac Float
xg a -> a -> a
forall a. Num a => a -> a -> a
+ a
yd a -> a -> a
forall a. Num a => a -> a -> a
* Float -> a
forall a b. (Real a, Fractional b) => a -> b
realToFrac Float
yg
{-# INLINE gradCoord2 #-}
gradCoord3 :: (RealFrac a) => Seed -> Hash -> Hash -> Hash -> a -> a -> a -> a
gradCoord3 :: forall a.
RealFrac a =>
Seed -> Hash -> Hash -> Hash -> a -> a -> a -> a
gradCoord3 Seed
seed Hash
xPrimed Hash
yPrimed Hash
zPrimed a
xd a
yd a
zd =
let !hash :: Hash
hash = Seed -> Hash -> Hash -> Hash -> Hash
hash3 Seed
seed Hash
xPrimed Hash
yPrimed Hash
zPrimed
!ix :: Hash
ix = (Hash
hash Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
`xor` (Hash
hash Hash -> Int -> Hash
forall a. Bits a => a -> Int -> a
`shiftR` Int
15)) Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
.&. Hash
0xFC
!xg :: Int
xg = Vector Int
grad3d Vector Int -> Int -> Int
forall a. Unbox a => Vector a -> Int -> a
`U.unsafeIndex` Hash -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Hash
ix
!yg :: Int
yg = Vector Int
grad3d Vector Int -> Int -> Int
forall a. Unbox a => Vector a -> Int -> a
`U.unsafeIndex` Hash -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Hash
ix Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
.|. Hash
1)
!zg :: Int
zg = Vector Int
grad3d Vector Int -> Int -> Int
forall a. Unbox a => Vector a -> Int -> a
`U.unsafeIndex` Hash -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Hash
ix Hash -> Hash -> Hash
forall a. Bits a => a -> a -> a
.|. Hash
2)
in a
xd a -> a -> a
forall a. Num a => a -> a -> a
* Int -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
xg a -> a -> a
forall a. Num a => a -> a -> a
+ a
yd a -> a -> a
forall a. Num a => a -> a -> a
* Int -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
yg a -> a -> a
forall a. Num a => a -> a -> a
+ a
zd a -> a -> a
forall a. Num a => a -> a -> a
* Int -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
zg
{-# INLINE gradCoord3 #-}
maxHash :: (RealFrac a) => a
maxHash :: forall a. RealFrac a => a
maxHash = Hash -> a
forall a b. (Real a, Fractional b) => a -> b
realToFrac (forall a. Bounded a => a
maxBound @Hash)
{-# INLINE maxHash #-}
grad2d :: U.Vector Float
grad2d :: Vector Float
grad2d =
[ Float
Item (Vector Float)
0.130526192220052, Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.608761429008721,
Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, Float
Item (Vector Float)
0.99144486137381 , -Float
0.130526192220051, Float
Item (Vector Float)
0.923879532511287, -Float
0.38268343236509,
Float
Item (Vector Float)
0.793353340291235, -Float
0.60876142900872 , Float
Item (Vector Float)
0.608761429008721, -Float
0.793353340291235, Float
Item (Vector Float)
0.38268343236509 , -Float
0.923879532511287, Float
Item (Vector Float)
0.130526192220052, -Float
0.99144486137381,
-Float
0.130526192220052, -Float
0.99144486137381 , -Float
0.38268343236509 , -Float
0.923879532511287, -Float
0.608761429008721, -Float
0.793353340291235, -Float
0.793353340291235, -Float
0.608761429008721,
-Float
0.923879532511287, -Float
0.38268343236509 , -Float
0.99144486137381 , -Float
0.130526192220052, -Float
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, -Float
0.923879532511287, Float
Item (Vector Float)
0.38268343236509,
-Float
0.793353340291235, Float
Item (Vector Float)
0.608761429008721, -Float
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, -Float
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, -Float
0.130526192220052, Float
Item (Vector Float)
0.99144486137381,
Float
Item (Vector Float)
0.130526192220052, Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.608761429008721,
Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, Float
Item (Vector Float)
0.99144486137381 , -Float
0.130526192220051, Float
Item (Vector Float)
0.923879532511287, -Float
0.38268343236509,
Float
Item (Vector Float)
0.793353340291235, -Float
0.60876142900872 , Float
Item (Vector Float)
0.608761429008721, -Float
0.793353340291235, Float
Item (Vector Float)
0.38268343236509 , -Float
0.923879532511287, Float
Item (Vector Float)
0.130526192220052, -Float
0.99144486137381,
-Float
0.130526192220052, -Float
0.99144486137381 , -Float
0.38268343236509 , -Float
0.923879532511287, -Float
0.608761429008721, -Float
0.793353340291235, -Float
0.793353340291235, -Float
0.608761429008721,
-Float
0.923879532511287, -Float
0.38268343236509 , -Float
0.99144486137381 , -Float
0.130526192220052, -Float
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, -Float
0.923879532511287, Float
Item (Vector Float)
0.38268343236509,
-Float
0.793353340291235, Float
Item (Vector Float)
0.608761429008721, -Float
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, -Float
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, -Float
0.130526192220052, Float
Item (Vector Float)
0.99144486137381,
Float
Item (Vector Float)
0.130526192220052, Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.608761429008721,
Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, Float
Item (Vector Float)
0.99144486137381 , -Float
0.130526192220051, Float
Item (Vector Float)
0.923879532511287, -Float
0.38268343236509,
Float
Item (Vector Float)
0.793353340291235, -Float
0.60876142900872 , Float
Item (Vector Float)
0.608761429008721, -Float
0.793353340291235, Float
Item (Vector Float)
0.38268343236509 , -Float
0.923879532511287, Float
Item (Vector Float)
0.130526192220052, -Float
0.99144486137381,
-Float
0.130526192220052, -Float
0.99144486137381 , -Float
0.38268343236509 , -Float
0.923879532511287, -Float
0.608761429008721, -Float
0.793353340291235, -Float
0.793353340291235, -Float
0.608761429008721,
-Float
0.923879532511287, -Float
0.38268343236509 , -Float
0.99144486137381 , -Float
0.130526192220052, -Float
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, -Float
0.923879532511287, Float
Item (Vector Float)
0.38268343236509,
-Float
0.793353340291235, Float
Item (Vector Float)
0.608761429008721, -Float
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, -Float
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, -Float
0.130526192220052, Float
Item (Vector Float)
0.99144486137381,
Float
Item (Vector Float)
0.130526192220052, Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.608761429008721,
Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, Float
Item (Vector Float)
0.99144486137381 , -Float
0.130526192220051, Float
Item (Vector Float)
0.923879532511287, -Float
0.38268343236509,
Float
Item (Vector Float)
0.793353340291235, -Float
0.60876142900872 , Float
Item (Vector Float)
0.608761429008721, -Float
0.793353340291235, Float
Item (Vector Float)
0.38268343236509 , -Float
0.923879532511287, Float
Item (Vector Float)
0.130526192220052, -Float
0.99144486137381,
-Float
0.130526192220052, -Float
0.99144486137381 , -Float
0.38268343236509 , -Float
0.923879532511287, -Float
0.608761429008721, -Float
0.793353340291235, -Float
0.793353340291235, -Float
0.608761429008721,
-Float
0.923879532511287, -Float
0.38268343236509 , -Float
0.99144486137381 , -Float
0.130526192220052, -Float
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, -Float
0.923879532511287, Float
Item (Vector Float)
0.38268343236509,
-Float
0.793353340291235, Float
Item (Vector Float)
0.608761429008721, -Float
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, -Float
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, -Float
0.130526192220052, Float
Item (Vector Float)
0.99144486137381,
Float
Item (Vector Float)
0.130526192220052, Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.793353340291235, Float
Item (Vector Float)
0.608761429008721,
Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, Float
Item (Vector Float)
0.99144486137381 , -Float
0.130526192220051, Float
Item (Vector Float)
0.923879532511287, -Float
0.38268343236509,
Float
Item (Vector Float)
0.793353340291235, -Float
0.60876142900872 , Float
Item (Vector Float)
0.608761429008721, -Float
0.793353340291235, Float
Item (Vector Float)
0.38268343236509 , -Float
0.923879532511287, Float
Item (Vector Float)
0.130526192220052, -Float
0.99144486137381,
-Float
0.130526192220052, -Float
0.99144486137381 , -Float
0.38268343236509 , -Float
0.923879532511287, -Float
0.608761429008721, -Float
0.793353340291235, -Float
0.793353340291235, -Float
0.608761429008721,
-Float
0.923879532511287, -Float
0.38268343236509 , -Float
0.99144486137381 , -Float
0.130526192220052, -Float
0.99144486137381 , Float
Item (Vector Float)
0.130526192220051, -Float
0.923879532511287, Float
Item (Vector Float)
0.38268343236509,
-Float
0.793353340291235, Float
Item (Vector Float)
0.608761429008721, -Float
0.608761429008721, Float
Item (Vector Float)
0.793353340291235, -Float
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, -Float
0.130526192220052, Float
Item (Vector Float)
0.99144486137381,
Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.923879532511287, Float
Item (Vector Float)
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287, -Float
0.38268343236509 , Float
Item (Vector Float)
0.38268343236509 , -Float
0.923879532511287,
-Float
0.38268343236509 , -Float
0.923879532511287, -Float
0.923879532511287, -Float
0.38268343236509 , -Float
0.923879532511287, Float
Item (Vector Float)
0.38268343236509 , -Float
0.38268343236509 , Float
Item (Vector Float)
0.923879532511287
]
grad3d :: U.Vector Int
grad3d :: Vector Int
grad3d =
[ Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0
, Int
Item (Vector Int)
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, -Int
1, Int
Item (Vector Int)
1, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, Int
Item (Vector Int)
0, -Int
1, -Int
1, Int
Item (Vector Int)
0
]