IMSL C Math Library
constant
Returns the value of various mathematical and physical constants.
Synopsis
#include <imsl.h>
float imsl_f_constant (char *name, char *unit)
The type double function is imsl_d_constant.
Required Arguments
char *name (Input)
Character string containing the name of the desired constant. The case of the character string name does not matter. The names “PI”, “Pi”, “pI”, and “pi” are equivalent. Spaces and underscores are allowed and ignored.
char *unit (Input)
Character string containing the units of the desired constant. If NULL, then Système International d’Unités (SI) units are assumed. The case of the character string unit does not matter. The names “METER”, “Meter” and “meter” are equivalent. unit has the form U1*U2*... *Um/V1/.../Vn, where Ui and Vi are the names of basic units or are the names of basic units raised to a power. Basic units must be separated by * or /. Powers are indicated by ^, as in “m^2” for m2. Examples are, “METER*KILOGRAM/SECOND”, “M*KG/S”, “METER”, or “M/KG^2”.
Return Value
By default, imsl_f_constant returns the desired constant. If no value can be computed, NaN is returned.
Description
The names allowed are listed in the following table. Values marked with a are exact (to machine precision). The references in the right-hand column are indicated by the code numbers: [1] for Cohen and Taylor (1986), [2] for Liepman (1964), and [3] for precomputed mathematical constants.
Name
Description
Value
Reference
Amu
Atomic mass unit
1.6605655 × 10-27 kg
1
ATM
Standard atm pressure
1.01325 × 105 N/m2
2
AU
Astronomical unit
1.496 × 1011 m
 
Avogadro
Avogadro's number, N
6.022045 × 1023 1/mole
1
Boltzman
Boltzman's constant, k
1.380662 × 10-23 J/K
1
C
Speed of light, c
2.997924580 × 108 m/s
1
Catalan
Catalan's constant
0.915965…‡
3
E
Base of natural logs, e
2.718…‡
3
ElectronCharge
Electron charge, e
1.6021892 × 10-19 C
1
ElectronMass
Electron mass, me
9.109534 × 10-31 kg
1
ElectronVolt
Euler
ElectronVolt, ev
Euler's constant, γ
1.6021892 x10 -19J
0.577…‡
1
3
Faraday
Faraday constant, F
9.648456 × 104 C/mole
1
FineStructure
Fine structure, α
7.2973506 ×10-3
1
Gamma
Euler's constant, γ
0.577…‡
3
Gas
Gas constant, R0
8.31441 J/mole/K
1
Gravity
Gravitational constant, G
6.6720 × 10-11 N m2/kg2
1
Hbar
Planck's constant/2π
1.0545887 × 10-34 J s
1
PerfectGasVolume
Std vol ideal gas
2.241383 × 10-2 m3/mole
1
Pi
Pi, π
3.141…‡
3
Planck
Planck's constant, h
6.626176 × 10-34 J s
1
ProtonMass
Proton mass, Mp
1.6726485 × 10-27 kg
1
Rydberg
Rydberg's constant, Rμ
1.097373177 × 107/m
1
Speedlight
Speed of light, c
2.997924580 ×108 m/s
1
StandardGravity
Standard g
9.80665 m/s2
2
StandardPressure
Standard atm pressure
1.01325 ×105 N/m2
2
StefanBoltzman
Stefan-Boltzman, σ
5.67032 × 10-8W/K4/m2
1
WaterTriple
Triple point of water
2.7316× 102 K
2
The units allowed are as follows:
Unit
Description
Time
day, hour = hr, min, minute, s = sec = second, year
Frequency
Hertz = Hz
Mass
AMU, g = gram, lb = pound, ounce = oz, slug
Distance
Angstrom, AU, feet = foot, in = inch, m = meter = metre, micron, mile, mill, parsec, yard
Area
Acre
Volume
1 = liter=litre
Force
dyne, N = Newton
Energy
BTU, Erg, J = Joule
Work
W = watt
Pressure
ATM = atmosphere, bar
Temperature
degC = Celsius, degF = Fahrenheit, degK = Kelvin
Viscosity
poise, stoke
Charge
Abcoulomb, C = Coulomb, statcoulomb
Current
A = ampere, abampere, statampere
Voltage
Abvolt, V = volt
Magnetic induction
T = Telsa, Wb = Weber
Other units
I, farad, mole, Gauss, Henry, Maxwell, Ohm
The following metric prefixes may be used with the above units. The one or two letter prefixes may only be used with one letter unit abbreviations.
A
atto
10-18
d
deci
10-1
F
femto
10-15
dk
deca
102
P
pico
10-12
k
kilo
103
N
nano
10-9
 
myria
104
U
micro
10-6
 
mega
106
M
milli
10-3
g
giga
109
C
centi
10-2
t
tera
1012
There is no one letter unit abbreviation for myria or mega since m means milli.
Examples
Example 1
In this example, Euler’s constant γ is obtained and printed. Euler’s constant is defined to be
 
 
#include <stdio.h>
#include <imsl.h>
 
int main()
{
float gamma;
/* Get gamma */
gamma = imsl_f_constant("gamma", 0);
/* Print gamma */
printf("gamma = %f\n", gamma);
}
Output
 
gamma = 0.577216
Example 2
In this example, the speed of light is obtained using several different units.
 
#include <stdio.h>
#include <imsl.h>
 
int main()
{
float speed_light;
/* Get speed of light in meters/second */
speed_light = imsl_f_constant("Speed Light", "meter/second");
printf("speed of light = %g meter/second\n", speed_light);
/* Get speed of light in miles/second */
speed_light = imsl_f_constant("Speed Light", "mile/second");
printf("speed of light = %g mile/second\n", speed_light);
/* Get speed of light in */
/* centimeters/nanosecond */
speed_light = imsl_f_constant("Speed Light", "cm/ns");
printf("speed of light = %g cm/ns\n", speed_light);
}
Output
 
speed of light = 2.99792e+08 meter/second
speed of light = 186282 mile/second
speed of light = 29.9793 cm/ns
Warning Errors
IMSL_MASS_TO_FORCE
A conversion of units of mass to units of force was required for consistency.