{-# OPTIONS_HADDOCK show-extensions #-}

-- |
-- Module      :  Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG23Old
-- Copyright   :  (c) OleksandrZhabenko 2020-2022
-- License     :  MIT
-- Stability   :  Experimental
-- Maintainer  :  olexandr543@yahoo.com
--
-- Generalization of the functionality of the DobutokO.Poetry.Norms
-- and DobutokO.Poetry.Norms.Extended modules
-- from the @dobutokO-poetry@ package. Instead of vectors, uses arrays.

module Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG23Old (
  -- * Functions with 'Double'
  -- ** NEW Working with generated by r-glpk-phonetic-languages-ukrainian-durations syllable durations
  procBoth3F
  , procBoth3FF
  , procBoth3InvF
  , procBoth3InvFF
) where

import Phonetic.Languages.Array.Ukrainian.Common
import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2CommonOld
import Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2CommonOld
import Phonetic.Languages.Basis
import qualified Languages.Phonetic.Ukrainian.Syllable.Double.ArrInt8 as SD
import Melodics.Ukrainian.ArrInt8
import GHC.Arr (Array)
import GHC.Int (Int8)

procBoth3F
  :: (Ord c) => (Double -> c)
  -> Coeffs2
  -> FuncRep2 String Double c
procBoth3F :: (Double -> c) -> Coeffs2 -> FuncRep2 String Double c
procBoth3F Double -> c
g Coeffs2
coeffs  = (Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
forall c.
Ord c =>
(Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
procB2F Double -> c
g [[[Sound8]]] -> [[Double]]
SD.syllableDurationsD3 Coeffs2
coeffs
{-# INLINE procBoth3F #-}

procBoth3InvF
  :: (Ord c) => (Double -> c)
  -> Coeffs2
  -> FuncRep2 String Double c
procBoth3InvF :: (Double -> c) -> Coeffs2 -> FuncRep2 String Double c
procBoth3InvF Double -> c
g Coeffs2
coeffs  = (Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
forall c.
Ord c =>
(Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
procB2InvF Double -> c
g [[[Sound8]]] -> [[Double]]
SD.syllableDurationsD3 Coeffs2
coeffs
{-# INLINE procBoth3InvF #-}

procBoth3FF
  :: (Ord c) => Double
  -> (Double -> c)
  -> Coeffs2
  -> FuncRep2 String Double c
procBoth3FF :: Double -> (Double -> c) -> Coeffs2 -> FuncRep2 String Double c
procBoth3FF Double
k Double -> c
g Coeffs2
coeffs  = Double
-> (Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
forall c.
Ord c =>
Double
-> (Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
procB2FF Double
k Double -> c
g [[[Sound8]]] -> [[Double]]
SD.syllableDurationsD3 Coeffs2
coeffs
{-# INLINE procBoth3FF #-}

procBoth3InvFF
  :: (Ord c) => Double
  -> (Double -> c)
  -> Coeffs2
  -> FuncRep2 String Double c
procBoth3InvFF :: Double -> (Double -> c) -> Coeffs2 -> FuncRep2 String Double c
procBoth3InvFF Double
k Double -> c
g Coeffs2
coeffs  = Double
-> (Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
forall c.
Ord c =>
Double
-> (Double -> c)
-> ([[[Sound8]]] -> [[Double]])
-> Coeffs2
-> FuncRep2 String Double c
procB2InvFF Double
k Double -> c
g [[[Sound8]]] -> [[Double]]
SD.syllableDurationsD3 Coeffs2
coeffs
{-# INLINE procBoth3InvFF #-}