{-# 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 #-}