packages feed

uniqueness-periods-vector-examples 0.5.3.0 → 0.6.0.0

raw patch · 4 files changed

+46/−26 lines, 4 filesdep +paralleldep ~mmsyn6ukrdep ~phonetic-languages-ukrainian

Dependencies added: parallel

Dependency ranges changed: mmsyn6ukr, phonetic-languages-ukrainian

Files

ChangeLog.md view
@@ -53,3 +53,6 @@  * Fifth version revised C. Fixed issue with parsing empty second command line argument (or its absense, actually).  +## 0.6.0.0 -- 2020-09-25++* Sixth version. Changed dependency boundaries. Added parallel as a new dependency. Switched to parallel version of the uniqVec03 program. Added ghc-options section to the uniqVec03 executable. 
Proportion/Main.hs view
@@ -15,8 +15,12 @@ -- >    --   --   -- -- >   /  \_/  \_/  \ -- +-- To enable parallel computational speed ups, please, run the @uniqVec03@ executable with+-- @+RTS -threaded -RTS@ command line options. --  +{-# OPTIONS_GHC -threaded -rtsopts #-}+ {-# LANGUAGE CPP, BangPatterns #-}  module Main where@@ -27,7 +31,8 @@ import GHC.Base (mconcat) #endif #endif-import Data.Maybe (isNothing,fromJust)+import Control.Parallel.Strategies+import Data.Maybe (fromMaybe) import Text.Read (readMaybe) import qualified Data.Vector as V import String.Languages.UniquenessPeriods.Vector@@ -56,45 +61,38 @@ main = do   args <- getArgs   let file = concat . take 1 $ args-      gzm = readMaybe (concat . take 1 . drop 1 $ args)::(Maybe Int)-      gz = if isNothing gzm then 9 else fromJust gzm+      gz = fromMaybe 9 (readMaybe (concat . take 1 . drop 1 $ args)::(Maybe Int))   contents <- readFile file   let flines = filter (not . null . filter isUkrainian) . prepareText $ contents   data3 <- mapM (\ts -> do-   let maxE = (\k -> if k == 0 then 1 else k) . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . -              aux0 . convertToProperUkrainian) (justOneValue2Property . diverse2) $ ts)-       minE = (\k -> if k == 0 then 1 else k) . abs . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . -              aux0 . convertToProperUkrainian) (justOneValue2Property . negate . diverse2) $ ts)-       data2 = (\k -> if k == 0 then 1 else k) . diverse2 . uniquenessPeriodsVector3 " 01-" . aux0 . convertToProperUkrainian $ ts -   let ratio = if maxE == 1 then 0 else 2.0 * fromIntegral data2 / fromIntegral (minE + maxE)-       intervalN = if maxE == 1 then 0 else intervalNRealFrac (int2Float minE) (int2Float maxE) gz (int2Float data2)-       wordsN = if maxE == 1 then 0 else length . words $ ts+   let (maxE,minE,data2) = runEval ((parTuple3 rpar rseq rseq) ((\k -> if k == 0 then 1 else k) . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . +          aux0 . convertToProperUkrainian) (justOneValue2Property . diverse2) $ ts),+          (\k -> if k == 0 then 1 else k) . abs . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . +          aux0 . convertToProperUkrainian) (justOneValue2Property . negate . diverse2) $ ts),+          (\k -> if k == 0 then 1 else k) . diverse2 . uniquenessPeriodsVector3 " 01-" . aux0 . convertToProperUkrainian $ ts))+       ratio = if maxE == 1 then 0.0 else 2.0 * fromIntegral data2 / fromIntegral (minE + maxE)+       [intervalN,wordsN] = runEval ((parList rpar) [if maxE == 1 then 0 else intervalNRealFrac (int2Float minE) (int2Float maxE) gz (int2Float data2),+         if maxE == 1 then 0 else length . words $ ts])    putStrLn $ mconcat [show (minE::Int), "\t", show (data2::Int), "\t", show (maxE::Int), "\t",       showFFloat (Just 4) (fromIntegral data2 / fromIntegral minE) "\t", showFFloat (Just 4) (fromIntegral maxE / fromIntegral data2) "\t", -       showFFloat (Just 4) ratio "\t", show wordsN, "\t", show intervalN]+       showFFloat (Just 4) ratio "\t", show (wordsN::Int), "\t", show (intervalN::Int)]    return (ratio,(wordsN,intervalN))) $ flines   let (data31,wordsCnt0_data32) = unzip data3        data4 = filter (/= 0) data31   if null data4 then putStrLn (replicate 102 '-') >> putStrLn "1.000+-0.000\tALL!" >> putStrLn (replicate 102 '=') -- Well, this means that all the text consists of the unique (in phonetic meaning) words alongside every line. A rather rare occurrence.   else do -    let (mean1,disp) = meanWithDisp data4+    let (!mean1,!disp) = meanWithDisp data4         pairs = sort . filter ((/= 0) . snd) $ wordsCnt0_data32-        f xs n = show . length . takeWhile (== n) . dropWhile (/= n) $ xs-        g m n = length . takeWhile (\(_,v) -> v == n) . dropWhile (\(_,v) -> v /= n) . takeWhile (\(u,_) -> u == m) . dropWhile (\(u,_) -> u /= m) $ pairs+        g m n = (length . takeWhile (\(_,v) -> v == n) . dropWhile (\(_,v) -> v /= n) . takeWhile (\(u,_) -> u == m) . dropWhile (\(u,_) -> u /= m) $ pairs) `using` rdeepseq     putStrLn (replicate 102 '-')     mapM_ (\r -> putStr $ show r ++ "\t") [1..gz] >> putStrLn ""-    mapM_ (\r ->  putStr $ f (sort . map snd $ pairs) r ++ "\t") [1..gz] >> putStrLn ""+    mapM_ (\r ->  putStr $ (show . length . takeWhile (== r) . dropWhile (/= r) . sort . map snd $ pairs) ++ "\t") [1..gz] >> putStrLn ""     putStrLn $ showFFloat (Just 4) mean1 "+-" ++ showFFloat (Just 4) (sqrt disp) "\t" ++ show (length . filter (== 0) $ data31) ++ "\t" ++ show (length data3)     mapM_ (\r -> putStr $ show r ++ "\t") [2..8] >> putStrLn ""-    mapM_ (\r ->  putStr $ f (map fst $ pairs) r ++ "\t") [2..8] >> putStrLn ""+    mapM_ (\r ->  putStr $ (show . length . takeWhile (== r) . dropWhile (/= r) . map fst $ pairs) ++ "\t") [2..8] >> putStrLn ""     putStrLn (replicate 102 '*')     mapM_ (\m1 -> mapM_ (\n1 ->  putStr $  (if g m1 n1 == 0 then "." else show (g m1 n1)) ++ "\t") [1..gz] >> putStrLn "") [2..8]     putStrLn (replicate 102 '~')     mapM_ (\m1 -> mapM_ (\n1 ->  putStr $  show (g m1 n1) ++ "\t") [1..gz] >> putStrLn "") [2..8]     putStrLn (replicate 102 '=')   -isUkrainian :: Char -> Bool-isUkrainian x- | x == '\x0404' || (x >= '\x0406' && x <= '\x0407') || (x >= '\x0410' && x <= '\x0429') || x == '\x042C' || (x >= '\x042E' && x <= '\x0449') || x == '\x044C' || (x >= '\x044E' && x <= '\x044F') || x == '\x0454' || (x >= '\x0456' && x <= '\x0457') = True- | otherwise = False-
README.md view
@@ -39,3 +39,21 @@ and from GitHub page:  https://github.com/OleksandrZhabenko/uniqueness-periods-vector-examples/blob/master/0.4.0.0.zip++-------------++* For the uniqueness-periods-vector-examples of 0.5.3.0 version:++http://web.archive.org/web/20200922081933/https://raw.githubusercontent.com/OleksandrZhabenko/uniqueness-periods-vector-examples/master/0.5.3.0.zip++and from GitHub page:++https://github.com/OleksandrZhabenko/uniqueness-periods-vector-examples/blob/master/0.5.3.0.zip++------------------++To enable parallel computational speed ups for uniqVec03 executable, please run it with+++RTS -threaded -RTS++command line options. 
uniqueness-periods-vector-examples.cabal view
@@ -3,7 +3,7 @@ -- http://haskell.org/cabal/users-guide/  name:                uniqueness-periods-vector-examples-version:             0.5.3.0+version:             0.6.0.0 synopsis:            Examples of usage for the uniqueness-periods-vector series of packages description:         Examples of usage for the uniqueness-periods-vector series of packages. Several executables are planned to demonstrate the libraries work. homepage:            https://hackage.haskell.org/package/uniqueness-periods-vector-examples@@ -21,7 +21,7 @@   main-is:             Main.hs   -- other-modules:   -- other-extensions:-  build-depends:       base >=4.7 && <4.15, mmsyn6ukr >=0.8 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2 && <1+  build-depends:       base >=4.7 && <4.15, mmsyn6ukr >=0.8.1 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.1 && <1   hs-source-dirs:      Simple   default-language:    Haskell2010 @@ -29,7 +29,7 @@   main-is:             Main.hs   -- other-modules:   -- other-extensions:-  build-depends:       base >=4.7 && <4.15, mmsyn6ukr >=0.8 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2 && <1+  build-depends:       base >=4.7 && <4.15, mmsyn6ukr >=0.8.1 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.1 && <1   hs-source-dirs:      Lines   default-language:    Haskell2010 @@ -37,6 +37,7 @@   main-is:             Main.hs   -- other-modules:   other-extensions:    CPP, BangPatterns-  build-depends:       base >=4.7 && <4.15, mmsyn6ukr >=0.8 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2 && <1, uniqueness-periods-vector-filters >=0.2 && <1, uniqueness-periods-vector-stats >=0.1.2 && <1+  build-depends:       base >=4.7 && <4.15, mmsyn6ukr >=0.8.1 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.1 && <1, uniqueness-periods-vector-filters >=0.2 && <1, uniqueness-periods-vector-stats >=0.1.2 && <1, parallel >=3.2.0.6 && <4+  ghc-options:         -threaded -rtsopts   hs-source-dirs:      Proportion   default-language:    Haskell2010