Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
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 meter_dimension kilogram_dimension "...")
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 {
- value_amount :: r
- value_dimension :: !Dimension
- dimensionless_amount :: Show r => Quantity r -> r
- equal_up_to :: (Floating a, Show a, Ord a) => a -> Quantity a -> Quantity a -> Bool
- data Dimension = Dimension {}
- dimension_multiples :: Dimension -> Stream Dimension
- quantity_powers :: (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 {
- reference_value :: Quantity r
- base_of_logarithm :: 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)
- radian_scale :: RealFloat a => Level (Complex a)
- bit_scale :: Num a => Level a
- bel_scale :: Num a => Level a
- dBV :: Floating a => Level a
- dBu :: Floating a => Level a
- dB_SPL :: Floating a => Level a
- dB_SIL :: (Floating a, Show a) => Level a
- dB_SWL :: Floating a => Level a
- length_scale :: Floating a => Level a
- frequency_scale :: Floating a => Level a
- octave :: Floating a => Level a
- moment_magnitude_scale :: (Show a, Floating a) => Level a
- entropy_scale :: Floating a => Level a
- hartley_scale :: Num a => Level a
- ban_scale :: Num a => Level a
- time_scale :: Floating a => Level a
- weight_scale :: Floating a => Level a
- nines :: Double -> Double
- fromNines :: Double -> Double
- note_pitch :: 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)
- dimension_basis :: [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
- prefix_value :: Num a => Prefix a -> a
- decimal_prefixes :: Num a => [(String, a)]
- floating_prefixes :: Floating a => [(String, a)]
- binary_prefixes :: 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
- require_dimensionless :: Show a => String -> (a -> a) -> Quantity a -> Quantity a
- lift_quantity_closure :: (Closure Stream a -> Closure Stream b) -> Closure Stream (Quantity a) -> Closure Stream (Quantity b)
- lift_quantity_closure2 :: (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)
- pi_complex_quantity :: RealFloat a => Quantity (Complex a)
- sqrt_complex_quantity :: RealFloat a => Quantity (Complex a) -> Quantity (Complex a)
- power_complex_quantity :: RealFloat a => Quantity (Complex a) -> Rational -> Quantity (Complex a)
- exp_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- log_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- sin_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- cos_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- tan_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- asin_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- acos_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- atan_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- sinh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- cosh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- tanh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- asinh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- acosh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a)
- atanh_complex_quantity :: (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)
- show_dimension :: Dimension -> String
- full_dimension_table :: [(Dimension, String)]
- dimension_table :: [(Dimension, String)]
- dimension_product_reader :: ReadPrec [Dimension]
- dimension_divider_reader :: ReadPrec [Dimension]
- dimension_reader :: ReadPrec Dimension
- dimensionless :: Dimension
- pp_dimension :: Dimension -> Doc
- kelvin_dimension :: Dimension
- farad_dimension :: Dimension
- ohm_dimension :: Dimension
- sievert_dimension :: Dimension
- volt_dimension :: Dimension
- pascal_dimension :: Dimension
- henry_dimension :: Dimension
- weber_dimension :: Dimension
- joule_dimension :: Dimension
- newton_dimension :: Dimension
- tesla_dimension :: Dimension
- meter_dimension :: Dimension
- kilogram_dimension :: Dimension
- second_dimension :: Dimension
- ampere_dimension :: Dimension
- candela_dimension :: Dimension
- mol_dimension :: Dimension
- radian_dimension :: Dimension
- steradian_dimension :: Dimension
- steradian :: Floating a => Quantity a
- becquerel_dimension :: Dimension
- becquerel :: Floating a => Quantity a
- gray_dimension :: Dimension
- gray :: Floating a => Quantity a
- lux_dimension :: Dimension
- lux :: Floating a => Quantity a
- lumen_dimension :: Dimension
- lumen :: Floating a => Quantity a
- kelvin_quantity :: 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
- katal_dimension :: Dimension
- katal :: Floating a => Quantity a
- fromCelsius :: (Show a, Fractional a) => a -> Quantity a
- fromFahrenheit :: (Fractional a, Show a) => a -> Quantity a
- toFahrenheit :: (MonadFail m, Fractional a, VectorSpace a) => Quantity a -> m a
- toCelsius :: (Fractional a, Show a, VectorSpace a) => Quantity a -> a
- fromRadiansAngle :: Floating a => a -> Quantity a
- fromDegreesAngle :: Floating a => a -> Quantity a
- hertz_dimension :: Dimension
- hertz :: Floating a => Quantity a
- squaremeter_dimension :: Dimension
- squaremeter :: Floating a => Quantity a
- cubicmeter_dimension :: Dimension
- cubicmeter :: Floating a => Quantity a
- watt_dimension :: Dimension
- coulomb_dimension :: Dimension
- siemens_dimension :: Dimension
- planck_length :: Floating a => Quantity a
- planck_mass :: Floating a => Quantity a
- planck_time :: Floating a => Quantity a
- planck_charge :: Floating a => Quantity a
- planck_temperature :: Floating a => Quantity a
- boltzmann_constant :: Floating a => Quantity a
- gravitational_constant :: Floating a => Quantity a
- standard_acceleration_of_gravity :: Floating a => Quantity a
- standard_atmosphere :: Floating a => Quantity a
- speed_of_light :: Floating a => Quantity a
- planck_constant :: Floating a => Quantity a
- reduced_planck_constant :: Floating a => Quantity a
- electronvolt :: Floating a => Quantity a
- magnetic_constant :: Floating a => Quantity a
- electric_constant :: (Show a, Floating a) => Quantity a
- characteristic_impedance_of_vacuum :: Floating a => Quantity a
- coulombs_constant :: Floating a => Quantity a
- elementary_charge :: Floating a => Quantity a
- bohr_magneton :: Floating a => Quantity a
- conductance_quantum :: Floating a => Quantity a
- inverse_conductance_quantum :: Floating a => Quantity a
- josephson_constant :: Floating a => Quantity a
- magnetic_flux_quantum :: Floating a => Quantity a
- nuclear_magneton :: Floating a => Quantity a
- von_klitzing_constant :: Floating a => Quantity a
- bohr_radius :: Floating a => Quantity a
- classical_electron_radius :: Floating a => Quantity a
- electron_mass :: Floating a => Quantity a
- fermi_coupling_constant :: (Show a, Floating a) => Quantity a
- fine_structure_constant :: Floating a => Quantity a
- hartree_energy :: Floating a => Quantity a
- proton_mass :: Floating a => Quantity a
- quantum_of_circulation :: Floating a => Quantity a
- rydberg_constant :: Floating a => Quantity a
- thomson_cross_section :: Floating a => Quantity a
- ground_state_cesium_hyperfine_transition_frequency :: Floating a => Quantity a
- weak_mixing_angle :: Floating a => Quantity a
- luminous_efficacy_of_monochromatic_540e12_hertz_radiation :: Floating a => Quantity a
- avogadro_constant :: Floating a => Quantity a
- atomic_mass_constant :: Floating a => Quantity a
- faraday_constant :: (Floating a, Show a) => Quantity a
- first_radiation_constant :: (Floating a, Show a) => Quantity a
- loschmidt_constant :: Floating a => Quantity a
- gas_constant :: (Floating a, Show a) => Quantity a
- molar_planck_constant :: (Floating a, Show a) => Quantity a
- second_radiation_constant :: (Floating a, Show a) => Quantity a
- stefan_boltzmann_constant :: (Floating a, Show a) => Quantity a
- efimov_factor :: 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
As | |
|
Instances
dimensionless_amount :: Show r => Quantity r -> r Source #
checked projection
Dimension | |
|
Instances
isFractionalDimensional :: Dimension -> Bool Source #
isFractionalDimensional checks if a dimension is fractional dimensional
data DimensionException Source #
Instances
Exception DimensionException Source # | |
Show DimensionException Source # | |
Defined in Math.Number.DimensionalAnalysis 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.
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.
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.
Level | |
|
radian_scale :: RealFloat a => Level (Complex a) Source #
This is a way to convert radians to complex numbers
e.g. (pi/2)
.logarithmic
radian_scale == 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\).
dB_SPL :: Floating a => Level a Source #
https://en.wikipedia.org/wiki/Decibel logarithmic pressure in base 10 compared to 20 micro pascals.
length_scale :: Floating a => Level a Source #
for logarithmic lengths in base 10.
frequency_scale :: 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 frequency_scale
.
hartley_scale :: Num a => Level a Source #
time_scale :: Floating a => Level a Source #
weight_scale :: 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
note_pitch :: Int -> Int -> Quantity Double Source #
note frequency from octave and index of note within octave.
note_pitch 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.
dimension_basis :: [Dimension] Source #
isDimensionless :: Dimension -> Bool Source #
zipWithDimension :: (Rational -> Rational -> Rational) -> Dimension -> Dimension -> Dimension Source #
(=*) :: VectorSpace v => Scalar v -> v -> v Source #
prefix_value :: Num a => Prefix a -> a Source #
decimal_prefixes :: Num a => [(String, a)] Source #
floating_prefixes :: Floating a => [(String, a)] Source #
binary_prefixes :: Num a => [(String, a)] Source #
(=+=) :: VectorSpace v => v -> v -> v Source #
(=-=) :: VectorSpace v => v -> v -> v Source #
lift_quantity_closure :: (Closure Stream a -> Closure Stream b) -> Closure Stream (Quantity a) -> Closure Stream (Quantity b) Source #
lift_quantity_closure2 :: (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 #
power_complex_quantity :: RealFloat a => Quantity (Complex a) -> Rational -> Quantity (Complex a) Source #
exp_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
log_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
sin_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
cos_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
tan_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
asin_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
acos_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
atan_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
sinh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
cosh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
tanh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
asinh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
acosh_complex_quantity :: (RealFloat a, Show a) => Quantity (Complex a) -> Quantity (Complex a) Source #
atanh_complex_quantity :: (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 #
show_dimension :: Dimension -> String Source #
full_dimension_table :: [(Dimension, String)] Source #
dimension_table :: [(Dimension, String)] Source #
pp_dimension :: Dimension -> Doc Source #
pp_dimension prints dimension in a simple way without interpreting derived dimensions
for example, pp_dimension newton_dimension == pp "kg m s^-2"
radian_dimension :: Dimension Source #
radian_dimension is basically same as dimensionless, using separate name anyway to allow clients to distinguish. No checking for this distinction is implemented.
steradian_dimension :: Dimension Source #
steradian_dimension is basically same as dimensionless, redefining anyway to allow clients to distinguish steradians. No checking for this distinction is implemented.
kelvin_quantity :: 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 #
toFahrenheit :: (MonadFail m, Fractional a, VectorSpace a) => Quantity a -> m a Source #
toCelsius :: (Fractional a, Show a, VectorSpace a) => Quantity a -> 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 #
planck_time :: Floating a => Quantity a Source #
planck_charge :: Floating a => Quantity a Source #
planck_temperature :: Floating a => Quantity a Source #
boltzmann_constant :: 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_boltzmann_constant. Notice value is exact.
gravitational_constant :: Floating a => Quantity a Source #
standard_acceleration_of_gravity :: Floating a => Quantity a Source #
standard_atmosphere :: Floating a => Quantity a Source #
speed_of_light :: Floating a => Quantity a Source #
https://en.wikipedia.org/wiki/Speed_of_light Note value is exact.
planck_constant :: Floating a => Quantity a Source #
reduced_planck_constant :: Floating a => Quantity a Source #
magnetic_constant :: Floating a => Quantity a Source #
coulombs_constant :: Floating a => Quantity a Source #
elementary_charge :: Floating a => Quantity a Source #
conductance_quantum :: Floating a => Quantity a Source #
inverse_conductance_quantum :: Floating a => Quantity a Source #
josephson_constant :: Floating a => Quantity a Source #
magnetic_flux_quantum :: Floating a => Quantity a Source #
nuclear_magneton :: Floating a => Quantity a Source #
von_klitzing_constant :: Floating a => Quantity a Source #
classical_electron_radius :: Floating a => Quantity a Source #
fine_structure_constant :: Floating a => Quantity a Source #
quantum_of_circulation :: Floating a => Quantity a Source #
rydberg_constant :: Floating a => Quantity a Source #
thomson_cross_section :: Floating a => Quantity a Source #
weak_mixing_angle :: Floating a => Quantity a Source #
luminous_efficacy_of_monochromatic_540e12_hertz_radiation :: Floating a => Quantity a Source #
https://en.wikipedia.org/wiki/2019_redefinition_of_SI_base_units value is exact.
avogadro_constant :: Floating a => Quantity a Source #
atomic_mass_constant :: Floating a => Quantity a Source #
loschmidt_constant :: Floating a => Quantity a Source #
stefan_boltzmann_constant :: (Floating a, Show a) => Quantity a Source #
Warning: don't confuse with boltzmann_constant.
astronomicalUnit :: Floating a => Quantity a Source #
siDimensions :: [(String, Dimension)] Source #