module Data.Tensort.Utils.ComparisonFunctions
  ( lessThanBit,
    lessThanRecord,
    greaterThanBit,
    greaterThanRecord,
    lessThanOrEqualBit,
    lessThanOrEqualRecord,
  )
where

import Data.Tensort.Utils.Types (Record, Bit)

lessThanBit :: Bit -> Bit -> Bool
lessThanBit :: TopBit -> TopBit -> Bool
lessThanBit TopBit
x TopBit
y = TopBit
x TopBit -> TopBit -> Bool
forall a. Ord a => a -> a -> Bool
< TopBit
y

lessThanRecord :: Record -> Record -> Bool
lessThanRecord :: Record -> Record -> Bool
lessThanRecord Record
x Record
y = Record -> TopBit
forall a b. (a, b) -> b
snd Record
x TopBit -> TopBit -> Bool
forall a. Ord a => a -> a -> Bool
< Record -> TopBit
forall a b. (a, b) -> b
snd Record
y

greaterThanBit :: Bit -> Bit -> Bool
greaterThanBit :: TopBit -> TopBit -> Bool
greaterThanBit TopBit
x TopBit
y = TopBit
x TopBit -> TopBit -> Bool
forall a. Ord a => a -> a -> Bool
> TopBit
y

greaterThanRecord :: Record -> Record -> Bool
greaterThanRecord :: Record -> Record -> Bool
greaterThanRecord Record
x Record
y = Record -> TopBit
forall a b. (a, b) -> b
snd Record
x TopBit -> TopBit -> Bool
forall a. Ord a => a -> a -> Bool
> Record -> TopBit
forall a b. (a, b) -> b
snd Record
y

lessThanOrEqualBit :: Bit -> Bit -> Bool
lessThanOrEqualBit :: TopBit -> TopBit -> Bool
lessThanOrEqualBit TopBit
x TopBit
y = TopBit
x TopBit -> TopBit -> Bool
forall a. Ord a => a -> a -> Bool
<= TopBit
y

lessThanOrEqualRecord :: Record -> Record -> Bool
lessThanOrEqualRecord :: Record -> Record -> Bool
lessThanOrEqualRecord Record
x Record
y = Record -> TopBit
forall a b. (a, b) -> b
snd Record
x TopBit -> TopBit -> Bool
forall a. Ord a => a -> a -> Bool
<= Record -> TopBit
forall a b. (a, b) -> b
snd Record
y