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

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

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

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

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

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

greaterThanOrEqualRecord :: Record -> Record -> Bool
greaterThanOrEqualRecord :: Record -> Record -> Bool
greaterThanOrEqualRecord 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

equalBit :: Bit -> Bit -> Bool
equalBit :: TopBit -> TopBit -> Bool
equalBit TopBit
x TopBit
y = TopBit
x TopBit -> TopBit -> Bool
forall a. Eq a => a -> a -> Bool
== TopBit
y

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