Floating-Point Support

Many Microsoft run-time library functions require floating-point support from a math coprocessor or from the floating-point libraries that accompany the compiler. Floating-point support functions are loaded only if required.

When you use a floating-point type specifier in the format string of a call to a function in the printf or scanf family, you must specify a floating-point value or a pointer to a floating-point value in the argument list to tell the compiler that floating-point support is required. The math functions in the Microsoft run-time library handle exceptions the same way that the UNIX V math functions do.

The Microsoft run-time library sets the default internal precision of the math coprocessor (or emulator) to 64 bits. This default applies only to the internal precision at which all intermediate calculations are performed; it does not apply to the size of arguments, return values, or variables. You can override this default and set the chip (or emulator) back to 80-bit precision by linking your program with LIB/FP10.OBJ. On the linker command line, FP10.OBJ must appear before LIBC.LIB, LIBCMT.LIB, or MSVCRT.LIB.

Floating-Point Functions

Routine Use
abs Return absolute value of int
acos Calculate arccosine
asin Calculate arcsine
atan, atan2 Calculate arctangent
atof Convert character string to double-precision floating-point value
Bessel functions Calculate Bessel functions _j0, _j1, _jn, _y0, _y1, _yn
_cabs Find absolute value of complex number
ceil Find integer ceiling
_chgsign Reverse sign of double-precision floating-point argument
_clear87, _clearfp Get and clear floating-point status word
_control87, _controlfp Get old floating-point control word and set new control-word value
_copysign Return one value with sign of another
cos Calculate cosine
cosh Calculate hyperbolic cosine
difftime Compute difference between two specified time values
div Divide one integer by another, returning quotient and remainder
_ecvt Convert double to character string of specified length
exp Calculate exponential function
fabs Find absolute value
_fcvt Convert double to string with specified number of digits following decimal point
_finite Determine whether given double-precision floating-point value is finite
floor Find largest integer less than or equal to argument
fmod Find floating-point remainder
_fpclass Return status word containing information on floating-point class
_fpieee_flt Invoke user-defined trap handler for IEEE floating-point exceptions
_fpreset Reinitialize floating-point math package
frexp Calculate exponential value
_gcvt Convert floating-point value to character string
_hypot Calculate hypotenuse of right triangle
_isnan Check given double-precision floating-point value for not a number (NaN)
labs Return absolute value of long
ldexp Calculate product of argument and 2 to specified power
ldiv Divide one long integer by another, returning quotient and remainder
log Calculate natural logarithm
log10 Calculate base-10 logarithm
_logb Extract exponential value of double-precision floating-point argument
_lrotl, _lrotr Shift unsigned long int left (_lrotl) or right (_lrotr)
_matherr Handle math errors
__max Return larger of two values
__min Return smaller of two values
modf Split argument into integer and fractional parts
_nextafter Return next representable neighbor
pow Calculate value raised to a power
printf, wprintf Write data to stdout according to specified format
rand Get pseudorandom number
_rotl, _rotr Shift unsigned int left (_rotl) or right (_rotr)
_scalb Scale argument by power of 2
scanf, wscanf Read data from stdin according to specified format and write data to specified location
sin Calculate sine
sinh Calculate hyperbolic sine
sqrt Find square root
srand Initialize pseudorandom series
_status87, _statusfp Get floating-point status word
strtod Convert character string to double-precision value
tan Calculate tangent
tanh Calculate hyperbolic tangent