packages feed

phonetic-languages-simplified-properties-array-0.17.2.0: Phladiprelio/Ukrainian/PropertiesFuncRepG2Common.hs

{-# OPTIONS_HADDOCK show-extensions #-}

-- |
-- Module      :  Phladiprelio.Ukrainian.PropertiesFuncRepG2Common
-- Copyright   :  (c) Oleksandr Zhabenko 2020-2023
-- License     :  MIT
-- Stability   :  Experimental
-- Maintainer  :  oleksandr.zhabenko@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.

{-# LANGUAGE CPP, BangPatterns #-}

module Phladiprelio.Ukrainian.PropertiesFuncRepG2Common where

import GHC.Base
import Phladiprelio.Ukrainian.Common
import Phladiprelio.UniquenessPeriodsG
import Phladiprelio.Basis
import GHC.Float (int2Double)
import qualified Phladiprelio.Ukrainian.Syllable as S
import Phladiprelio.Ukrainian.Melodics
import GHC.Arr (Array)
import GHC.Int (Int8)
import Phladiprelio.Ukrainian.Emphasis
import Phladiprelio.Coeffs
import Phladiprelio.Rhythmicity.Factor

procB2FGTup
  :: Coeffs2
  -> ([Double] -> Double)
  -> ([[[Sound8]]] -> [[Double]])
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Int8)
  -> Array Int (Int8, FlowSound -> Sound8)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int (Int8, [Int8])
  -> Array Int (Char,Int8)
  -> Array Int (Int8,[Int8])
  -> Array Int (Char, Bool)
  -> Array Int (Char, Bool)
  -> Array Int (Int8,Bool)
  -> (Double -> Double)
  -> FlowSound
  -> FuncRep2 ReadyForConstructionUkr Double Double
procB2FGTup coeffs h1 g tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 h sels
 = D (\xs -> case xs of
               Str ts ->
                 let ys = convertToProperUkrainianI8WithTuples  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 .          map (\x -> if x == '-' then ' ' else x) $ ts in  ((int2Double . fromEnum . diverse2GGL sels [100,101] $ ys)*(h1 . mconcat . g .
                             map (S.divVwls . S.reSyllableCntntsTup tup17 . S.groupSnds) . words1 $ ys))
               FSL xsss -> h1 . mconcat . g $ xsss) h
{-# INLINE procB2FGTup #-}

procB2InvFGTup
  :: Coeffs2
  -> ([Double] -> Double)
  ->  ([[[Sound8]]] -> [[Double]])
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Int8)
  -> Array Int (Int8, FlowSound -> Sound8)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int (Int8, [Int8])
  -> Array Int (Char,Int8)
  -> Array Int (Int8,[Int8])
  -> Array Int (Char, Bool)
  -> Array Int (Char, Bool)
  -> Array Int (Int8,Bool)
  -> (Double -> Double)
  -> FlowSound
  -> FuncRep2 ReadyForConstructionUkr Double Double
procB2InvFGTup coeffs h1 g tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 h sels
 = D (\xs -> case xs of
               Str ts ->
                 let !ys = convertToProperUkrainianI8WithTuples  tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 .
                             map (\x -> if x == '-' then ' ' else x) $ ts
                     !z = diverse2GGL sels [100,101] ys in if z == 0 then  (h1 . mconcat . g . map (S.divVwls . S.reSyllableCntntsTup tup17 .
                             S.groupSnds) . words1 $ ys) ** 2.0
                                 else  ((h1 . mconcat . g . map (S.divVwls . S.reSyllableCntntsTup tup17 . S.groupSnds) . words1 $ ys) / (int2Double . fromEnum $ z))
               FSL xsss -> h1 . mconcat . g $ xsss) h
{-# INLINE procB2InvFGTup #-}

procB2FTup
  :: Coeffs2
  -> ([[[Sound8]]] -> [[Double]])
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Int8)
  -> Array Int (Int8, FlowSound -> Sound8)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int (Int8, [Int8])
  -> Array Int (Char,Int8)
  -> Array Int (Int8,[Int8])
  -> Array Int (Char, Bool)
  -> Array Int (Char, Bool)
  -> Array Int (Int8,Bool)
  -> (Double -> Double)
  -> FlowSound
  -> FuncRep2 ReadyForConstructionUkr Double Double
procB2FTup coeffs = procB2FGTup coeffs (eval23Coeffs coeffs)
{-# INLINE procB2FTup #-}

procB2FFTup
  :: Factors
  -> Double
  -> Coeffs2
  -> ([[[Sound8]]] -> [[Double]])
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Int8)
  -> Array Int (Int8, FlowSound -> Sound8)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int (Int8, [Int8])
  -> Array Int (Char,Int8)
  -> Array Int (Int8,[Int8])
  -> Array Int (Char, Bool)
  -> Array Int (Char, Bool)
  -> Array Int (Int8,Bool)
  -> (Double -> Double)
  -> FlowSound
  -> FuncRep2 ReadyForConstructionUkr Double Double
procB2FFTup ff k coeffs = procB2FGTup coeffs (eval23CoeffsF ff k coeffs) 
{-# INLINE procB2FFTup #-}

procB2InvFTup
  :: Coeffs2
  -> ([[[Sound8]]] -> [[Double]])
  ->  Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Int8)
  -> Array Int (Int8, FlowSound -> Sound8)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int (Int8, [Int8])
  -> Array Int (Char,Int8)
  -> Array Int (Int8,[Int8])
  -> Array Int (Char, Bool)
  -> Array Int (Char, Bool)
  -> Array Int (Int8,Bool)
  -> (Double -> Double)
  -> FlowSound
  -> FuncRep2 ReadyForConstructionUkr Double Double
procB2InvFTup coeffs = procB2InvFGTup coeffs (eval23Coeffs coeffs)
{-# INLINE procB2InvFTup #-}

procB2InvFFTup
  :: Factors
  -> Double
  -> Coeffs2
  -> ([[[Sound8]]] -> [[Double]])
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Int8)
  -> Array Int (Int8, FlowSound -> Sound8)
  -> Array Int (Int8, Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int ([Int8], Bool)
  -> Array Int (Int8, [Int8])
  -> Array Int (Char,Int8)
  -> Array Int (Int8,[Int8])
  -> Array Int (Char, Bool)
  -> Array Int (Char, Bool)
  -> Array Int (Int8,Bool)
  -> (Double -> Double)
  -> FlowSound
  -> FuncRep2 ReadyForConstructionUkr Double Double
procB2InvFFTup ff k coeffs = procB2InvFGTup coeffs (eval23CoeffsF ff k coeffs)
{-# INLINE procB2InvFFTup #-}