module PlutusCore.Crypto.BLS12_381.Bounds
( msmMaxScalarWords
, msmScalarLb
, msmScalarOutOfBounds
, msmScalarUb
) where
msmMaxScalarWords :: Integer
msmMaxScalarWords :: Integer
msmMaxScalarWords = Integer
64
msmMaxScalarBits :: Integer
msmMaxScalarBits :: Integer
msmMaxScalarBits = Integer
64 Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
* Integer
msmMaxScalarWords
msmScalarUb :: Integer
msmScalarUb :: Integer
msmScalarUb = Integer
2 Integer -> Integer -> Integer
forall a b. (Num a, Integral b) => a -> b -> a
^ (Integer
msmMaxScalarBits Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
- Integer
1) Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
- Integer
1
msmScalarLb :: Integer
msmScalarLb :: Integer
msmScalarLb = -(Integer
2 Integer -> Integer -> Integer
forall a b. (Num a, Integral b) => a -> b -> a
^ (Integer
msmMaxScalarBits Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
- Integer
1))
msmScalarOutOfBounds :: Integer -> Bool
msmScalarOutOfBounds :: Integer -> Bool
msmScalarOutOfBounds Integer
s = Bool -> Bool
not (Integer
msmScalarLb Integer -> Integer -> Bool
forall a. Ord a => a -> a -> Bool
<= Integer
s Bool -> Bool -> Bool
&& Integer
s Integer -> Integer -> Bool
forall a. Ord a => a -> a -> Bool
<= Integer
msmScalarUb)
{-# INLINE msmScalarOutOfBounds #-}