{-|
Module      :  Numeric.VariablePrecision.Float.Aliases
Copyright   :  (c) Claude Heiland-Allen 2012
License     :  BSD3

Maintainer  :  claudiusmaximus@goto10.org
Stability   :  stable
Portability :  portable

Boilerplate definitions generated by:

> flip mapM_ [1..53] $ \p -> let s = show p in
>   putStrLn $ "type F" ++ s ++ " = VFloat N" ++ s ++
>     " ; f" ++ s ++ " :: F" ++ s ++ " ; f" ++ s ++ " = 0"

Along with aliases for 'recodeFloat' with specialized types.

-}
module Numeric.VariablePrecision.Float.Aliases where

import Numeric.VariablePrecision.Float (VFloat, recodeFloat)
import TypeLevel.NaturalNumber
import TypeLevel.NaturalNumber.ExtraNumbers

-- | Convert to a Float from the same precision.
toFloat :: F24 -> Float
toFloat = recodeFloat

-- | Convert from a Float to the same precision.
fromFloat :: Float -> F24
fromFloat = recodeFloat

-- | Convert to a Double from the same precision.
toDouble :: F53 -> Double
toDouble = recodeFloat

-- | Convert from a Double to the same precision.
fromDouble :: Double -> F53
fromDouble = recodeFloat

type F1 = VFloat N1 ; f1 :: F1 ; f1 = 0
type F2 = VFloat N2 ; f2 :: F2 ; f2 = 0
type F3 = VFloat N3 ; f3 :: F3 ; f3 = 0
type F4 = VFloat N4 ; f4 :: F4 ; f4 = 0
type F5 = VFloat N5 ; f5 :: F5 ; f5 = 0
type F6 = VFloat N6 ; f6 :: F6 ; f6 = 0
type F7 = VFloat N7 ; f7 :: F7 ; f7 = 0
type F8 = VFloat N8 ; f8 :: F8 ; f8 = 0
type F9 = VFloat N9 ; f9 :: F9 ; f9 = 0
type F10 = VFloat N10 ; f10 :: F10 ; f10 = 0
type F11 = VFloat N11 ; f11 :: F11 ; f11 = 0
type F12 = VFloat N12 ; f12 :: F12 ; f12 = 0
type F13 = VFloat N13 ; f13 :: F13 ; f13 = 0
type F14 = VFloat N14 ; f14 :: F14 ; f14 = 0
type F15 = VFloat N15 ; f15 :: F15 ; f15 = 0
type F16 = VFloat N16 ; f16 :: F16 ; f16 = 0
type F17 = VFloat N17 ; f17 :: F17 ; f17 = 0
type F18 = VFloat N18 ; f18 :: F18 ; f18 = 0
type F19 = VFloat N19 ; f19 :: F19 ; f19 = 0
type F20 = VFloat N20 ; f20 :: F20 ; f20 = 0
type F21 = VFloat N21 ; f21 :: F21 ; f21 = 0
type F22 = VFloat N22 ; f22 :: F22 ; f22 = 0
type F23 = VFloat N23 ; f23 :: F23 ; f23 = 0
type F24 = VFloat N24 ; f24 :: F24 ; f24 = 0
type F25 = VFloat N25 ; f25 :: F25 ; f25 = 0
type F26 = VFloat N26 ; f26 :: F26 ; f26 = 0
type F27 = VFloat N27 ; f27 :: F27 ; f27 = 0
type F28 = VFloat N28 ; f28 :: F28 ; f28 = 0
type F29 = VFloat N29 ; f29 :: F29 ; f29 = 0
type F30 = VFloat N30 ; f30 :: F30 ; f30 = 0
type F31 = VFloat N31 ; f31 :: F31 ; f31 = 0
type F32 = VFloat N32 ; f32 :: F32 ; f32 = 0
type F33 = VFloat N33 ; f33 :: F33 ; f33 = 0
type F34 = VFloat N34 ; f34 :: F34 ; f34 = 0
type F35 = VFloat N35 ; f35 :: F35 ; f35 = 0
type F36 = VFloat N36 ; f36 :: F36 ; f36 = 0
type F37 = VFloat N37 ; f37 :: F37 ; f37 = 0
type F38 = VFloat N38 ; f38 :: F38 ; f38 = 0
type F39 = VFloat N39 ; f39 :: F39 ; f39 = 0
type F40 = VFloat N40 ; f40 :: F40 ; f40 = 0
type F41 = VFloat N41 ; f41 :: F41 ; f41 = 0
type F42 = VFloat N42 ; f42 :: F42 ; f42 = 0
type F43 = VFloat N43 ; f43 :: F43 ; f43 = 0
type F44 = VFloat N44 ; f44 :: F44 ; f44 = 0
type F45 = VFloat N45 ; f45 :: F45 ; f45 = 0
type F46 = VFloat N46 ; f46 :: F46 ; f46 = 0
type F47 = VFloat N47 ; f47 :: F47 ; f47 = 0
type F48 = VFloat N48 ; f48 :: F48 ; f48 = 0
type F49 = VFloat N49 ; f49 :: F49 ; f49 = 0
type F50 = VFloat N50 ; f50 :: F50 ; f50 = 0
type F51 = VFloat N51 ; f51 :: F51 ; f51 = 0
type F52 = VFloat N52 ; f52 :: F52 ; f52 = 0
type F53 = VFloat N53 ; f53 :: F53 ; f53 = 0