mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-15 19:09:58 +08:00
239c2bf93e
* libc/misc/unctrl.c: Replace FUNCTION description. * libc/signal/signal.c: Remove documentation for raise and _raise_r. * libc/stdio/getdelim.c: Fix spelling errors. * libc/stdio/getw.c: Put RETURNS on a separate line. Fix punctuation. * libc/stdio/putw.c: Likewise. * libc/stdlib/a64l.c: Fix formatting, spelling and punctuation in documentation. * libc/stdlib/assert.c: Do not capitalize FUNCTION description. * libc/stdlib/efgcvt.c: Add spaces to FUNCTION description. * libc/stdlib/envlock.c: Use em-dash in FUNCTION description. * libc/stdlib/mlock.c: Likewise. * libc/stdlib/mstats.c: Likewise. * libc/time/tzlock.c: Likewise. * libc/stdlib/rand.c: Use "multi-threaded" and "thread-safe" in NOTES. * libc/stdlib/rand48.c: Remove extra space in FUNCTION description and hyphenate "pseudo-random". * libc/string/bcmp.c: Remove extra blank lines in documentation. * libc/string/strncat.c: Likewise. * libc/string/memchr.c: Remove extra ">" character in documentation. * libc/string/strcspn.c: Use "characters" instead of "chars". * libc/string/strpbrk.c: Likewise. * libc/string/strerror_r.c: Capitalize "GNU". * libc/string/strnlen.c: Likewise. * libc/string/strtok.c: Fix formatting, spelling and punctuation in documentation. Use "multi-threaded" and "thread-safe" in NOTES. * libc/string/wcscat.c: Split PORTABILITY into two paragraphs. * libc/string/wcschr.c: Likewise. * libc/string/wcscmp.c: Likewise. * libc/string/wcscpy.c: Likewise. * libc/string/wcscspn.c: Likewise. * libc/string/wcslen.c: Likewise. * libc/string/wcsncat.c: Likewise. * libc/string/wcsncmp.c: Likewise. * libc/string/wcsncpy.c: Likewise. * libc/string/wcsnlen.c: Likewise. * libc/string/wcspbrk.c: Likewise. * libc/string/wcsrchr.c: Likewise. * libc/string/wcsspn.c: Likewise. * libc/string/wmemchr.c: Likewise. * libc/string/wmemcmp.c: Likewise. * libc/string/wmemcpy.c: Likewise. * libc/string/wmemset.c: Likewise. * libc/string/wmemmove.c: Likewise. Also fix FUNCTION description. * libc/string/wcswidth.c: Formatting and punctuation in documentation. * libc/string/wcwidth.c: Likewise. * libm/common/s_modf.c: Remove extra period from documentation. * libm/math/s_isnan.c: Fix formatting, grammar and punctuation in documentation. * libm/mathfp/s_isnan.c: Likewise. * libm/math/s_ldexp.c: Fix punctuation. * libm/mathfp/s_ldexp.c: Likewise. * libm/math/w_log.c: Likewise. * libm/mathfp/s_logarithm.c: Likewise. * libm/math/w_j0.c: Add spaces to FUNCTION description. * libm/mathfp/w_jn.c: Likewise.
203 lines
4.7 KiB
C
203 lines
4.7 KiB
C
/*
|
|
FUNCTION
|
|
<<ecvt>>, <<ecvtf>>, <<fcvt>>, <<fcvtf>>---double or float to string
|
|
|
|
INDEX
|
|
ecvt
|
|
INDEX
|
|
fcvt
|
|
|
|
ANSI_SYNOPSIS
|
|
#include <stdlib.h>
|
|
|
|
char *ecvt(double <[val]>, int <[chars]>, int *<[decpt]>, int *<[sgn]>);
|
|
char *ecvtf(float <[val]>, int <[chars]>, int *<[decpt]>, int *<[sgn]>);
|
|
|
|
char *fcvt(double <[val]>, int <[decimals]>,
|
|
int *<[decpt]>, int *<[sgn]>);
|
|
char *fcvtf(float <[val]>, int <[decimals]>,
|
|
int *<[decpt]>, int *<[sgn]>);
|
|
|
|
TRAD_SYNOPSIS
|
|
#include <stdlib.h>
|
|
|
|
char *ecvt(<[val]>, <[chars]>, <[decpt]>, <[sgn]>);
|
|
double <[val]>;
|
|
int <[chars]>;
|
|
int *<[decpt]>;
|
|
int *<[sgn]>;
|
|
char *ecvtf(<[val]>, <[chars]>, <[decpt]>, <[sgn]>);
|
|
float <[val]>;
|
|
int <[chars]>;
|
|
int *<[decpt]>;
|
|
int *<[sgn]>;
|
|
|
|
char *fcvt(<[val]>, <[decimals]>, <[decpt]>, <[sgn]>);
|
|
double <[val]>;
|
|
int <[decimals]>;
|
|
int *<[decpt]>;
|
|
int *<[sgn]>;
|
|
char *fcvtf(<[val]>, <[decimals]>, <[decpt]>, <[sgn]>);
|
|
float <[val]>;
|
|
int <[decimals]>;
|
|
int *<[decpt]>;
|
|
int *<[sgn]>;
|
|
|
|
DESCRIPTION
|
|
<<ecvt>> and <<fcvt>> produce (null-terminated) strings of digits
|
|
representating the <<double>> number <[val]>.
|
|
<<ecvtf>> and <<fcvtf>> produce the corresponding character
|
|
representations of <<float>> numbers.
|
|
|
|
(The <<stdlib>> functions <<ecvtbuf>> and <<fcvtbuf>> are reentrant
|
|
versions of <<ecvt>> and <<fcvt>>.)
|
|
|
|
The only difference between <<ecvt>> and <<fcvt>> is the
|
|
interpretation of the second argument (<[chars]> or <[decimals]>).
|
|
For <<ecvt>>, the second argument <[chars]> specifies the total number
|
|
of characters to write (which is also the number of significant digits
|
|
in the formatted string, since these two functions write only digits).
|
|
For <<fcvt>>, the second argument <[decimals]> specifies the number of
|
|
characters to write after the decimal point; all digits for the integer
|
|
part of <[val]> are always included.
|
|
|
|
Since <<ecvt>> and <<fcvt>> write only digits in the output string,
|
|
they record the location of the decimal point in <<*<[decpt]>>>, and
|
|
the sign of the number in <<*<[sgn]>>>. After formatting a number,
|
|
<<*<[decpt]>>> contains the number of digits to the left of the
|
|
decimal point. <<*<[sgn]>>> contains <<0>> if the number is positive,
|
|
and <<1>> if it is negative.
|
|
|
|
RETURNS
|
|
All four functions return a pointer to the new string containing a
|
|
character representation of <[val]>.
|
|
|
|
PORTABILITY
|
|
None of these functions are ANSI C.
|
|
|
|
Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
|
|
<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
|
|
|
|
NEWPAGE
|
|
FUNCTION
|
|
<<gvcvt>>, <<gcvtf>>---format double or float as string
|
|
|
|
INDEX
|
|
gcvt
|
|
INDEX
|
|
gcvtf
|
|
|
|
ANSI_SYNOPSIS
|
|
#include <stdlib.h>
|
|
|
|
char *gcvt(double <[val]>, int <[precision]>, char *<[buf]>);
|
|
char *gcvtf(float <[val]>, int <[precision]>, char *<[buf]>);
|
|
|
|
TRAD_SYNOPSIS
|
|
#include <stdlib.h>
|
|
|
|
char *gcvt(<[val]>, <[precision]>, <[buf]>);
|
|
double <[val]>;
|
|
int <[precision]>;
|
|
char *<[buf]>;
|
|
char *gcvtf(<[val]>, <[precision]>, <[buf]>);
|
|
float <[val]>;
|
|
int <[precision]>;
|
|
char *<[buf]>;
|
|
|
|
DESCRIPTION
|
|
<<gcvt>> writes a fully formatted number as a null-terminated
|
|
string in the buffer <<*<[buf]>>>. <<gdvtf>> produces corresponding
|
|
character representations of <<float>> numbers.
|
|
|
|
<<gcvt>> uses the same rules as the <<printf>> format
|
|
`<<%.<[precision]>g>>'---only negative values are signed (with
|
|
`<<->>'), and either exponential or ordinary decimal-fraction format
|
|
is chosen depending on the number of significant digits (specified by
|
|
<[precision]>).
|
|
|
|
RETURNS
|
|
The result is a pointer to the formatted representation of <[val]>
|
|
(the same as the argument <[buf]>).
|
|
|
|
PORTABILITY
|
|
Neither function is ANSI C.
|
|
|
|
Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
|
|
<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
|
|
*/
|
|
|
|
#include <_ansi.h>
|
|
#include <reent.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "local.h"
|
|
|
|
char *
|
|
_DEFUN (fcvt, (d, ndigit, decpt, sign),
|
|
double d _AND
|
|
int ndigit _AND
|
|
int *decpt _AND
|
|
int *sign)
|
|
{
|
|
return fcvtbuf (d, ndigit, decpt, sign, NULL);
|
|
}
|
|
|
|
char *
|
|
_DEFUN (fcvtf, (d, ndigit, decpt, sign),
|
|
float d _AND
|
|
int ndigit _AND
|
|
int *decpt _AND
|
|
int *sign)
|
|
{
|
|
return fcvt ((float) d, ndigit, decpt, sign);
|
|
}
|
|
|
|
|
|
char *
|
|
_DEFUN (gcvtf, (d, ndigit, buf),
|
|
float d _AND
|
|
int ndigit _AND
|
|
char *buf)
|
|
{
|
|
double asd = d;
|
|
return gcvt (asd, ndigit, buf);
|
|
}
|
|
|
|
|
|
char *
|
|
_DEFUN (ecvt, (d, ndigit, decpt, sign),
|
|
double d _AND
|
|
int ndigit _AND
|
|
int *decpt _AND
|
|
int *sign)
|
|
{
|
|
return ecvtbuf (d, ndigit, decpt, sign, NULL);
|
|
}
|
|
|
|
char *
|
|
_DEFUN (ecvtf, (d, ndigit, decpt, sign),
|
|
float d _AND
|
|
int ndigit _AND
|
|
int *decpt _AND
|
|
int *sign)
|
|
{
|
|
return ecvt ((double) d, ndigit, decpt, sign);
|
|
}
|
|
|
|
|
|
char *
|
|
_DEFUN (gcvt, (d, ndigit, buf),
|
|
double d _AND
|
|
int ndigit _AND
|
|
char *buf)
|
|
{
|
|
char *tbuf = buf;
|
|
if (d < 0) {
|
|
*buf = '-';
|
|
buf++;
|
|
ndigit--;
|
|
}
|
|
return (_gcvt (_REENT, d, ndigit, buf, 'g', 0) ? tbuf : 0);
|
|
}
|