module Main ( main ) where import Data.BigDecimal import Data.BigFloating import Data.Maybe (fromJust) bigPi :: BigDecimal bigPi = piChudnovsky (DOWN, Just 100) halfToneStep :: BigDecimal halfToneStep = nthRoot 2 12 (HALF_UP, Just 50) halfToneStepsFrom :: BigDecimal -> Integer -> BigDecimal halfToneStepsFrom baseFrequency halfToneSteps = baseFrequency * halfToneStep ^^ halfToneSteps main :: IO () main = do let a = fromString "3.1415926" b = BigDecimal 31415926 7 r = fromJust $ fromStringMaybe "2" print $ 100 * a print $ 100 * b print $ a == b print bigPi print $ 2 / bigPi print $ r^2 * pi print $ sqrt 2 print $ sqr 2 (halfUp 3000) print $ roundBD (halfToneStepsFrom 440 12) (halfUp 2)