.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
.\"
.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
.\" Distributed under GPL
.\" %%%LICENSE_END
.\"
.\" heavily based on glibc infopages, copyright Free Software Foundation
.\"
.TH SIGNIFICAND 3 2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
significand, significandf, significandl \-
get mantissa of floating-point number
.SH SYNOPSIS
.nf
.B #include <math.h>
.PP
.BI "double significand(double " x );
.BI "float significandf(float " x );
.BI "long double significandl(long double " x );
.fi
.PP
Link with \fI\-lm\fP.
.PP
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.PP
.BR significand (),
.BR significandf (),
.BR significandl ():
.nf
    /* Since glibc 2.19: */ _DEFAULT_SOURCE
        || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
.fi
.SH DESCRIPTION
These functions return the mantissa of
.I x
scaled to the range [1,2).
They are equivalent to
.PP
.in +4n
.EX
scalb(x, (double) \-ilogb(x))
.EE
.in
.PP
This function exists mainly for use in certain standardized tests
for IEEE 754 conformance.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR significand (),
.BR significandf (),
.BR significandl ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
These functions are nonstandard; the
.I double
version is available on a number of other systems.
.\" .SH HISTORY
.\" This function came from BSD.
.SH SEE ALSO
.BR ilogb (3),
.BR scalb (3)
