-- SPDX-FileCopyrightText: 2022 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

{-# LANGUAGE NoImplicitPrelude, CPP #-}

module Morley.Prelude.Word
  ( Word63
  , Word62
  )
  where

import Data.Bits (Bits, FiniteBits)
import Universum (Bounded, Enum, Eq, Integral, Num, Ord, Read, Real, Show)

import Data.IntCast (IntBaseType, IntBaseTypeK(..))
import Data.Word.Odd qualified as OddWord

newtype Word62 = Word62 OddWord.Word62
  deriving newtype (Word62 -> Word62 -> Bool
(Word62 -> Word62 -> Bool)
-> (Word62 -> Word62 -> Bool) -> Eq Word62
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Word62 -> Word62 -> Bool
== :: Word62 -> Word62 -> Bool
$c/= :: Word62 -> Word62 -> Bool
/= :: Word62 -> Word62 -> Bool
Eq, Eq Word62
Eq Word62
-> (Word62 -> Word62 -> Ordering)
-> (Word62 -> Word62 -> Bool)
-> (Word62 -> Word62 -> Bool)
-> (Word62 -> Word62 -> Bool)
-> (Word62 -> Word62 -> Bool)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> Ord Word62
Word62 -> Word62 -> Bool
Word62 -> Word62 -> Ordering
Word62 -> Word62 -> Word62
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Word62 -> Word62 -> Ordering
compare :: Word62 -> Word62 -> Ordering
$c< :: Word62 -> Word62 -> Bool
< :: Word62 -> Word62 -> Bool
$c<= :: Word62 -> Word62 -> Bool
<= :: Word62 -> Word62 -> Bool
$c> :: Word62 -> Word62 -> Bool
> :: Word62 -> Word62 -> Bool
$c>= :: Word62 -> Word62 -> Bool
>= :: Word62 -> Word62 -> Bool
$cmax :: Word62 -> Word62 -> Word62
max :: Word62 -> Word62 -> Word62
$cmin :: Word62 -> Word62 -> Word62
min :: Word62 -> Word62 -> Word62
Ord, Int -> Word62 -> ShowS
[Word62] -> ShowS
Word62 -> String
(Int -> Word62 -> ShowS)
-> (Word62 -> String) -> ([Word62] -> ShowS) -> Show Word62
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Word62 -> ShowS
showsPrec :: Int -> Word62 -> ShowS
$cshow :: Word62 -> String
show :: Word62 -> String
$cshowList :: [Word62] -> ShowS
showList :: [Word62] -> ShowS
Show, ReadPrec [Word62]
ReadPrec Word62
Int -> ReadS Word62
ReadS [Word62]
(Int -> ReadS Word62)
-> ReadS [Word62]
-> ReadPrec Word62
-> ReadPrec [Word62]
-> Read Word62
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Word62
readsPrec :: Int -> ReadS Word62
$creadList :: ReadS [Word62]
readList :: ReadS [Word62]
$creadPrec :: ReadPrec Word62
readPrec :: ReadPrec Word62
$creadListPrec :: ReadPrec [Word62]
readListPrec :: ReadPrec [Word62]
Read, Integer -> Word62
Word62 -> Word62
Word62 -> Word62 -> Word62
(Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62)
-> (Word62 -> Word62)
-> (Word62 -> Word62)
-> (Integer -> Word62)
-> Num Word62
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: Word62 -> Word62 -> Word62
+ :: Word62 -> Word62 -> Word62
$c- :: Word62 -> Word62 -> Word62
- :: Word62 -> Word62 -> Word62
$c* :: Word62 -> Word62 -> Word62
* :: Word62 -> Word62 -> Word62
$cnegate :: Word62 -> Word62
negate :: Word62 -> Word62
$cabs :: Word62 -> Word62
abs :: Word62 -> Word62
$csignum :: Word62 -> Word62
signum :: Word62 -> Word62
$cfromInteger :: Integer -> Word62
fromInteger :: Integer -> Word62
Num, Num Word62
Ord Word62
Num Word62 -> Ord Word62 -> (Word62 -> Rational) -> Real Word62
Word62 -> Rational
forall a. Num a -> Ord a -> (a -> Rational) -> Real a
$ctoRational :: Word62 -> Rational
toRational :: Word62 -> Rational
Real, Word62
Word62 -> Word62 -> Bounded Word62
forall a. a -> a -> Bounded a
$cminBound :: Word62
minBound :: Word62
$cmaxBound :: Word62
maxBound :: Word62
Bounded, Int -> Word62
Word62 -> Int
Word62 -> [Word62]
Word62 -> Word62
Word62 -> Word62 -> [Word62]
Word62 -> Word62 -> Word62 -> [Word62]
(Word62 -> Word62)
-> (Word62 -> Word62)
-> (Int -> Word62)
-> (Word62 -> Int)
-> (Word62 -> [Word62])
-> (Word62 -> Word62 -> [Word62])
-> (Word62 -> Word62 -> [Word62])
-> (Word62 -> Word62 -> Word62 -> [Word62])
-> Enum Word62
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Word62 -> Word62
succ :: Word62 -> Word62
$cpred :: Word62 -> Word62
pred :: Word62 -> Word62
$ctoEnum :: Int -> Word62
toEnum :: Int -> Word62
$cfromEnum :: Word62 -> Int
fromEnum :: Word62 -> Int
$cenumFrom :: Word62 -> [Word62]
enumFrom :: Word62 -> [Word62]
$cenumFromThen :: Word62 -> Word62 -> [Word62]
enumFromThen :: Word62 -> Word62 -> [Word62]
$cenumFromTo :: Word62 -> Word62 -> [Word62]
enumFromTo :: Word62 -> Word62 -> [Word62]
$cenumFromThenTo :: Word62 -> Word62 -> Word62 -> [Word62]
enumFromThenTo :: Word62 -> Word62 -> Word62 -> [Word62]
Enum, Enum Word62
Real Word62
Real Word62
-> Enum Word62
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> (Word62, Word62))
-> (Word62 -> Word62 -> (Word62, Word62))
-> (Word62 -> Integer)
-> Integral Word62
Word62 -> Integer
Word62 -> Word62 -> (Word62, Word62)
Word62 -> Word62 -> Word62
forall a.
Real a
-> Enum a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: Word62 -> Word62 -> Word62
quot :: Word62 -> Word62 -> Word62
$crem :: Word62 -> Word62 -> Word62
rem :: Word62 -> Word62 -> Word62
$cdiv :: Word62 -> Word62 -> Word62
div :: Word62 -> Word62 -> Word62
$cmod :: Word62 -> Word62 -> Word62
mod :: Word62 -> Word62 -> Word62
$cquotRem :: Word62 -> Word62 -> (Word62, Word62)
quotRem :: Word62 -> Word62 -> (Word62, Word62)
$cdivMod :: Word62 -> Word62 -> (Word62, Word62)
divMod :: Word62 -> Word62 -> (Word62, Word62)
$ctoInteger :: Word62 -> Integer
toInteger :: Word62 -> Integer
Integral, Eq Word62
Word62
Eq Word62
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62 -> Word62)
-> (Word62 -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> Word62
-> (Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Bool)
-> (Word62 -> Maybe Int)
-> (Word62 -> Int)
-> (Word62 -> Bool)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int -> Word62)
-> (Word62 -> Int)
-> Bits Word62
Int -> Word62
Word62 -> Bool
Word62 -> Int
Word62 -> Maybe Int
Word62 -> Word62
Word62 -> Int -> Bool
Word62 -> Int -> Word62
Word62 -> Word62 -> Word62
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: Word62 -> Word62 -> Word62
.&. :: Word62 -> Word62 -> Word62
$c.|. :: Word62 -> Word62 -> Word62
.|. :: Word62 -> Word62 -> Word62
$cxor :: Word62 -> Word62 -> Word62
xor :: Word62 -> Word62 -> Word62
$ccomplement :: Word62 -> Word62
complement :: Word62 -> Word62
$cshift :: Word62 -> Int -> Word62
shift :: Word62 -> Int -> Word62
$crotate :: Word62 -> Int -> Word62
rotate :: Word62 -> Int -> Word62
$czeroBits :: Word62
zeroBits :: Word62
$cbit :: Int -> Word62
bit :: Int -> Word62
$csetBit :: Word62 -> Int -> Word62
setBit :: Word62 -> Int -> Word62
$cclearBit :: Word62 -> Int -> Word62
clearBit :: Word62 -> Int -> Word62
$ccomplementBit :: Word62 -> Int -> Word62
complementBit :: Word62 -> Int -> Word62
$ctestBit :: Word62 -> Int -> Bool
testBit :: Word62 -> Int -> Bool
$cbitSizeMaybe :: Word62 -> Maybe Int
bitSizeMaybe :: Word62 -> Maybe Int
$cbitSize :: Word62 -> Int
bitSize :: Word62 -> Int
$cisSigned :: Word62 -> Bool
isSigned :: Word62 -> Bool
$cshiftL :: Word62 -> Int -> Word62
shiftL :: Word62 -> Int -> Word62
$cunsafeShiftL :: Word62 -> Int -> Word62
unsafeShiftL :: Word62 -> Int -> Word62
$cshiftR :: Word62 -> Int -> Word62
shiftR :: Word62 -> Int -> Word62
$cunsafeShiftR :: Word62 -> Int -> Word62
unsafeShiftR :: Word62 -> Int -> Word62
$crotateL :: Word62 -> Int -> Word62
rotateL :: Word62 -> Int -> Word62
$crotateR :: Word62 -> Int -> Word62
rotateR :: Word62 -> Int -> Word62
$cpopCount :: Word62 -> Int
popCount :: Word62 -> Int
Bits, Bits Word62
Bits Word62
-> (Word62 -> Int)
-> (Word62 -> Int)
-> (Word62 -> Int)
-> FiniteBits Word62
Word62 -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: Word62 -> Int
finiteBitSize :: Word62 -> Int
$ccountLeadingZeros :: Word62 -> Int
countLeadingZeros :: Word62 -> Int
$ccountTrailingZeros :: Word62 -> Int
countTrailingZeros :: Word62 -> Int
FiniteBits)
newtype Word63 = Word63 OddWord.Word63
  deriving newtype (Word63 -> Word63 -> Bool
(Word63 -> Word63 -> Bool)
-> (Word63 -> Word63 -> Bool) -> Eq Word63
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Word63 -> Word63 -> Bool
== :: Word63 -> Word63 -> Bool
$c/= :: Word63 -> Word63 -> Bool
/= :: Word63 -> Word63 -> Bool
Eq, Eq Word63
Eq Word63
-> (Word63 -> Word63 -> Ordering)
-> (Word63 -> Word63 -> Bool)
-> (Word63 -> Word63 -> Bool)
-> (Word63 -> Word63 -> Bool)
-> (Word63 -> Word63 -> Bool)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> Ord Word63
Word63 -> Word63 -> Bool
Word63 -> Word63 -> Ordering
Word63 -> Word63 -> Word63
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Word63 -> Word63 -> Ordering
compare :: Word63 -> Word63 -> Ordering
$c< :: Word63 -> Word63 -> Bool
< :: Word63 -> Word63 -> Bool
$c<= :: Word63 -> Word63 -> Bool
<= :: Word63 -> Word63 -> Bool
$c> :: Word63 -> Word63 -> Bool
> :: Word63 -> Word63 -> Bool
$c>= :: Word63 -> Word63 -> Bool
>= :: Word63 -> Word63 -> Bool
$cmax :: Word63 -> Word63 -> Word63
max :: Word63 -> Word63 -> Word63
$cmin :: Word63 -> Word63 -> Word63
min :: Word63 -> Word63 -> Word63
Ord, Int -> Word63 -> ShowS
[Word63] -> ShowS
Word63 -> String
(Int -> Word63 -> ShowS)
-> (Word63 -> String) -> ([Word63] -> ShowS) -> Show Word63
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Word63 -> ShowS
showsPrec :: Int -> Word63 -> ShowS
$cshow :: Word63 -> String
show :: Word63 -> String
$cshowList :: [Word63] -> ShowS
showList :: [Word63] -> ShowS
Show, ReadPrec [Word63]
ReadPrec Word63
Int -> ReadS Word63
ReadS [Word63]
(Int -> ReadS Word63)
-> ReadS [Word63]
-> ReadPrec Word63
-> ReadPrec [Word63]
-> Read Word63
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Word63
readsPrec :: Int -> ReadS Word63
$creadList :: ReadS [Word63]
readList :: ReadS [Word63]
$creadPrec :: ReadPrec Word63
readPrec :: ReadPrec Word63
$creadListPrec :: ReadPrec [Word63]
readListPrec :: ReadPrec [Word63]
Read, Integer -> Word63
Word63 -> Word63
Word63 -> Word63 -> Word63
(Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63)
-> (Word63 -> Word63)
-> (Word63 -> Word63)
-> (Integer -> Word63)
-> Num Word63
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: Word63 -> Word63 -> Word63
+ :: Word63 -> Word63 -> Word63
$c- :: Word63 -> Word63 -> Word63
- :: Word63 -> Word63 -> Word63
$c* :: Word63 -> Word63 -> Word63
* :: Word63 -> Word63 -> Word63
$cnegate :: Word63 -> Word63
negate :: Word63 -> Word63
$cabs :: Word63 -> Word63
abs :: Word63 -> Word63
$csignum :: Word63 -> Word63
signum :: Word63 -> Word63
$cfromInteger :: Integer -> Word63
fromInteger :: Integer -> Word63
Num, Num Word63
Ord Word63
Num Word63 -> Ord Word63 -> (Word63 -> Rational) -> Real Word63
Word63 -> Rational
forall a. Num a -> Ord a -> (a -> Rational) -> Real a
$ctoRational :: Word63 -> Rational
toRational :: Word63 -> Rational
Real, Word63
Word63 -> Word63 -> Bounded Word63
forall a. a -> a -> Bounded a
$cminBound :: Word63
minBound :: Word63
$cmaxBound :: Word63
maxBound :: Word63
Bounded, Int -> Word63
Word63 -> Int
Word63 -> [Word63]
Word63 -> Word63
Word63 -> Word63 -> [Word63]
Word63 -> Word63 -> Word63 -> [Word63]
(Word63 -> Word63)
-> (Word63 -> Word63)
-> (Int -> Word63)
-> (Word63 -> Int)
-> (Word63 -> [Word63])
-> (Word63 -> Word63 -> [Word63])
-> (Word63 -> Word63 -> [Word63])
-> (Word63 -> Word63 -> Word63 -> [Word63])
-> Enum Word63
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Word63 -> Word63
succ :: Word63 -> Word63
$cpred :: Word63 -> Word63
pred :: Word63 -> Word63
$ctoEnum :: Int -> Word63
toEnum :: Int -> Word63
$cfromEnum :: Word63 -> Int
fromEnum :: Word63 -> Int
$cenumFrom :: Word63 -> [Word63]
enumFrom :: Word63 -> [Word63]
$cenumFromThen :: Word63 -> Word63 -> [Word63]
enumFromThen :: Word63 -> Word63 -> [Word63]
$cenumFromTo :: Word63 -> Word63 -> [Word63]
enumFromTo :: Word63 -> Word63 -> [Word63]
$cenumFromThenTo :: Word63 -> Word63 -> Word63 -> [Word63]
enumFromThenTo :: Word63 -> Word63 -> Word63 -> [Word63]
Enum, Enum Word63
Real Word63
Real Word63
-> Enum Word63
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> (Word63, Word63))
-> (Word63 -> Word63 -> (Word63, Word63))
-> (Word63 -> Integer)
-> Integral Word63
Word63 -> Integer
Word63 -> Word63 -> (Word63, Word63)
Word63 -> Word63 -> Word63
forall a.
Real a
-> Enum a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: Word63 -> Word63 -> Word63
quot :: Word63 -> Word63 -> Word63
$crem :: Word63 -> Word63 -> Word63
rem :: Word63 -> Word63 -> Word63
$cdiv :: Word63 -> Word63 -> Word63
div :: Word63 -> Word63 -> Word63
$cmod :: Word63 -> Word63 -> Word63
mod :: Word63 -> Word63 -> Word63
$cquotRem :: Word63 -> Word63 -> (Word63, Word63)
quotRem :: Word63 -> Word63 -> (Word63, Word63)
$cdivMod :: Word63 -> Word63 -> (Word63, Word63)
divMod :: Word63 -> Word63 -> (Word63, Word63)
$ctoInteger :: Word63 -> Integer
toInteger :: Word63 -> Integer
Integral, Eq Word63
Word63
Eq Word63
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63 -> Word63)
-> (Word63 -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> Word63
-> (Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Bool)
-> (Word63 -> Maybe Int)
-> (Word63 -> Int)
-> (Word63 -> Bool)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int -> Word63)
-> (Word63 -> Int)
-> Bits Word63
Int -> Word63
Word63 -> Bool
Word63 -> Int
Word63 -> Maybe Int
Word63 -> Word63
Word63 -> Int -> Bool
Word63 -> Int -> Word63
Word63 -> Word63 -> Word63
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: Word63 -> Word63 -> Word63
.&. :: Word63 -> Word63 -> Word63
$c.|. :: Word63 -> Word63 -> Word63
.|. :: Word63 -> Word63 -> Word63
$cxor :: Word63 -> Word63 -> Word63
xor :: Word63 -> Word63 -> Word63
$ccomplement :: Word63 -> Word63
complement :: Word63 -> Word63
$cshift :: Word63 -> Int -> Word63
shift :: Word63 -> Int -> Word63
$crotate :: Word63 -> Int -> Word63
rotate :: Word63 -> Int -> Word63
$czeroBits :: Word63
zeroBits :: Word63
$cbit :: Int -> Word63
bit :: Int -> Word63
$csetBit :: Word63 -> Int -> Word63
setBit :: Word63 -> Int -> Word63
$cclearBit :: Word63 -> Int -> Word63
clearBit :: Word63 -> Int -> Word63
$ccomplementBit :: Word63 -> Int -> Word63
complementBit :: Word63 -> Int -> Word63
$ctestBit :: Word63 -> Int -> Bool
testBit :: Word63 -> Int -> Bool
$cbitSizeMaybe :: Word63 -> Maybe Int
bitSizeMaybe :: Word63 -> Maybe Int
$cbitSize :: Word63 -> Int
bitSize :: Word63 -> Int
$cisSigned :: Word63 -> Bool
isSigned :: Word63 -> Bool
$cshiftL :: Word63 -> Int -> Word63
shiftL :: Word63 -> Int -> Word63
$cunsafeShiftL :: Word63 -> Int -> Word63
unsafeShiftL :: Word63 -> Int -> Word63
$cshiftR :: Word63 -> Int -> Word63
shiftR :: Word63 -> Int -> Word63
$cunsafeShiftR :: Word63 -> Int -> Word63
unsafeShiftR :: Word63 -> Int -> Word63
$crotateL :: Word63 -> Int -> Word63
rotateL :: Word63 -> Int -> Word63
$crotateR :: Word63 -> Int -> Word63
rotateR :: Word63 -> Int -> Word63
$cpopCount :: Word63 -> Int
popCount :: Word63 -> Int
Bits, Bits Word63
Bits Word63
-> (Word63 -> Int)
-> (Word63 -> Int)
-> (Word63 -> Int)
-> FiniteBits Word63
Word63 -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: Word63 -> Int
finiteBitSize :: Word63 -> Int
$ccountLeadingZeros :: Word63 -> Int
countLeadingZeros :: Word63 -> Int
$ccountTrailingZeros :: Word63 -> Int
countTrailingZeros :: Word63 -> Int
FiniteBits)

type instance IntBaseType Word63 = 'FixedWordTag 63
type instance IntBaseType Word62 = 'FixedWordTag 62