1from sympy.concrete.tests.test_sums_products import NS 2 3from sympy import sqrt, S 4from sympy.physics.units import convert_to, coulomb_constant, elementary_charge, gravitational_constant, planck 5from sympy.physics.units.definitions.unit_definitions import statcoulomb, coulomb, second, gram, centimeter, erg, \ 6 newton, joule, dyne, speed_of_light, meter 7from sympy.physics.units.systems import SI 8from sympy.physics.units.systems.cgs import cgs_gauss 9 10 11def test_conversion_to_from_si(): 12 13 assert convert_to(statcoulomb, coulomb, cgs_gauss) == 5*coulomb/149896229 14 assert convert_to(coulomb, statcoulomb, cgs_gauss) == 149896229*statcoulomb/5 15 assert convert_to(statcoulomb, sqrt(gram*centimeter**3)/second, cgs_gauss) == centimeter**(S(3)/2)*sqrt(gram)/second 16 assert convert_to(coulomb, sqrt(gram*centimeter**3)/second, cgs_gauss) == 149896229*centimeter**(S(3)/2)*sqrt(gram)/(5*second) 17 18 # SI units have an additional base unit, no conversion in case of electromagnetism: 19 assert convert_to(coulomb, statcoulomb, SI) == coulomb 20 assert convert_to(statcoulomb, coulomb, SI) == statcoulomb 21 22 # SI without electromagnetism: 23 assert convert_to(erg, joule, SI) == joule/10**7 24 assert convert_to(erg, joule, cgs_gauss) == joule/10**7 25 assert convert_to(joule, erg, SI) == 10**7*erg 26 assert convert_to(joule, erg, cgs_gauss) == 10**7*erg 27 28 assert convert_to(dyne, newton, SI) == newton/10**5 29 assert convert_to(dyne, newton, cgs_gauss) == newton/10**5 30 assert convert_to(newton, dyne, SI) == 10**5*dyne 31 assert convert_to(newton, dyne, cgs_gauss) == 10**5*dyne 32 33 34def test_cgs_gauss_convert_constants(): 35 36 assert convert_to(speed_of_light, centimeter/second, cgs_gauss) == 29979245800*centimeter/second 37 38 assert convert_to(coulomb_constant, 1, cgs_gauss) == 1 39 assert convert_to(coulomb_constant, newton*meter**2/coulomb**2, cgs_gauss) == 22468879468420441*meter**2*newton/(25000000000*coulomb**2) 40 assert convert_to(coulomb_constant, newton*meter**2/coulomb**2, SI) == 22468879468420441*meter**2*newton/(2500000*coulomb**2) 41 assert convert_to(coulomb_constant, dyne*centimeter**2/statcoulomb**2, cgs_gauss) == centimeter**2*dyne/statcoulomb**2 42 assert convert_to(coulomb_constant, 1, SI) == coulomb_constant 43 assert NS(convert_to(coulomb_constant, newton*meter**2/coulomb**2, SI)) == '8987551787.36818*meter**2*newton/coulomb**2' 44 45 assert convert_to(elementary_charge, statcoulomb, cgs_gauss) 46 assert convert_to(gravitational_constant, dyne*centimeter**2/gram**2, cgs_gauss) 47 assert NS(convert_to(planck, erg*second, cgs_gauss)) == '6.62607015e-27*erg*second' 48