Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/winterland1989/means
calculate varieties of mean/average using semigroup.
https://github.com/winterland1989/means
Last synced: 29 days ago
JSON representation
calculate varieties of mean/average using semigroup.
- Host: GitHub
- URL: https://github.com/winterland1989/means
- Owner: winterland1989
- License: mit
- Created: 2016-06-13T04:07:28.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-06-13T04:46:48.000Z (over 8 years ago)
- Last Synced: 2024-10-28T00:33:04.322Z (3 months ago)
- Language: Haskell
- Size: 4.88 KB
- Stars: 3
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
means
=====[![Hackage](https://img.shields.io/hackage/v/means.svg?style=flat)](http://hackage.haskell.org/package/means)
[![Travis-CI](https://travis-ci.org/winterland1989/means.svg)](https://travis-ci.org/winterland1989/means)This package provide following mean calculations using semigroup:
+ Arithmetic/ Weighted Arithmetic mean:
![AM](https://en.wikipedia.org/api/rest_v1/media/math/render/svg/6a2a249444267483a65897c33b045613e238bd0d)
+ Geometric mean:
![GM](https://en.wikipedia.org/api/rest_v1/media/math/render/svg/4e4f47c36a4852c6919089a709ed3738460b9b17)
+ Harmonic mean:
![HM](https://en.wikipedia.org/api/rest_v1/media/math/render/svg/53baf18a961ebb4aa823ffcb534002954a993e0f)
+ Quadratic mean(RMS):
![QM](https://en.wikipedia.org/api/rest_v1/media/math/render/svg/bb6d0d08bcd6e0d5ecb642f7f843591743993adc)
+ Cubic mean:
![CM](https://en.wikipedia.org/api/rest_v1/media/math/render/svg/87ea526bc6b48f6abb52bc522d57c9fedacbaf90)
+ Midrange mean:
![MM](https://en.wikipedia.org/api/rest_v1/media/math/render/svg/b554f5873aca205738f447d576c43e934dbaab62)
Check [wikipedia](https://en.wikipedia.org/wiki/Average) for details.
Example
-------```haskell
*Data.Semigroup.Means> getAM . foldr1 (<>) . map am $ [4, 36, 45, 50, 75]
42.0
*Data.Semigroup.Means> getGM . foldr1 (<>) . map gm $ [4, 36, 45, 50, 75]
30.000000000000007
*Data.Semigroup.Means> getHM . foldr1 (<>) . map hm $ [4, 36, 45, 50, 75]
15.0
*Data.Semigroup.Means> :m + Data.Ratio
*Data.Semigroup.Means Data.Ratio> getMM . foldr1 (<>) . map mm $ [4, 36, 45, 50, 75] :: Ratio Int
79 % 2
*Data.Semigroup.Means Data.Ratio> getAM . foldr1 (<>) . map am $ [4, 36, 45, 50, 75] :: Ratio Int
42 % 1
```