Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Math.Number.DimensionalAnalysis
Description
This module provides dimensional analysis according to SI system of units. For reference have used https://en.wikipedia.org/wiki/Dimensional_analysis and https://en.wikipedia.org/wiki/International_System_of_Units.
This module supports run-time checked quantities.
In reality this should be according to the International system of units, but I have not used the official standard documents when writing this code. However it is recognized that any major deviation from the standard would be considered a bug in this code. And definitely the International system of units is basis for this code.
For official references, see e.g. "ISO80000-1:2009:Quantities and Units" and "NIST Special Publication 330, 2008: The International system of units".
For c++ approach to dimensional analysis, see "Barton&Nackman: Scientific and Engineering C++".
Example uses:
show (3 %* meter) = "3 m"
3 %* meter + 4 %* kilogram == throw (InvalidDimensionsException meterDimension kilogramDimension "...")
convert (3 %* meter) (milli meter) == return 3000.0
convert (3 %* meter) kilogram == fail "..."
(3 %* meter) =/ (milli meter) == 3000.0
(3 %* meter) =/ kilogram == error "..."
convert lightyear (kilo meter) == return 9.4607304725808e12
3 logarithmic
dBV == 1000.0 %* volt
Synopsis
- data Quantity r = As {
- valueAmount :: r
- valueDimension :: !Dimension
- dimensionlessAmount :: Show r => Quantity r -> r
- equalUpTo :: (Floating a, Show a, Ord a) => a -> Quantity a -> Quantity a -> Bool
- data Dimension = Dimension {}
- dimensionMultiples :: Dimension -> Stream Dimension
- quantityPowers :: (Num a, Show a) => Quantity a -> Stream (Quantity a)
- isFractionalDimensional :: Dimension -> Bool
- type Prefix r = Quantity r -> Quantity r
- hasDimension :: Quantity r -> Dimension -> Bool
- data DimensionException = InvalidDimensionsException Dimension Dimension String
- mapQuantity :: (a -> b) -> (Dimension -> Dimension) -> Quantity a -> Quantity b
- mapQuantity2 :: (a -> b -> c) -> (Dimension -> Dimension -> Dimension) -> Quantity a -> Quantity b -> Quantity c
- complexQuantity :: Show r => Complex (Quantity r) -> Quantity (Complex r)
- quantityComplex :: Quantity (Complex r) -> Complex (Quantity r)
- ratioQuantity :: (Integral r, Show r) => Ratio (Quantity r) -> Quantity (Ratio r)
- class VectorSpace u => Unit u where
- class Unit u => LiteralUnit u where
- fromAmount :: Scalar u -> u
- zeroAmount :: (Scalar u -> u) -> Scalar u
- conversionFactor :: (Scalar u -> u) -> Scalar u
- fromQuantityDef :: (MonadFail m, Alternative m, Show a) => Dimension -> (a -> b) -> Quantity a -> m b
- data Level r = Level {
- referenceValue :: Quantity r
- baseOfLogarithm :: r
- scale :: (Show a, Floating a, Real a) => Quantity a -> Level a -> Quantity a
- logarithmic :: Floating a => a -> Level a -> Quantity a
- hyperbolic :: RealFloat a => Complex a -> Level (Complex a) -> Quantity (Complex a)
- radianScale :: RealFloat a => Level (Complex a)
- bitScale :: Num a => Level a
- belScale :: Num a => Level a
- dBV :: Floating a => Level a
- dBu :: Floating a => Level a
- dBSPL :: Floating a => Level a
- dBSIL :: (Floating a, Show a) => Level a
- dBSWL :: Floating a => Level a
- lengthScale :: Floating a => Level a
- frequencyScale :: Floating a => Level a
- octave :: Floating a => Level a
- momentMagnitudeScale :: (Show a, Floating a) => Level a
- entropyScale :: Floating a => Level a
- hartleyScale :: Num a => Level a
- banScale :: Num a => Level a
- timeScale :: Floating a => Level a
- weightScale :: Floating a => Level a
- nines :: Double -> Double
- fromNines :: Double -> Double
- notePitch :: Int -> Int -> Quantity Double
- ratioToDecibel :: (Fractional a, Show a, Floating a, Real a) => Quantity a -> Level a -> Quantity a
- bit :: (Floating a, Real a, Show a) => Quantity a
- byte :: (Floating a, Real a, Show a) => Quantity a
- fromAlternatives :: (Floating a, Real a, Show a) => a -> Quantity a
- toAlternatives :: (Floating a, Ord a, ShowPrecision a, MonadFail m) => Quantity a -> m a
- (@@) :: r -> Dimension -> Quantity r
- convertTo :: (MonadFail m, Floating a, ShowPrecision a, Ord a, VectorSpace a) => Quantity a -> (String, Quantity a) -> m String
- (=/) :: (Fractional (Scalar a), Unit a, Show a) => a -> a -> Scalar a
- convert :: (Scalar u ~ Scalar v, Unit v, Unit u, Show v, Show u, MonadFail m, Fractional (Scalar u)) => v -> u -> m (Scalar u)
- dimensionBasis :: [Dimension]
- isDimensionless :: Dimension -> Bool
- mapDimension :: (Rational -> Rational) -> Dimension -> Dimension
- zipWithDimension :: (Rational -> Rational -> Rational) -> Dimension -> Dimension -> Dimension
- (=*) :: VectorSpace v => Scalar v -> v -> v
- deca :: (VectorSpace u, Num (Scalar u)) => u -> u
- hecto :: (VectorSpace u, Num (Scalar u)) => u -> u
- kilo :: (VectorSpace u, Num (Scalar u)) => u -> u
- mega :: (VectorSpace u, Num (Scalar u)) => u -> u
- giga :: (VectorSpace u, Num (Scalar u)) => u -> u
- tera :: (VectorSpace u, Num (Scalar u)) => u -> u
- peta :: (VectorSpace u, Num (Scalar u)) => u -> u
- exa :: (VectorSpace u, Num (Scalar u)) => u -> u
- zetta :: (VectorSpace u, Num (Scalar u)) => u -> u
- yotta :: (VectorSpace u, Num (Scalar u)) => u -> u
- ronna :: (VectorSpace u, Num (Scalar u)) => u -> u
- quetta :: (VectorSpace u, Num (Scalar u)) => u -> u
- prefixValue :: Num a => Prefix a -> a
- decimalPrefixes :: Num a => [(String, a)]
- floatingPrefixes :: Floating a => [(String, a)]
- binaryPrefixes :: Num a => [(String, a)]
- kibi :: (VectorSpace u, Num (Scalar u)) => u -> u
- mebi :: (VectorSpace u, Num (Scalar u)) => u -> u
- gibi :: (VectorSpace u, Num (Scalar u)) => u -> u
- tebi :: (VectorSpace u, Num (Scalar u)) => u -> u
- pebi :: (VectorSpace u, Num (Scalar u)) => u -> u
- exbi :: (VectorSpace u, Num (Scalar u)) => u -> u
- zebi :: (VectorSpace u, Num (Scalar u)) => u -> u
- yobi :: (VectorSpace u, Num (Scalar u)) => u -> u
- deci :: (VectorSpace u, Floating (Scalar u)) => u -> u
- centi :: (VectorSpace u, Floating (Scalar u)) => u -> u
- milli :: (VectorSpace u, Floating (Scalar u)) => u -> u
- micro :: (VectorSpace u, Floating (Scalar u)) => u -> u
- nano :: (VectorSpace u, Floating (Scalar u)) => u -> u
- pico :: (VectorSpace u, Floating (Scalar u)) => u -> u
- femto :: (VectorSpace u, Floating (Scalar u)) => u -> u
- atto :: (VectorSpace u, Floating (Scalar u)) => u -> u
- zepto :: (VectorSpace u, Floating (Scalar u)) => u -> u
- yocto :: (VectorSpace u, Floating (Scalar u)) => u -> u
- ronto :: (VectorSpace u, Floating (Scalar u)) => u -> u
- quecto :: (VectorSpace u, Floating (Scalar u)) => u -> u
- (=+=) :: VectorSpace v => v -> v -> v
- (=-=) :: VectorSpace v => v -> v -> v
- requireDimensionless :: Show a => String -> (a -> a) -> Quantity a -> Quantity a
- liftQuantityClosure :: (Closure Stream a -> Closure Stream b) -> Closure Stream (Quantity a) -> Closure Stream (Quantity b)
- liftQuantityClosure2 :: (Show (Closure Stream a), Show (Closure Stream b)) => String -> (Closure Stream a -> Closure Stream b -> Closure Stream c) -> Closure Stream (Quantity a) -> Closure Stream (Quantity b) -> Closure Stream (Quantity c)
- piComplexQuantity :: RealFloat a => Quantity (Complex a)
- sqrtComplexQuantity :: RealFloat a => Quantity (Complex a) -> Quantity (Complex a)
- powerComplexQuantity :: RealFloat a => Quantity (Complex a) -> Rational -> Quantity (Complex a)
- expComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- logComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- sinComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- cosComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- tanComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- asinComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- acosComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- atanComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- sinhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- coshComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- tanhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- asinhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- acoshComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- atanhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- readprefix :: ReadPrec (Quantity Double -> Quantity Double)
- readunit :: ReadPrec (String, Quantity Double)
- invalidDimensions :: (Show b, Show c) => String -> Dimension -> Dimension -> b -> c -> a
- invalidDimensionsM :: (MonadFail m, Show b, Show c) => String -> Dimension -> Dimension -> b -> c -> m a
- plusQ :: (MonadFail m, Num r, Show r) => Quantity r -> Quantity r -> m (Quantity r)
- minusQ :: (MonadFail m, Num r, Show r) => Quantity r -> Quantity r -> m (Quantity r)
- showDimension :: Dimension -> String
- fullDimensionTable :: [(Dimension, String)]
- dimensionTable :: [(Dimension, String)]
- dimensionProduct_reader :: ReadPrec [Dimension]
- dimension_divider_reader :: ReadPrec [Dimension]
- dimension_reader :: ReadPrec Dimension
- dimensionless :: Dimension
- ppDimension :: Dimension -> Doc
- kelvinDimension :: Dimension
- faradDimension :: Dimension
- ohmDimension :: Dimension
- sievertDimension :: Dimension
- voltDimension :: Dimension
- pascalDimension :: Dimension
- henryDimension :: Dimension
- weberDimension :: Dimension
- jouleDimension :: Dimension
- newtonDimension :: Dimension
- teslaDimension :: Dimension
- meterDimension :: Dimension
- kilogramDimension :: Dimension
- secondDimension :: Dimension
- ampereDimension :: Dimension
- candelaDimension :: Dimension
- molDimension :: Dimension
- radianDimension :: Dimension
- steradianDimension :: Dimension
- steradian :: Floating a => Quantity a
- becquerelDimension :: Dimension
- becquerel :: Floating a => Quantity a
- grayDimension :: Dimension
- gray :: Floating a => Quantity a
- luxDimension :: Dimension
- lux :: Floating a => Quantity a
- lumenDimension :: Dimension
- lumen :: Floating a => Quantity a
- kelvinQuantity :: Floating a => Quantity a
- siemens :: Floating a => Quantity a
- second :: Floating a => Quantity a
- meter :: Floating a => Quantity a
- kilogram :: Floating a => Quantity a
- gram :: Floating a => Quantity a
- mole :: Floating a => Quantity a
- candela :: Floating a => Quantity a
- kelvin :: Floating a => Quantity a
- ampere :: Floating a => Quantity a
- coulomb :: Floating a => Quantity a
- tesla :: Floating a => Quantity a
- henry :: Floating a => Quantity a
- newton :: Floating a => Quantity a
- pascal :: Floating a => Quantity a
- joule :: Floating a => Quantity a
- weber :: Floating a => Quantity a
- volt :: Floating a => Quantity a
- sievert :: Floating a => Quantity a
- ohm :: Floating a => Quantity a
- farad :: Floating a => Quantity a
- watt :: Floating a => Quantity a
- minute :: Floating a => Quantity a
- hour :: Floating a => Quantity a
- day :: Floating a => Quantity a
- week :: Floating a => Quantity a
- year :: Floating a => Quantity a
- degree :: Floating a => Quantity a
- radian :: Floating a => Quantity a
- katalDimension :: Dimension
- katal :: Floating a => Quantity a
- fromCelsius :: (Show a, Fractional a) => a -> Quantity a
- fromFahrenheit :: (Fractional a, Show a) => a -> Quantity a
- fromRankine :: (Fractional a, Show a) => a -> Quantity a
- toFahrenheit :: (MonadFail m, Fractional a, VectorSpace a) => Quantity a -> m a
- toCelsius :: (Fractional a, Show a) => Quantity a -> a
- toRankine :: (Fractional a, Show a) => Quantity a -> a
- fromRadiansAngle :: Floating a => a -> Quantity a
- fromDegreesAngle :: Floating a => a -> Quantity a
- hertzDimension :: Dimension
- hertz :: Floating a => Quantity a
- squaremeterDimension :: Dimension
- squaremeter :: Floating a => Quantity a
- cubicmeterDimension :: Dimension
- cubicmeter :: Floating a => Quantity a
- wattDimension :: Dimension
- coulombDimension :: Dimension
- siemensDimension :: Dimension
- planck_length :: Floating a => Quantity a
- planck_mass :: Floating a => Quantity a
- planckTime :: Floating a => Quantity a
- planckCharge :: Floating a => Quantity a
- planckTemperature :: Floating a => Quantity a
- boltzmannConstant :: Floating a => Quantity a
- gravitationalConstant :: Floating a => Quantity a
- standardAccelerationOf_gravity :: Floating a => Quantity a
- standardAtmosphere :: Floating a => Quantity a
- speedOf_light :: Floating a => Quantity a
- planckConstant :: Floating a => Quantity a
- reducedPlanckConstant :: Floating a => Quantity a
- electronvolt :: Floating a => Quantity a
- magneticConstant :: Floating a => Quantity a
- electricConstant :: (Show a, Floating a) => Quantity a
- characteristic_impedanceOfVacuum :: Floating a => Quantity a
- coulombsConstant :: Floating a => Quantity a
- elementaryCharge :: Floating a => Quantity a
- bohr_magneton :: Floating a => Quantity a
- conductanceQuantum :: Floating a => Quantity a
- inverseConductanceQuantum :: Floating a => Quantity a
- josephsonConstant :: Floating a => Quantity a
- magneticFluxQuantum :: Floating a => Quantity a
- nuclear_magneton :: Floating a => Quantity a
- von_klitzingConstant :: Floating a => Quantity a
- bohr_radius :: Floating a => Quantity a
- classical_electron_radius :: Floating a => Quantity a
- electron_mass :: Floating a => Quantity a
- fermiCouplingConstant :: (Show a, Floating a) => Quantity a
- fineStructureConstant :: Floating a => Quantity a
- hartree_energy :: Floating a => Quantity a
- proton_mass :: Floating a => Quantity a
- quantumOfCirculation :: Floating a => Quantity a
- rydbergConstant :: Floating a => Quantity a
- thomsonCrossSection :: Floating a => Quantity a
- groundStateCesiumHyperfineTransitionFrequency :: Floating a => Quantity a
- weak_mixingAngle :: Floating a => Quantity a
- luminousEfficacyOfMonochromatic540e12HertzRadiation :: Floating a => Quantity a
- avogadroConstant :: Floating a => Quantity a
- atomicMassConstant :: Floating a => Quantity a
- faradayConstant :: (Floating a, Show a) => Quantity a
- firstRadiationConstant :: (Floating a, Show a) => Quantity a
- loschmidtConstant :: Floating a => Quantity a
- gasConstant :: (Floating a, Show a) => Quantity a
- molarPlanckConstant :: (Floating a, Show a) => Quantity a
- secondRadiationConstant :: (Floating a, Show a) => Quantity a
- stefanBoltzmannConstant :: (Floating a, Show a) => Quantity a
- efimovFactor :: Floating a => Quantity a
- lightyear :: Num a => Quantity a
- astronomicalUnit :: Floating a => Quantity a
- parsec :: Floating a => Quantity a
- liter :: Quantity Double
- litre :: Quantity Double
- siDimensions :: [(String, Dimension)]
- siUnits :: [(String, Quantity Double)]
- siPrefixes :: Floating a => [(String, Prefix a)]
- siZeros :: [(String, Quantity Double)]
Documentation
Constructors
As | |
Fields
|
Instances
dimensionlessAmount :: Show r => Quantity r -> r Source #
checked projection
Constructors
Dimension | |
Fields
|
Instances
isFractionalDimensional :: Dimension -> Bool Source #
isFractionalDimensional checks if a dimension is fractional dimensional
data DimensionException Source #
Constructors
InvalidDimensionsException Dimension Dimension String |
Instances
Exception DimensionException Source # | |
Defined in Math.Number.DimensionalAnalysis Methods toException :: DimensionException -> SomeException # fromException :: SomeException -> Maybe DimensionException # | |
Show DimensionException Source # | |
Defined in Math.Number.DimensionalAnalysis Methods showsPrec :: Int -> DimensionException -> ShowS # show :: DimensionException -> String # showList :: [DimensionException] -> ShowS # |
mapQuantity2 :: (a -> b -> c) -> (Dimension -> Dimension -> Dimension) -> Quantity a -> Quantity b -> Quantity c Source #
class VectorSpace u => Unit u where Source #
the Unit class should be defined by any newtype based types that should interact well with the dimensional analysis mechanism.
Methods
amount :: u -> Scalar u Source #
fromQuantity :: (Alternative m, MonadFail m) => Quantity (Scalar u) -> m u Source #
Instances
class Unit u => LiteralUnit u where Source #
The fromAmount method must check that compile-time information about dimensions
is sufficient to determine dimension of the given input
e.g. (fromAmount 3 :: Mass)
is ok, but (fromAmount 3 :: Quantity Double)
is not.
Minimal complete definition
Methods
fromAmount :: Scalar u -> u Source #
zeroAmount :: (Scalar u -> u) -> Scalar u Source #
conversionFactor :: (Scalar u -> u) -> Scalar u Source #
Instances
fromQuantityDef :: (MonadFail m, Alternative m, Show a) => Dimension -> (a -> b) -> Quantity a -> m b Source #
<https://en.wikipedia.org/wiki/Level_(logarithmic_quantity) Level represents a reference to which computations involving logarithmic scales are compared to.
Constructors
Level | |
Fields
|
radianScale :: RealFloat a => Level (Complex a) Source #
This is a way to convert radians to complex numbers
e.g. (pi/2)
.logarithmic
radianScale == 0 :+ 1
dBV :: Floating a => Level a Source #
logarithmic voltage with respect to base 10 relative to 1V. https://en.wikipedia.org/wiki/Decibel
dBu :: Floating a => Level a Source #
https://en.wikipedia.org/wiki/Decibel logarithmic voltage in base 10 relative to \(\sqrt{0.6}V\).
dBSPL :: Floating a => Level a Source #
https://en.wikipedia.org/wiki/Decibel logarithmic pressure in base 10 compared to 20 micro pascals.
lengthScale :: Floating a => Level a Source #
for logarithmic lengths in base 10.
frequencyScale :: Floating a => Level a Source #
https://en.wikipedia.org/wiki/Octave
logarithmic frequency in base 2 relative to 16.352 Hz.
a.k.a. in scientific designation.
middle-C is fourth octave, e.g. 4 `logarithmic` octave == 261.626 %* hertz
octave :: Floating a => Level a Source #
https://en.wikipedia.org/wiki/Octave
logarithmic frequency in base 2 relative to 16.352 Hz.
a.k.a. in scientific designation.
middle-C is fourth octave, e.g. 4 `logarithmic` octave == 261.626 %* hertz
octave is just a different name for frequencyScale
.
hartleyScale :: Num a => Level a Source #
weightScale :: Floating a => Level a Source #
nines :: Double -> Double Source #
compute how many nines a probability has. nines 0.99999 == 5.0
.
https://en.wikipedia.org/wiki/9#Probability
fromNines :: Double -> Double Source #
compute probability when given number of nines. https://en.wikipedia.org/wiki/9#Probability
notePitch :: Int -> Int -> Quantity Double Source #
note frequency from octave and index of note within octave.
notePitch 4 0
is middle-C.
ratioToDecibel :: (Fractional a, Show a, Floating a, Real a) => Quantity a -> Level a -> Quantity a Source #
bit :: (Floating a, Real a, Show a) => Quantity a Source #
WARNING: native representation is in number of bits.
Use code such as the following for conversion:
gibi byte `convert` kilo bit == return 8589934.592
byte :: (Floating a, Real a, Show a) => Quantity a Source #
Byte as the number of bits.
WARNING: native representation is in number of bits.
use code such as the following for conversion:
gibi byte `convert` kilo bit == return 8589934.592
toAlternatives :: (Floating a, Ord a, ShowPrecision a, MonadFail m) => Quantity a -> m a Source #
Note that the number of alternatives grows quickly.
convertTo :: (MonadFail m, Floating a, ShowPrecision a, Ord a, VectorSpace a) => Quantity a -> (String, Quantity a) -> m String Source #
convert :: (Scalar u ~ Scalar v, Unit v, Unit u, Show v, Show u, MonadFail m, Fractional (Scalar u)) => v -> u -> m (Scalar u) Source #
conversions between units. Dimensions have to match.
dimensionBasis :: [Dimension] Source #
isDimensionless :: Dimension -> Bool Source #
zipWithDimension :: (Rational -> Rational -> Rational) -> Dimension -> Dimension -> Dimension Source #
(=*) :: VectorSpace v => Scalar v -> v -> v Source #
prefixValue :: Num a => Prefix a -> a Source #
decimalPrefixes :: Num a => [(String, a)] Source #
binaryPrefixes :: Num a => [(String, a)] Source #
(=+=) :: VectorSpace v => v -> v -> v Source #
(=-=) :: VectorSpace v => v -> v -> v Source #
liftQuantityClosure :: (Closure Stream a -> Closure Stream b) -> Closure Stream (Quantity a) -> Closure Stream (Quantity b) Source #
liftQuantityClosure2 :: (Show (Closure Stream a), Show (Closure Stream b)) => String -> (Closure Stream a -> Closure Stream b -> Closure Stream c) -> Closure Stream (Quantity a) -> Closure Stream (Quantity b) -> Closure Stream (Quantity c) Source #
powerComplexQuantity :: RealFloat a => Quantity (Complex a) -> Rational -> Quantity (Complex a) Source #
expComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
logComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
sinComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
cosComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
tanComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
asinComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
acosComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
atanComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
sinhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
coshComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
tanhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
asinhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
acoshComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
atanhComplexQuantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
invalidDimensionsM :: (MonadFail m, Show b, Show c) => String -> Dimension -> Dimension -> b -> c -> m a Source #
showDimension :: Dimension -> String Source #
fullDimensionTable :: [(Dimension, String)] Source #
dimensionTable :: [(Dimension, String)] Source #
ppDimension :: Dimension -> Doc Source #
ppDimension prints dimension in a simple way without interpreting derived dimensions
for example, ppDimension newtonDimension == pp "kg m s^-2"
radianDimension :: Dimension Source #
radianDimension is basically same as dimensionless, using separate name anyway to allow clients to distinguish. No checking for this distinction is implemented.
steradianDimension :: Dimension Source #
steradianDimension is basically same as dimensionless, redefining anyway to allow clients to distinguish steradians. No checking for this distinction is implemented.
kelvinQuantity :: Floating a => Quantity a Source #
fromCelsius :: (Show a, Fractional a) => a -> Quantity a Source #
conversion from degrees celcius. WARNING: produces degrees in kelvin, so computations intended in degrees celcius should be done before conversion!
fromFahrenheit :: (Fractional a, Show a) => a -> Quantity a Source #
fromRankine :: (Fractional a, Show a) => a -> Quantity a Source #
toFahrenheit :: (MonadFail m, Fractional a, VectorSpace a) => Quantity a -> m a Source #
fromRadiansAngle :: Floating a => a -> Quantity a Source #
fromDegreesAngle :: Floating a => a -> Quantity a Source #
conversion from angle. WARNING: produces degrees in radian, so computations intended in degrees should be done before conversion!
squaremeter :: Floating a => Quantity a Source #
cubicmeter :: Floating a => Quantity a Source #
planck_mass :: Floating a => Quantity a Source #
planckTime :: Floating a => Quantity a Source #
planckCharge :: Floating a => Quantity a Source #
planckTemperature :: Floating a => Quantity a Source #
boltzmannConstant :: Floating a => Quantity a Source #
https://en.wikipedia.org/wiki/Physical_constant https://en.wikipedia.org/wiki/2019_redefinition_of_SI_base_units Warning: don't confuse with stefan_boltzmannConstant. Notice value is exact.
gravitationalConstant :: Floating a => Quantity a Source #
standardAccelerationOf_gravity :: Floating a => Quantity a Source #
standardAtmosphere :: Floating a => Quantity a Source #
speedOf_light :: Floating a => Quantity a Source #
https://en.wikipedia.org/wiki/Speed_of_light Note value is exact.
planckConstant :: Floating a => Quantity a Source #
reducedPlanckConstant :: Floating a => Quantity a Source #
magneticConstant :: Floating a => Quantity a Source #
characteristic_impedanceOfVacuum :: Floating a => Quantity a Source #
coulombsConstant :: Floating a => Quantity a Source #
elementaryCharge :: Floating a => Quantity a Source #
conductanceQuantum :: Floating a => Quantity a Source #
inverseConductanceQuantum :: Floating a => Quantity a Source #
josephsonConstant :: Floating a => Quantity a Source #
magneticFluxQuantum :: Floating a => Quantity a Source #
nuclear_magneton :: Floating a => Quantity a Source #
von_klitzingConstant :: Floating a => Quantity a Source #
classical_electron_radius :: Floating a => Quantity a Source #
fineStructureConstant :: Floating a => Quantity a Source #
quantumOfCirculation :: Floating a => Quantity a Source #
thomsonCrossSection :: Floating a => Quantity a Source #
weak_mixingAngle :: Floating a => Quantity a Source #
luminousEfficacyOfMonochromatic540e12HertzRadiation :: Floating a => Quantity a Source #
https://en.wikipedia.org/wiki/2019_redefinition_of_SI_base_units value is exact.
avogadroConstant :: Floating a => Quantity a Source #
atomicMassConstant :: Floating a => Quantity a Source #
loschmidtConstant :: Floating a => Quantity a Source #
stefanBoltzmannConstant :: (Floating a, Show a) => Quantity a Source #
Warning: don't confuse with boltzmann_constant.
astronomicalUnit :: Floating a => Quantity a Source #
siDimensions :: [(String, Dimension)] Source #