-- |
-- Module      :  Languages.UniquenessPeriods.Vector.FuncRepRelated
-- Copyright   :  (c) OleksandrZhabenko 2020
-- License     :  MIT
-- Stability   :  Experimental
-- Maintainer  :  olexandr543@yahoo.com
--
-- Functions to choose from the 'FuncRep' variants.

module Languages.UniquenessPeriods.Vector.FuncRepRelated where

import Languages.UniquenessPeriods.Vector.Data
import String.Languages.UniquenessPeriods.Vector
import Languages.UniquenessPeriods.Vector.PropertiesFuncRep

-- | Allows to choose the variant of the computations in case of usual processment.
chooseMax :: String -> FuncRep String (UniquenessGeneral2 Char) [Float]
chooseMax :: String -> FuncRep String (UniquenessGeneral2 Char) [Float]
chooseMax String
xs
  | String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"y0" = FuncRep String (UniquenessGeneral2 Char) [Float]
procDiverse2F
  | String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"0y" = FuncRep String (UniquenessGeneral2 Char) [Float]
procRhythmicity23F
  | String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"y" = FuncRep String (UniquenessGeneral2 Char) [Float]
procBothF
  | Bool
otherwise = FuncRep String (UniquenessGeneral2 Char) [Float]
procBothInvF

-- | Allows to choose the variant of the computations in case of minimum lookup. Uses @-neg@ variants.
chooseMin :: String -> FuncRep String (UniquenessGeneral2 Char) [Float]
chooseMin :: String -> FuncRep String (UniquenessGeneral2 Char) [Float]
chooseMin String
xs
  | String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"y0" = FuncRep String (UniquenessGeneral2 Char) [Float]
procDiverse2Fneg
  | String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"0y" = FuncRep String (UniquenessGeneral2 Char) [Float]
procRhythmicity23Fneg
  | String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"y" = FuncRep String (UniquenessGeneral2 Char) [Float]
procBothFneg
  | Bool
otherwise = FuncRep String (UniquenessGeneral2 Char) [Float]
procBothInvFneg

-- | Allows to choose precision in the Numeric.showFFloat function being given a choice parameter.
precChoice :: String -> Maybe Int
precChoice :: String -> Maybe Int
precChoice String
xs
  | String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"y0" Bool -> Bool -> Bool
|| String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"y" Bool -> Bool -> Bool
|| String
xs String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"0y" = Int -> Maybe Int
forall a. a -> Maybe a
Just Int
0
  | Bool
otherwise = Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4