[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
5.4 String and Stream Input and Output
- Function: int mpc_strtoc (mpc_t rop, const char *nptr, char **endptr, int base, mpc_rnd_t rnd)
Read a complex number from a string nptr in base base, rounded to the precision of rop with the given rounding mode rnd. The base must be either 0 or a number from 2 to 36 (otherwise the behaviour is undefined). If nptr starts with valid data, the result is stored in rop, the usual inexact value is returned (see Return Value) and, if endptr is not the null pointer, *endptr points to the character just after the valid data. Otherwise, rop is set to
NaN + i * NaN
, -1 is returned and, if endptr is not the null pointer, the value of nptr is stored in the location referenced by endptr.The expected form of a complex number string is either a real number (an optional leading whitespace, an optional sign followed by a floating-point number), or a pair of real numbers in parentheses separated by whitespace. If a real number is read, the missing imaginary part is set to +0. The form of a floating-point number depends on the base and is described in the documentation of
mpfr_strtofr
in the MPFR manual. For instance,"3.1415926"
,"(1.25e+7 +.17)"
,"(@nan@ 2)"
and"(-0 -7)"
are valid strings for base = 10. If base = 0, then a prefix may be used to indicate the base in which the floating-point number is written. Use prefix ’0b’ for binary numbers, prefix ’0x’ for hexadecimal numbers, and no prefix for decimal numbers. The real and imaginary part may then be written in different bases. For instance,"(1.024e+3 +2.05e+3)"
and"(0b1p+10 +0x802)"
are valid strings forbase
=0 and represent the same value.
- Function: int mpc_set_str (mpc_t rop, const char *s, int base, mpc_rnd_t rnd)
Set rop to the value of the string s in base base, rounded to the precision of rop with the given rounding mode rnd. See the documentation of
mpc_strtoc
for a detailed description of the valid string formats. Contrarily tompc_strtoc
,mpc_set_str
requires the whole string to represent a valid complex number (potentially followed by additional white space). This function returns the usual inexact value (see Return Value) if the entire string up to the final null character is a valid number in base base; otherwise it returns -1, and rop is set to NaN+i*NaN.
- Function: char * mpc_get_str (int b, size_t n, mpc_t op, mpc_rnd_t rnd)
Convert op to a string containing its real and imaginary parts, separated by a space and enclosed in a pair of parentheses. The numbers are written in base b (which may vary from 2 to 36) and rounded according to rnd. The number of significant digits, at least 2, is given by n. It is also possible to let n be zero, in which case the number of digits is chosen large enough so that re-reading the printed value with the same precision, assuming both output and input use rounding to nearest, will recover the original value of op. Note that
mpc_get_str
uses the decimal point of the current locale if available, and ‘.’ otherwise.The string is generated using the current memory allocation function (
malloc
by default, unless it has been modified using the custom memory allocation interface ofgmp
); once it is not needed any more, it should be freed by callingmpc_free_str
.
- Function: void mpc_free_str (char *str)
Free the string str, which needs to have been allocated by a call to
mpc_get_str
.
The following two functions read numbers from input streams and write them to output streams. When using any of these functions, you need to include ‘stdio.h’ before ‘mpc.h’.
- Function: int mpc_inp_str (mpc_t rop, FILE *stream, size_t *read, int base, mpc_rnd_t rnd)
Input a string in base base in the same format as for
mpc_strtoc
from stdio stream stream, rounded according to rnd, and put the read complex number into rop. If stream is the null pointer, rop is read fromstdin
. Return the usual inexact value; if an error occurs, set rop toNaN + i * NaN
and return -1. If read is not the null pointer, it is set to the number of read characters.Unlike
mpc_strtoc
, the functionmpc_inp_str
does not possess perfect knowledge of the string to transform and has to read it character by character, so it behaves slightly differently: It tries to read a string describing a complex number and processes this string through a call tompc_set_str
. Precisely, after skipping optional whitespace, a minimal string is read according to the regular expressionmpfr | '(' \s* mpfr \s+ mpfr \s* ')'
, where\s
denotes a whitespace, andmpfr
is either a string containing neither whitespaces nor parentheses, ornan(n-char-sequence)
or@nan@(n-char-sequence)
(regardless of capitalisation) withn-char-sequence
a string of ascii letters, digits or'_'
.For instance, upon input of
"nan(13 1)"
, the functionmpc_inp_str
starts to recognise a value of NaN followed by an n-char-sequence indicated by the opening parenthesis; as soon as the space is reached, it becocmes clear that the expression in parentheses is not an n-char-sequence, and the error flag -1 is returned after 6 characters have been consumed from the stream (the whitespace itself remaining in the stream). The functionmpc_strtoc
, on the other hand, may track back when reaching the whitespace; it treats the string as the two successive complex numbersNaN + i * 0
and13 + i
. It is thus recommended to have a whitespace follow each floating point number to avoid this problem.
- Function: size_t mpc_out_str (FILE *stream, int base, size_t n_digits, mpc_t op, mpc_rnd_t rnd)
Output op on stdio stream stream in base base, rounded according to rnd, in the same format as for
mpc_strtoc
If stream is the null pointer, rop is written tostdout
.Return the number of characters written.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on November 27, 2011 using texi2html 5.0.