use crate::model::measure::Measure;
use crate::system::*;
use crate::unit;
use typenum::*;
unit!(compound: CoulombPerMole, "C/mol", [(Coulomb, P1), (Mole, N1)]);
unit!(compound: NewtonPerAmpereSquared, "N/A²", [(Newton, P1), (Ampere, N2)]);
unit!(compound: OnePerMole, "mol⁻¹", [(One, P1), (Mole, N1)]);
unit!(compound: JoulePerMoleKelvin, "J/(mol·K)", [(Joule, P1), (Mole, N1), (Kelvin, N1)]);
unit!(compound: HertzPerVolt, "Hz/V", [(Hertz, P1), (Volt, N1)]);
unit!(compound: CubicMetrePerKilogramSecondSquared, "m³/(kg·s²)", [(CubicMetre, P1), (Kilogram, N1), (Second, N2)]);
unit!(compound: WattPerSquareMetreKelvinToTheFourth, "W/(m²·K⁴)", [(Watt, P1), (Metre, N2), (Kelvin, N4)]);
unit!(compound: MetreKelvin, "m·K", [(Metre, P1), (Kelvin, P1)]);
unit!(compound: PerGigaElectronVoltSquared, "1/(GeV²)", [(One, P1), (GigaElectronVolt, N2)]);
unit!(compound: KilometrePerSecondPerMegaparsec, "km/(s·Mpc)", [(Kilometre, P1), (Second, N1), (Megaparsec, N2)]);
#[cfg(all(feature = "f32", not(feature = "f64")))]
pub use core::f32::consts::*;
#[cfg(all(feature = "f64", not(feature = "f32")))]
pub use core::f64::consts::*;
pub const SPEED_OF_LIGHT: Measure<MetrePerSecond> = Measure::new_const(299_792_458.0);
pub const PLANCK_CONSTANT: Measure<JouleSecond> = Measure::new_const(6.626_070_15e-34);
pub const ELEMENTARY_CHARGE: Measure<Coulomb> = Measure::new_const(1.602_176_634e-19);
pub const BOLTZMANN_CONSTANT: Measure<JoulePerKelvin> = Measure::new_const(1.380_649e-23);
pub const AVOGADRO_CONSTANT: Measure<OnePerMole> = Measure::new_const(6.022_140_76e23);
pub const LUMINOUS_EFFICACY_540_THZ: Measure<LumenPerWatt> = Measure::new_const(683.0);
pub const CAESIUM_133_FREQUENCY: Measure<Hertz> = Measure::new_const(9_192_631_770.0);
pub const REDUCED_PLANCK_CONSTANT: Measure<JouleSecond> = Measure::new_const(1.054_571_817e-34);
pub const ELECTRIC_CONSTANT: Measure<FaradPerMetre> = Measure::new_const(8.854_187_812_8e-12);
pub const MAGNETIC_CONSTANT: Measure<HenryPerMetre> = Measure::new_const(1.256_637_062e-6);
pub const IMPEDANCE_OF_FREE_SPACE: Measure<Ohm> = Measure::new_const(376.730_313_668);
pub const CONDUCTANCE_QUANTUM: Measure<Siemens> = Measure::new_const(7.748_091_729e-5);
pub const VON_KLITZING_CONSTANT: Measure<Ohm> = Measure::new_const(25_812.807_45);
pub const MAGNETIC_FLUX_QUANTUM: Measure<Weber> = Measure::new_const(2.067_833_848e-15);
pub const JOSEPHSON_CONSTANT: Measure<HertzPerVolt> = Measure::new_const(4.835_978_484e14);
pub const GRAVITATIONAL_CONSTANT: Measure<CubicMetrePerKilogramSecondSquared> =
Measure::new_const(6.674_30e-11);
pub const FINE_STRUCTURE_CONSTANT: Measure<One> = Measure::new_const(7.297_352_566_4e-3);
pub const INVERSE_FINE_STRUCTURE_CONSTANT: Measure<One> = Measure::new_const(137.035_999_084);
pub const STEFAN_BOLTZMANN_CONSTANT: Measure<WattPerSquareMetreKelvinToTheFourth> =
Measure::new_const(5.670_374_419e-8);
pub const WIEN_DISPLACEMENT_CONSTANT: Measure<MetreKelvin> = Measure::new_const(2.897_771_955e-3);
pub const RYDBERG_CONSTANT: Measure<ReciprocalMetre> = Measure::new_const(10_973_731.568_160);
pub const ELECTRON_MASS: Measure<Kilogram> = Measure::new_const(9.109_383_701_5e-31);
pub const PROTON_MASS: Measure<Kilogram> = Measure::new_const(1.672_621_923_69e-27);
pub const NEUTRON_MASS: Measure<Kilogram> = Measure::new_const(1.674_927_498_04e-27);
pub const CLASSICAL_ELECTRON_RADIUS: Measure<Metre> = Measure::new_const(2.817_940_326_2e-15);
pub const ELECTRON_COMPTON_WAVELENGTH: Measure<Metre> = Measure::new_const(2.426_310_217_5e-12);
pub const BOHR_RADIUS: Measure<Metre> = Measure::new_const(5.291_772_109_03e-11);
pub const BOHR_MAGNETON: Measure<JoulePerTesla> = Measure::new_const(9.274_010_078_3e-24);
pub const NUCLEAR_MAGNETON: Measure<JoulePerTesla> = Measure::new_const(5.050_783_646_1e-27);
pub const ATOMIC_MASS_CONSTANT: Measure<Kilogram> = Measure::new_const(1.660_539_066_60e-27);
pub const ELECTRON_G_FACTOR: Measure<One> = Measure::new_const(-2.002_319_304_362_56);
pub const PROTON_G_FACTOR: Measure<One> = Measure::new_const(5.585_694_689_3);
pub const NEUTRON_G_FACTOR: Measure<One> = Measure::new_const(-3.826_085_45);
pub const FERMI_COUPLING_CONSTANT: Measure<PerGigaElectronVoltSquared> =
Measure::new_const(1.166_378_7e-5);
pub const HARTREE_ENERGY: Measure<Joule> = Measure::new_const(4.359_744_722_207_1e-18);
pub const STANDARD_GRAVITY: Measure<MetrePerSecondSquared> = Measure::new_const(9.806_65);
pub const GAS_CONSTANT: Measure<JoulePerMoleKelvin> = Measure::new_const(8.314_462_618);
pub const FARADAY_CONSTANT: Measure<CoulombPerMole> = Measure::new_const(96_485.332_12);
pub const HUBBLE_CONSTANT: Measure<KilometrePerSecondPerMegaparsec> = Measure::new_const(70.0);