12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799 |
- This is mpc.info, produced by makeinfo version 5.2 from mpc.texi.
- This manual is for GNU MPC, a library for multiple precision complex
- arithmetic, version 1.0.3 of February 2015.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011, 2012 INRIA
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation License,
- Version 1.3 or any later version published by the Free Software
- Foundation; with no Invariant Sections. A copy of the license is
- included in the section entitled "GNU Free Documentation License."
- INFO-DIR-SECTION GNU Packages
- START-INFO-DIR-ENTRY
- * mpc: (mpc)Multiple Precision Complex Library.
- END-INFO-DIR-ENTRY
- File: mpc.info, Node: Top, Next: Copying, Up: (dir)
- GNU MPC
- *******
- This manual documents how to install and use the GNU Multiple Precision
- Complex Library, version 1.0.3
- * Menu:
- * Copying:: GNU MPC Copying Conditions (LGPL).
- * Introduction to GNU MPC:: Brief introduction to GNU MPC.
- * Installing GNU MPC:: How to configure and compile the GNU MPC library.
- * Reporting Bugs:: How to usefully report bugs.
- * GNU MPC Basics:: What every GNU MPC user should know.
- * Complex Functions:: Functions for arithmetic on complex numbers.
- * References::
- * Concept Index::
- * Function Index::
- * GNU Free Documentation License::
- File: mpc.info, Node: Copying, Next: Introduction to GNU MPC, Prev: Top, Up: Top
- GNU MPC Copying Conditions
- **************************
- GNU MPC is free software; you can redistribute it and/or modify it under
- the terms of the GNU Lesser General Public License as published by the
- Free Software Foundation; either version 3 of the License, or (at your
- option) any later version.
- GNU MPC is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
- General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with this program. If not, see
- <http://www.gnu.org/licenses/>.
- File: mpc.info, Node: Introduction to GNU MPC, Next: Installing GNU MPC, Prev: Copying, Up: Top
- 1 Introduction to GNU MPC
- *************************
- GNU MPC is a portable library written in C for arbitrary precision
- arithmetic on complex numbers providing correct rounding. It implements
- a multiprecision equivalent of the C99 standard. It builds upon the GNU
- MP and the GNU MPFR libraries.
- 1.1 How to use this Manual
- ==========================
- Everyone should read *note GNU MPC Basics::. If you need to install the
- library yourself, you need to read *note Installing GNU MPC::, too.
- The remainder of the manual can be used for later reference, although
- it is probably a good idea to skim through it.
- File: mpc.info, Node: Installing GNU MPC, Next: Reporting Bugs, Prev: Introduction to GNU MPC, Up: Top
- 2 Installing GNU MPC
- ********************
- To build GNU MPC, you first have to install GNU MP (version 4.3.2 or
- higher) and GNU MPFR (version 2.4.2 or higher) on your computer. You
- need a C compiler; GCC version 4.4 or higher is recommended, since GNU
- MPC may trigger a bug in previous versions, see the thread at
- <http://lists.gforge.inria.fr/pipermail/mpc-discuss/2011-February/000823.html>.
- And you need a standard Unix 'make' program, plus some other standard
- Unix utility programs.
- Here are the steps needed to install the library on Unix systems:
- 1. 'tar xzf mpc-1.0.3.tar.gz'
- 2. 'cd mpc-1.0.3'
- 3. './configure'
- if GMP and GNU MPFR are installed into standard directories, that
- is, directories that are searched by default by the compiler and
- the linking tools.
- './configure --with-gmp=<gmp_install_dir>'
- is used to indicate a different location where GMP is installed.
- Alternatively, you can specify directly GMP include and GMP lib
- directories with './configure --with-gmp-lib=<gmp_lib_dir>
- --with-gmp-include=<gmp_include_dir>'.
- './configure --with-mpfr=<mpfr_install_dir>'
- is used to indicate a different location where GNU MPFR is
- installed. Alternatively, you can specify directly GNU MPFR
- include and GNU MPFR lib directories with './configure
- --with-mpf-lib=<mpfr_lib_dir>
- --with-mpfr-include=<mpfr_include_dir>'.
- Another useful parameter is '--prefix', which can be used to
- specify an alternative installation location instead of
- '/usr/local'; see 'make install' below.
- To enable checking for memory leaks using 'valgrind' during 'make
- check', add the parameter '--enable-valgrind-tests'.
- If for debugging purposes you wish to log calls to GNU MPC
- functions from within your code, add the parameter
- '--enable-logging'. In your code, replace the inclusion of 'mpc.h'
- by 'mpc-log.h' and link the executable dynamically. Then all calls
- to functions with only complex arguments are printed to 'stderr' in
- the following form: First, the function name is given, followed by
- its type such as 'c_cc', meaning that the function has one complex
- result (one 'c' in front of the '_'), computed from two complex
- arguments (two 'c' after the '_'). Then, the precisions of the
- real and the imaginary part of the first result is given, followed
- by the second one and so on. Finally, for each argument, the
- precisions of its real and imaginary part are specified and the
- argument itself is printed in hexadecimal via the function
- 'mpc_out_str' (*note String and Stream Input and Output::). The
- option requires a dynamic library, so it may not be combined with
- '--disable-shared'.
- Use './configure --help' for an exhaustive list of parameters.
- 4. 'make'
- This compiles GNU MPC in the working directory.
- 5. 'make check'
- This will make sure GNU MPC was built correctly.
- If you get error messages, please report them to
- 'mpc-discuss@lists.gforge.inria.fr' (*Note Reporting Bugs::, for
- information on what to include in useful bug reports).
- 6. 'make install'
- This will copy the file 'mpc.h' to the directory
- '/usr/local/include', the file 'libmpc.a' to the directory
- '/usr/local/lib', and the file 'mpc.info' to the directory
- '/usr/local/share/info' (or if you passed the '--prefix' option to
- 'configure', using the prefix directory given as argument to
- '--prefix' instead of '/usr/local'). Note: you need write
- permissions on these directories.
- 2.1 Other 'make' Targets
- ========================
- There are some other useful make targets:
- * 'info'
- Create an info version of the manual, in 'mpc.info'.
- * 'pdf'
- Create a PDF version of the manual, in 'doc/mpc.pdf'.
- * 'dvi'
- Create a DVI version of the manual, in 'doc/mpc.dvi'.
- * 'ps'
- Create a Postscript version of the manual, in 'doc/mpc.ps'.
- * 'html'
- Create an HTML version of the manual, in several pages in the
- directory 'doc/mpc.html'; if you want only one output HTML file,
- then type 'makeinfo --html --no-split mpc.texi' instead.
- * 'clean'
- Delete all object files and archive files, but not the
- configuration files.
- * 'distclean'
- Delete all files not included in the distribution.
- * 'uninstall'
- Delete all files copied by 'make install'.
- 2.2 Known Build Problems
- ========================
- On AIX, if GMP was built with the 64-bit ABI, before building and
- testing GNU MPC, it might be necessary to set the 'OBJECT_MODE'
- environment variable to 64 by, e.g.,
- 'export OBJECT_MODE=64'
- This has been tested with the C compiler IBM XL C/C++ Enterprise
- Edition V8.0 for AIX, version: 08.00.0000.0021, GMP 4.2.4 and GNU MPFR
- 2.4.1.
- Please report any other problems you encounter to
- 'mpc-discuss@lists.gforge.inria.fr'. *Note Reporting Bugs::.
- File: mpc.info, Node: Reporting Bugs, Next: GNU MPC Basics, Prev: Installing GNU MPC, Up: Top
- 3 Reporting Bugs
- ****************
- If you think you have found a bug in the GNU MPC library, please
- investigate and report it. We have made this library available to you,
- and it is not to ask too much from you, to ask you to report the bugs
- that you find.
- There are a few things you should think about when you put your bug
- report together.
- You have to send us a test case that makes it possible for us to
- reproduce the bug. Include instructions on how to run the test case.
- You also have to explain what is wrong; if you get a crash, or if the
- results printed are incorrect and in that case, in what way.
- Please include compiler version information in your bug report. This
- can be extracted using 'gcc -v', or 'cc -V' on some machines. Also,
- include the output from 'uname -a'.
- If your bug report is good, we will do our best to help you to get a
- corrected version of the library; if the bug report is poor, we will not
- do anything about it (aside of chiding you to send better bug reports).
- Send your bug report to: 'mpc-discuss@lists.gforge.inria.fr'.
- If you think something in this manual is unclear, or downright
- incorrect, or if the language needs to be improved, please send a note
- to the same address.
- File: mpc.info, Node: GNU MPC Basics, Next: Complex Functions, Prev: Reporting Bugs, Up: Top
- 4 GNU MPC Basics
- ****************
- All declarations needed to use GNU MPC are collected in the include file
- 'mpc.h'. It is designed to work with both C and C++ compilers. You
- should include that file in any program using the GNU MPC library by
- adding the line
- #include "mpc.h"
- 4.1 Nomenclature and Types
- ==========================
- "Complex number" or "Complex" for short, is a pair of two arbitrary
- precision floating-point numbers (for the real and imaginary parts).
- The C data type for such objects is 'mpc_t'.
- The "Precision" is the number of bits used to represent the mantissa of
- the real and imaginary parts; the corresponding C data type is
- 'mpfr_prec_t'. For more details on the allowed precision range, *note
- (mpfr.info)Nomenclature and Types::.
- The "rounding mode" specifies the way to round the result of a complex
- operation, in case the exact result can not be represented exactly in
- the destination mantissa; the corresponding C data type is 'mpc_rnd_t'.
- A complex rounding mode is a pair of two rounding modes: one for the
- real part, one for the imaginary part.
- 4.2 Function Classes
- ====================
- There is only one class of functions in the GNU MPC library, namely
- functions for complex arithmetic. The function names begin with 'mpc_'.
- The associated type is 'mpc_t'.
- 4.3 GNU MPC Variable Conventions
- ================================
- As a general rule, all GNU MPC functions expect output arguments before
- input arguments. This notation is based on an analogy with the
- assignment operator.
- GNU MPC allows you to use the same variable for both input and output
- in the same expression. For example, the main function for
- floating-point multiplication, 'mpc_mul', can be used like this:
- 'mpc_mul (x, x, x, rnd_mode)'. This computes the square of X with
- rounding mode 'rnd_mode' and puts the result back in X.
- Before you can assign to an GNU MPC variable, you need to initialize
- it by calling one of the special initialization functions. When you are
- done with a variable, you need to clear it out, using one of the
- functions for that purpose.
- A variable should only be initialized once, or at least cleared out
- between each initialization. After a variable has been initialized, it
- may be assigned to any number of times.
- For efficiency reasons, avoid to initialize and clear out a variable
- in loops. Instead, initialize it before entering the loop, and clear it
- out after the loop has exited.
- You do not need to be concerned about allocating additional space for
- GNU MPC variables, since each of its real and imaginary part has a
- mantissa of fixed size. Hence unless you change its precision, or clear
- and reinitialize it, a complex variable will have the same allocated
- space during all its life.
- 4.4 Rounding Modes
- ==================
- A complex rounding mode is of the form 'MPC_RNDxy' where 'x' and 'y' are
- one of 'N' (to nearest), 'Z' (towards zero), 'U' (towards plus
- infinity), 'D' (towards minus infinity). The first letter refers to the
- rounding mode for the real part, and the second one for the imaginary
- part. For example 'MPC_RNDZU' indicates to round the real part towards
- zero, and the imaginary part towards plus infinity.
- The 'round to nearest' mode works as in the IEEE P754 standard: in
- case the number to be rounded lies exactly in the middle of two
- representable numbers, it is rounded to the one with the least
- significant bit set to zero. For example, the number 5, which is
- represented by (101) in binary, is rounded to (100)=4 with a precision
- of two bits, and not to (110)=6.
- 4.5 Return Value
- ================
- Most GNU MPC functions have a return value of type 'int', which is used
- to indicate the position of the rounded real and imaginary parts with
- respect to the exact (infinite precision) values. If this integer is
- 'i', the macros 'MPC_INEX_RE(i)' and 'MPC_INEX_IM(i)' give 0 if the
- corresponding rounded value is exact, a negative value if the rounded
- value is less than the exact one, and a positive value if it is greater
- than the exact one. Similarly, functions computing a result of type
- 'mpfr_t' return an integer that is 0, positive or negative depending on
- whether the rounded value is the same, larger or smaller then the exact
- result.
- Some functions, such as 'mpc_sin_cos', compute two complex results;
- the macros 'MPC_INEX1(i)' and 'MPC_INEX2(i)', applied to the return
- value 'i' of such a function, yield the exactness value corresponding to
- the first or the second computed value, respectively.
- 4.6 Branch Cuts And Special Values
- ==================================
- Some complex functions have branch cuts, across which the function is
- discontinous. In GNU MPC, the branch cuts chosen are the same as those
- specified for the corresponding functions in the ISO C99 standard.
- Likewise, when evaluated at a point whose real or imaginary part is
- either infinite or a NaN or a signed zero, a function returns the same
- value as those specified for the corresponding function in the ISO C99
- standard.
- File: mpc.info, Node: Complex Functions, Next: References, Prev: GNU MPC Basics, Up: Top
- 5 Complex Functions
- *******************
- The complex functions expect arguments of type 'mpc_t'.
- The GNU MPC floating-point functions have an interface that is
- similar to the GNU MP integer functions. The function prefix for
- operations on complex numbers is 'mpc_'.
- The precision of a computation is defined as follows: Compute the
- requested operation exactly (with "infinite precision"), and round the
- result to the destination variable precision with the given rounding
- mode.
- The GNU MPC complex functions are intended to be a smooth extension
- of the IEEE P754 arithmetic. The results obtained on one computer
- should not differ from the results obtained on a computer with a
- different word size.
- * Menu:
- * Initializing Complex Numbers::
- * Assigning Complex Numbers::
- * Converting Complex Numbers::
- * String and Stream Input and Output::
- * Complex Comparison::
- * Projection & Decomposing::
- * Basic Arithmetic::
- * Power Functions and Logarithm::
- * Trigonometric Functions::
- * Miscellaneous Complex Functions::
- * Advanced Functions::
- * Internals::
- File: mpc.info, Node: Initializing Complex Numbers, Next: Assigning Complex Numbers, Up: Complex Functions
- 5.1 Initialization Functions
- ============================
- An 'mpc_t' object must be initialized before storing the first value in
- it. The functions 'mpc_init2' and 'mpc_init3' are used for that
- purpose.
- -- Function: void mpc_init2 (mpc_t Z, mpfr_prec_t PREC)
- Initialize Z to precision PREC bits and set its real and imaginary
- parts to NaN. Normally, a variable should be initialized once only
- or at least be cleared, using 'mpc_clear', between initializations.
- -- Function: void mpc_init3 (mpc_t Z, mpfr_prec_t PREC_R, mpfr_prec_t
- PREC_I)
- Initialize Z with the precision of its real part being PREC_R bits
- and the precision of its imaginary part being PREC_I bits, and set
- the real and imaginary parts to NaN.
- -- Function: void mpc_clear (mpc_t Z)
- Free the space occupied by Z. Make sure to call this function for
- all 'mpc_t' variables when you are done with them.
- Here is an example on how to initialize complex variables:
- {
- mpc_t x, y;
- mpc_init2 (x, 256); /* precision _exactly_ 256 bits */
- mpc_init3 (y, 100, 50); /* 100/50 bits for the real/imaginary part */
- ...
- mpc_clear (x);
- mpc_clear (y);
- }
- The following function is useful for changing the precision during a
- calculation. A typical use would be for adjusting the precision
- gradually in iterative algorithms like Newton-Raphson, making the
- computation precision closely match the actual accurate part of the
- numbers.
- -- Function: void mpc_set_prec (mpc_t X, mpfr_prec_t PREC)
- Reset the precision of X to be *exactly* PREC bits, and set its
- real/imaginary parts to NaN. The previous value stored in X is
- lost. It is equivalent to a call to 'mpc_clear(x)' followed by a
- call to 'mpc_init2(x, prec)', but more efficient as no allocation
- is done in case the current allocated space for the mantissa of X
- is sufficient.
- -- Function: mpfr_prec_t mpc_get_prec (mpc_t X)
- If the real and imaginary part of X have the same precision, it is
- returned, otherwise, 0 is returned.
- -- Function: void mpc_get_prec2 (mpfr_prec_t* PR, mpfr_prec_t* PI,
- mpc_t X)
- Returns the precision of the real part of X via PR and of its
- imaginary part via PI.
- File: mpc.info, Node: Assigning Complex Numbers, Next: Converting Complex Numbers, Prev: Initializing Complex Numbers, Up: Complex Functions
- 5.2 Assignment Functions
- ========================
- These functions assign new values to already initialized complex numbers
- (*note Initializing Complex Numbers::). When using any functions with
- 'intmax_t' or 'uintmax_t' parameters, you must include '<stdint.h>' or
- '<inttypes.h>' _before_ 'mpc.h', to allow 'mpc.h' to define prototypes
- for these functions. Similarly, functions with parameters of type
- 'complex' or 'long complex' are defined only if '<complex.h>' is
- included _before_ 'mpc.h'. If you need assignment functions that are
- not in the current API, you can define them using the 'MPC_SET_X_Y'
- macro (*note Advanced Functions::).
- -- Function: int mpc_set (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set the value of ROP from OP, rounded to the precision of ROP with
- the given rounding mode RND.
- -- Function: int mpc_set_ui (mpc_t ROP, unsigned long int OP, mpc_rnd_t
- RND)
- -- Function: int mpc_set_si (mpc_t ROP, long int OP, mpc_rnd_t RND)
- -- Function: int mpc_set_uj (mpc_t ROP, uintmax_t OP, mpc_rnd_t RND)
- -- Function: int mpc_set_sj (mpc_t ROP, intmax_t OP, mpc_rnd_t RND)
- -- Function: int mpc_set_d (mpc_t ROP, double OP, mpc_rnd_t RND)
- -- Function: int mpc_set_ld (mpc_t ROP, long double OP, mpc_rnd_t RND)
- -- Function: int mpc_set_dc (mpc_t ROP, double _Complex OP, mpc_rnd_t
- RND)
- -- Function: int mpc_set_ldc (mpc_t ROP, long double _Complex OP,
- mpc_rnd_t RND)
- -- Function: int mpc_set_z (mpc_t ROP, mpz_t OP mpc_rnd_t RND)
- -- Function: int mpc_set_q (mpc_t ROP, mpq_t OP mpc_rnd_t RND)
- -- Function: int mpc_set_f (mpc_t ROP, mpf_t OP mpc_rnd_t RND)
- -- Function: int mpc_set_fr (mpc_t ROP, mpfr_t OP, mpc_rnd_t RND)
- Set the value of ROP from OP, rounded to the precision of ROP with
- the given rounding mode RND. The argument OP is interpreted as
- real, so the imaginary part of ROP is set to zero with a positive
- sign. Please note that even a 'long int' may have to be rounded,
- if the destination precision is less than the machine word width.
- For 'mpc_set_d', be careful that the input number OP may not be
- exactly representable as a double-precision number (this happens
- for 0.1 for instance), in which case it is first rounded by the C
- compiler to a double-precision number, and then only to a complex
- number.
- -- Function: int mpc_set_ui_ui (mpc_t ROP, unsigned long int OP1,
- unsigned long int OP2, mpc_rnd_t RND)
- -- Function: int mpc_set_si_si (mpc_t ROP, long int OP1, long int OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_set_uj_uj (mpc_t ROP, uintmax_t OP1, uintmax_t
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_set_sj_sj (mpc_t ROP, intmax_t OP1, intmax_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_set_d_d (mpc_t ROP, double OP1, double OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_set_ld_ld (mpc_t ROP, long double OP1, long double
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_set_z_z (mpc_t ROP, mpz_t OP1, mpz_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_set_q_q (mpc_t ROP, mpq_t OP1, mpq_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_set_f_f (mpc_t ROP, mpf_t OP1, mpf_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_set_fr_fr (mpc_t ROP, mpfr_t OP1, mpfr_t OP2,
- mpc_rnd_t RND)
- Set the real part of ROP from OP1, and its imaginary part from OP2,
- according to the rounding mode RND.
- Beware that the behaviour of 'mpc_set_fr_fr' is undefined if OP1 or
- OP2 is a pointer to the real or imaginary part of ROP. To exchange
- the real and the imaginary part of a complex number, either use
- 'mpfr_swap (mpc_realref (rop), mpc_imagref (rop))', which also
- exchanges the precisions of the two parts; or use a temporary
- variable.
- For functions assigning complex variables from strings or input
- streams, *note String and Stream Input and Output::.
- -- Function: void mpc_set_nan (mpc_t ROP)
- Set ROP to Nan+i*NaN.
- -- Function: void mpc_swap (mpc_t OP1, mpc_t OP2)
- Swap the values of OP1 and OP2 efficiently. Warning: The
- precisions are exchanged, too; in case these are different,
- 'mpc_swap' is thus not equivalent to three 'mpc_set' calls using a
- third auxiliary variable.
- File: mpc.info, Node: Converting Complex Numbers, Next: String and Stream Input and Output, Prev: Assigning Complex Numbers, Up: Complex Functions
- 5.3 Conversion Functions
- ========================
- The following functions are available only if '<complex.h>' is included
- _before_ 'mpc.h'.
- -- Function: double _Complex mpc_get_dc (mpc_t OP, mpc_rnd_t RND)
- -- Function: long double _Complex mpc_get_ldc (mpc_t OP, mpc_rnd_t RND)
- Convert OP to a C complex number, using the rounding mode RND.
- For functions converting complex variables to strings or stream
- output, *note String and Stream Input and Output::.
- File: mpc.info, Node: String and Stream Input and Output, Next: Complex Comparison, Prev: Converting Complex Numbers, Up: Complex Functions
- 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 (*note Return
- Value: 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' (*note (mpfr.info)Assignment Functions::). 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 for 'base'=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 to 'mpc_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 (*note Return Value: 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 of 'gmp'); once it is not
- needed any more, it should be freed by calling 'mpc_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 from 'stdin'. Return the usual inexact value; if an error
- occurs, set ROP to 'NaN + 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 function 'mpc_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 to 'mpc_set_str'. Precisely, after
- skipping optional whitespace, a minimal string is read according to
- the regular expression 'mpfr | '(' \s* mpfr \s+ mpfr \s* ')'',
- where '\s' denotes a whitespace, and 'mpfr' is either a string
- containing neither whitespaces nor parentheses, or
- 'nan(n-char-sequence)' or '@nan@(n-char-sequence)' (regardless of
- capitalisation) with 'n-char-sequence' a string of ascii letters,
- digits or ''_''.
- For instance, upon input of '"nan(13 1)"', the function
- 'mpc_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 function
- 'mpc_strtoc', on the other hand, may track back when reaching the
- whitespace; it treats the string as the two successive complex
- numbers 'NaN + i * 0' and '13 + 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 to 'stdout'.
- Return the number of characters written.
- File: mpc.info, Node: Complex Comparison, Next: Projection & Decomposing, Prev: String and Stream Input and Output, Up: Complex Functions
- 5.5 Comparison Functions
- ========================
- -- Function: int mpc_cmp (mpc_t OP1, mpc_t OP2)
- -- Function: int mpc_cmp_si_si (mpc_t OP1, long int OP2R, long int
- OP2I)
- -- Macro: int mpc_cmp_si (mpc_t OP1, long int OP2)
- Compare OP1 and OP2, where in the case of 'mpc_cmp_si_si', OP2 is
- taken to be OP2R + i OP2I. The return value C can be decomposed
- into 'x = MPC_INEX_RE(c)' and 'y = MPC_INEX_IM(c)', such that X is
- positive if the real part of OP1 is greater than that of OP2, zero
- if both real parts are equal, and negative if the real part of OP1
- is less than that of OP2, and likewise for Y. Both OP1 and OP2 are
- considered to their full own precision, which may differ. It is
- not allowed that one of the operands has a NaN (Not-a-Number) part.
- The storage of the return value is such that equality can be simply
- checked with 'mpc_cmp (op1, op2) == 0'.
- File: mpc.info, Node: Projection & Decomposing, Next: Basic Arithmetic, Prev: Complex Comparison, Up: Complex Functions
- 5.6 Projection and Decomposing Functions
- ========================================
- -- Function: int mpc_real (mpfr_t ROP, mpc_t OP, mpfr_rnd_t RND)
- Set ROP to the value of the real part of OP rounded in the
- direction RND.
- -- Function: int mpc_imag (mpfr_t ROP, mpc_t OP, mpfr_rnd_t RND)
- Set ROP to the value of the imaginary part of OP rounded in the
- direction RND.
- -- Macro: mpfr_t mpc_realref (mpc_t OP)
- -- Macro: mpfr_t mpc_imagref (mpc_t OP)
- Return a reference to the real part and imaginary part of OP,
- respectively. The 'mpfr' functions can be used on the result of
- these macros (note that the 'mpfr_t' type is itself a pointer).
- -- Function: int mpc_arg (mpfr_t ROP, mpc_t OP, mpfr_rnd_t RND)
- Set ROP to the argument of OP, with a branch cut along the negative
- real axis.
- -- Function: int mpc_proj (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Compute a projection of OP onto the Riemann sphere. Set ROP to OP
- rounded in the direction RND, except when at least one part of OP
- is infinite (even if the other part is a NaN) in which case the
- real part of ROP is set to plus infinity and its imaginary part to
- a signed zero with the same sign as the imaginary part of OP.
- File: mpc.info, Node: Basic Arithmetic, Next: Power Functions and Logarithm, Prev: Projection & Decomposing, Up: Complex Functions
- 5.7 Basic Arithmetic Functions
- ==============================
- All the following functions are designed in such a way that, when
- working with real numbers instead of complex numbers, their complexity
- should essentially be the same as with the GNU MPFR library, with only a
- marginal overhead due to the GNU MPC layer.
- -- Function: int mpc_add (mpc_t ROP, mpc_t OP1, mpc_t OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_add_ui (mpc_t ROP, mpc_t OP1, unsigned long int
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_add_fr (mpc_t ROP, mpc_t OP1, mpfr_t OP2,
- mpc_rnd_t RND)
- Set ROP to OP1 + OP2 rounded according to RND.
- -- Function: int mpc_sub (mpc_t ROP, mpc_t OP1, mpc_t OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_sub_fr (mpc_t ROP, mpc_t OP1, mpfr_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_fr_sub (mpc_t ROP, mpfr_t OP1, mpc_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_sub_ui (mpc_t ROP, mpc_t OP1, unsigned long int
- OP2, mpc_rnd_t RND)
- -- Macro: int mpc_ui_sub (mpc_t ROP, unsigned long int OP1, mpc_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_ui_ui_sub (mpc_t ROP, unsigned long int RE1,
- unsigned long int IM1, mpc_t OP2, mpc_rnd_t RND)
- Set ROP to OP1 - OP2 rounded according to RND. For
- 'mpc_ui_ui_sub', OP1 is RE1 + IM1.
- -- Function: int mpc_neg (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to -OP rounded according to RND. Just changes the sign if
- ROP and OP are the same variable.
- -- Function: int mpc_mul (mpc_t ROP, mpc_t OP1, mpc_t OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_mul_ui (mpc_t ROP, mpc_t OP1, unsigned long int
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_mul_si (mpc_t ROP, mpc_t OP1, long int OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_mul_fr (mpc_t ROP, mpc_t OP1, mpfr_t OP2,
- mpc_rnd_t RND)
- Set ROP to OP1 times OP2 rounded according to RND. Note: for
- 'mpc_mul', in case OP1 and OP2 have the same value, use 'mpc_sqr'
- for better efficiency.
- -- Function: int mpc_mul_i (mpc_t ROP, mpc_t OP, int SGN, mpc_rnd_t
- RND)
- Set ROP to OP times the imaginary unit i if SGN is non-negative,
- set ROP to OP times -i otherwise, in both cases rounded according
- to RND.
- -- Function: int mpc_sqr (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the square of OP rounded according to RND.
- -- Function: int mpc_fma (mpc_t ROP, mpc_t OP1, mpc_t OP2, mpc_t OP3,
- mpc_rnd_t RND)
- Set ROP to OP1*OP2+OP3, rounded according to RND, with only one
- final rounding.
- -- Function: int mpc_div (mpc_t ROP, mpc_t OP1, mpc_t OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_div_ui (mpc_t ROP, mpc_t OP1, unsigned long int
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_div_fr (mpc_t ROP, mpc_t OP1, mpfr_t OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_ui_div (mpc_t ROP, unsigned long int OP1, mpc_t
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_fr_div (mpc_t ROP, mpfr_t OP1, mpc_t OP2,
- mpc_rnd_t RND)
- Set ROP to OP1/OP2 rounded according to RND.
- -- Function: int mpc_conj (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the conjugate of OP rounded according to RND. Just
- changes the sign of the imaginary part if ROP and OP are the same
- variable.
- -- Function: int mpc_abs (mpfr_t ROP, mpc_t OP, mpfr_rnd_t RND)
- Set the floating-point number ROP to the absolute value of OP,
- rounded in the direction RND.
- -- Function: int mpc_norm (mpfr_t ROP, mpc_t OP, mpfr_rnd_t RND)
- Set the floating-point number ROP to the norm of OP (i.e., the
- square of its absolute value), rounded in the direction RND.
- -- Function: int mpc_mul_2ui (mpc_t ROP, mpc_t OP1, unsigned long int
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_mul_2si (mpc_t ROP, mpc_t OP1, long int OP2,
- mpc_rnd_t RND)
- Set ROP to OP1 times 2 raised to OP2 rounded according to RND.
- Just modifies the exponents of the real and imaginary parts by OP2
- when ROP and OP1 are identical.
- -- Function: int mpc_div_2ui (mpc_t ROP, mpc_t OP1, unsigned long int
- OP2, mpc_rnd_t RND)
- -- Function: int mpc_div_2si (mpc_t ROP, mpc_t OP1, long int OP2,
- mpc_rnd_t RND)
- Set ROP to OP1 divided by 2 raised to OP2 rounded according to RND.
- Just modifies the exponents of the real and imaginary parts by OP2
- when ROP and OP1 are identical.
- File: mpc.info, Node: Power Functions and Logarithm, Next: Trigonometric Functions, Prev: Basic Arithmetic, Up: Complex Functions
- 5.8 Power Functions and Logarithm
- =================================
- -- Function: int mpc_sqrt (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the square root of OP rounded according to RND. The
- returned value ROP has a non-negative real part, and if its real
- part is zero, a non-negative imaginary part.
- -- Function: int mpc_pow (mpc_t ROP, mpc_t OP1, mpc_t OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_pow_d (mpc_t ROP, mpc_t OP1, double OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_pow_ld (mpc_t ROP, mpc_t OP1, long double OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_pow_si (mpc_t ROP, mpc_t OP1, long OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_pow_ui (mpc_t ROP, mpc_t OP1, unsigned long OP2,
- mpc_rnd_t RND)
- -- Function: int mpc_pow_z (mpc_t ROP, mpc_t OP1, mpz_t OP2, mpc_rnd_t
- RND)
- -- Function: int mpc_pow_fr (mpc_t ROP, mpc_t OP1, mpfr_t OP2,
- mpc_rnd_t RND)
- Set ROP to OP1 raised to the power OP2, rounded according to RND.
- For 'mpc_pow_d', 'mpc_pow_ld', 'mpc_pow_si', 'mpc_pow_ui',
- 'mpc_pow_z' and 'mpc_pow_fr', the imaginary part of OP2 is
- considered as +0. When both OP1 and OP2 are zero, the result has
- real part 1, and imaginary part 0, with sign being the opposite of
- that of OP2.
- -- Function: int mpc_exp (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the exponential of OP, rounded according to RND with the
- precision of ROP.
- -- Function: int mpc_log (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- -- Function: int mpc_log10 (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the natural and base-10 logarithm of OP respectively,
- rounded according to RND with the precision of ROP. The principal
- branch is chosen, with the branch cut on the negative real axis, so
- that the imaginary part of the result lies in ]-\pi , \pi] and
- ]-\pi/log(10) , \pi/log(10)] respectively.
- File: mpc.info, Node: Trigonometric Functions, Next: Miscellaneous Complex Functions, Prev: Power Functions and Logarithm, Up: Complex Functions
- 5.9 Trigonometric Functions
- ===========================
- -- Function: int mpc_sin (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the sine of OP, rounded according to RND with the
- precision of ROP.
- -- Function: int mpc_cos (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the cosine of OP, rounded according to RND with the
- precision of ROP.
- -- Function: int mpc_sin_cos (mpc_t ROP_SIN, mpc_t ROP_COS, mpc_t OP,
- mpc_rnd_t RND_SIN, mpc_rnd_t RND_COS)
- Set ROP_SIN to the sine of OP, rounded according to RND_SIN with
- the precision of ROP_SIN, and ROP_COS to the cosine of OP, rounded
- according to RND_COS with the precision of ROP_COS.
- -- Function: int mpc_tan (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the tangent of OP, rounded according to RND with the
- precision of ROP.
- -- Function: int mpc_sinh (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the hyperbolic sine of OP, rounded according to RND with
- the precision of ROP.
- -- Function: int mpc_cosh (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the hyperbolic cosine of OP, rounded according to RND
- with the precision of ROP.
- -- Function: int mpc_tanh (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the hyperbolic tangent of OP, rounded according to RND
- with the precision of ROP.
- -- Function: int mpc_asin (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- -- Function: int mpc_acos (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- -- Function: int mpc_atan (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the inverse sine, inverse cosine, inverse tangent of OP,
- rounded according to RND with the precision of ROP.
- -- Function: int mpc_asinh (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- -- Function: int mpc_acosh (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- -- Function: int mpc_atanh (mpc_t ROP, mpc_t OP, mpc_rnd_t RND)
- Set ROP to the inverse hyperbolic sine, inverse hyperbolic cosine,
- inverse hyperbolic tangent of OP, rounded according to RND with the
- precision of ROP. The branch cut of MPC_ACOSH is (-\infty, 1).
- File: mpc.info, Node: Miscellaneous Complex Functions, Next: Advanced Functions, Prev: Trigonometric Functions, Up: Complex Functions
- 5.10 Miscellaneous Functions
- ============================
- -- Function: int mpc_urandom (mpc_t ROP, gmp_randstate_t STATE)
- Generate a uniformly distributed random complex in the unit square
- [0, 1] x [0, 1]. Return 0, unless an exponent in the real or
- imaginary part is not in the current exponent range, in which case
- that part is set to NaN and a zero value is returned. The second
- argument is a 'gmp_randstate_t' structure which should be created
- using the GMP 'rand_init' function, see the GMP manual.
- -- Function: const char * mpc_get_version (void)
- Return the GNU MPC version, as a null-terminated string.
- -- Macro: MPC_VERSION
- -- Macro: MPC_VERSION_MAJOR
- -- Macro: MPC_VERSION_MINOR
- -- Macro: MPC_VERSION_PATCHLEVEL
- -- Macro: MPC_VERSION_STRING
- 'MPC_VERSION' is the version of GNU MPC as a preprocessing
- constant. 'MPC_VERSION_MAJOR', 'MPC_VERSION_MINOR' and
- 'MPC_VERSION_PATCHLEVEL' are respectively the major, minor and
- patch level of GNU MPC version, as preprocessing constants.
- 'MPC_VERSION_STRING' is the version as a string constant, which can
- be compared to the result of 'mpc_get_version' to check at run time
- the header file and library used match:
- if (strcmp (mpc_get_version (), MPC_VERSION_STRING))
- fprintf (stderr, "Warning: header and library do not match\n");
- Note: Obtaining different strings is not necessarily an error, as
- in general, a program compiled with some old GNU MPC version can be
- dynamically linked with a newer GNU MPC library version (if allowed
- by the library versioning system).
- -- Macro: long MPC_VERSION_NUM (MAJOR, MINOR, PATCHLEVEL)
- Create an integer in the same format as used by 'MPC_VERSION' from
- the given MAJOR, MINOR and PATCHLEVEL. Here is an example of how
- to check the GNU MPC version at compile time:
- #if (!defined(MPC_VERSION) || (MPC_VERSION<MPC_VERSION_NUM(2,1,0)))
- # error "Wrong GNU MPC version."
- #endif
- File: mpc.info, Node: Advanced Functions, Next: Internals, Prev: Miscellaneous Complex Functions, Up: Complex Functions
- 5.11 Advanced Functions
- =======================
- -- Macro: MPC_SET_X_Y (REAL_SUFFIX, IMAG_SUFFIX, ROP, REAL, IMAG, RND)
- The macro MPC_SET_X_Y is designed to serve as the body of an
- assignment function and cannot be used by itself. The REAL_SUFFIX
- and IMAG_SUFFIX parameters are the types of the real and imaginary
- part, that is, the 'x' in the 'mpfr_set_x' function one would use
- to set the part; for the mpfr type, use 'fr'. REAL (respectively
- IMAG) is the value you want to assign to the real (resp.
- imaginary) part, its type must conform to REAL_SUFFIX (resp.
- IMAG_SUFFIX). RND is the 'mpc_rnd_t' rounding mode. The return
- value is the usual inexact value (*note Return Value:
- return-value.).
- For instance, you can define mpc_set_ui_fr as follows:
- int mpc_set_ui_fr (mpc_t rop, long int re, double im, mpc_rnd_t rnd)
- MPC_SET_X_Y (ui, fr, rop, re, im, rnd);
- File: mpc.info, Node: Internals, Prev: Advanced Functions, Up: Complex Functions
- 5.12 Internals
- ==============
- These macros and functions are mainly designed for the implementation of
- GNU MPC, but may be useful for users too. However, no upward
- compatibility is guaranteed. You need to include 'mpc-impl.h' to use
- them.
- The macro 'MPC_MAX_PREC(z)' gives the maximum of the precisions of
- the real and imaginary parts of a complex number.
- File: mpc.info, Node: References, Next: Concept Index, Prev: Complex Functions, Up: Top
- References
- **********
- * Torbjo"rn Granlund et al. 'gmp' - GNU multiprecision library.
- Version 4.2.4, <http://gmplib.org/>.
- * Guillaume Hanrot, Vincent Lefe`vre, Patrick Pe'lissier, Paul
- Zimmermann et al. 'mpfr' - A library for multiple-precision
- floating-point computations with exact rounding. Version 2.4.1,
- <http://www.mpfr.org>.
- * IEEE standard for binary floating-point arithmetic, Technical
- Report ANSI-IEEE Standard 754-1985, New York, 1985. Approved March
- 21, 1985: IEEE Standards Board; approved July 26, 1985: American
- National Standards Institute, 18 pages.
- * Donald E. Knuth, "The Art of Computer Programming", vol 2,
- "Seminumerical Algorithms", 2nd edition, Addison-Wesley, 1981.
- * ISO/IEC 9899:1999, Programming languages — C.
- File: mpc.info, Node: Concept Index, Next: Function Index, Prev: References, Up: Top
- Concept Index
- *************
- �[index�]
- * Menu:
- * Arithmetic functions: Basic Arithmetic. (line 6)
- * Comparison functions: Complex Comparison. (line 6)
- * Complex arithmetic functions: Basic Arithmetic. (line 6)
- * Complex assignment functions: Assigning Complex Numbers.
- (line 6)
- * Complex comparisons functions: Complex Comparison. (line 6)
- * Complex functions: Complex Functions. (line 6)
- * Complex number: GNU MPC Basics. (line 15)
- * Conditions for copying GNU MPC: Copying. (line 6)
- * Conversion functions: Converting Complex Numbers.
- (line 6)
- * Copying conditions: Copying. (line 6)
- * Installation: Installing GNU MPC. (line 6)
- * Logarithm: Power Functions and Logarithm.
- (line 6)
- * Miscellaneous complex functions: Miscellaneous Complex Functions.
- (line 6)
- * 'mpc.h': GNU MPC Basics. (line 6)
- * Power functions: Power Functions and Logarithm.
- (line 6)
- * Precision: GNU MPC Basics. (line 19)
- * Projection and Decomposing Functions: Projection & Decomposing.
- (line 6)
- * Reporting bugs: Reporting Bugs. (line 6)
- * Rounding Mode: GNU MPC Basics. (line 24)
- * String and stream input and output: String and Stream Input and Output.
- (line 6)
- * Trigonometric functions: Trigonometric Functions.
- (line 6)
- * User-defined precision: Complex Functions. (line 12)
- File: mpc.info, Node: Function Index, Next: GNU Free Documentation License, Prev: Concept Index, Up: Top
- Function Index
- **************
- �[index�]
- * Menu:
- * _Complex: Converting Complex Numbers.
- (line 9)
- * mpc_abs: Basic Arithmetic. (line 81)
- * mpc_acos: Trigonometric Functions.
- (line 37)
- * mpc_acosh: Trigonometric Functions.
- (line 43)
- * mpc_add: Basic Arithmetic. (line 11)
- * mpc_add_fr: Basic Arithmetic. (line 15)
- * mpc_add_ui: Basic Arithmetic. (line 13)
- * mpc_arg: Projection & Decomposing.
- (line 20)
- * mpc_asin: Trigonometric Functions.
- (line 36)
- * mpc_asinh: Trigonometric Functions.
- (line 42)
- * mpc_atan: Trigonometric Functions.
- (line 38)
- * mpc_atanh: Trigonometric Functions.
- (line 44)
- * mpc_clear: Initializing Complex Numbers.
- (line 21)
- * mpc_cmp: Complex Comparison. (line 6)
- * mpc_cmp_si: Complex Comparison. (line 9)
- * mpc_cmp_si_si: Complex Comparison. (line 7)
- * mpc_conj: Basic Arithmetic. (line 76)
- * mpc_cos: Trigonometric Functions.
- (line 10)
- * mpc_cosh: Trigonometric Functions.
- (line 28)
- * mpc_div: Basic Arithmetic. (line 64)
- * mpc_div_2si: Basic Arithmetic. (line 99)
- * mpc_div_2ui: Basic Arithmetic. (line 97)
- * mpc_div_fr: Basic Arithmetic. (line 68)
- * mpc_div_ui: Basic Arithmetic. (line 66)
- * mpc_exp: Power Functions and Logarithm.
- (line 32)
- * mpc_fma: Basic Arithmetic. (line 59)
- * mpc_free_str: String and Stream Input and Output.
- (line 66)
- * mpc_fr_div: Basic Arithmetic. (line 72)
- * mpc_fr_sub: Basic Arithmetic. (line 23)
- * mpc_get_ldc: Converting Complex Numbers.
- (line 10)
- * mpc_get_prec: Initializing Complex Numbers.
- (line 49)
- * mpc_get_prec2: Initializing Complex Numbers.
- (line 53)
- * mpc_get_str: String and Stream Input and Output.
- (line 48)
- * mpc_get_version: Miscellaneous Complex Functions.
- (line 14)
- * mpc_imag: Projection & Decomposing.
- (line 10)
- * mpc_imagref: Projection & Decomposing.
- (line 15)
- * mpc_init2: Initializing Complex Numbers.
- (line 10)
- * mpc_init3: Initializing Complex Numbers.
- (line 15)
- * mpc_inp_str: String and Stream Input and Output.
- (line 74)
- * mpc_log: Power Functions and Logarithm.
- (line 36)
- * mpc_log10: Power Functions and Logarithm.
- (line 37)
- * mpc_mul: Basic Arithmetic. (line 38)
- * mpc_mul_2si: Basic Arithmetic. (line 91)
- * mpc_mul_2ui: Basic Arithmetic. (line 89)
- * mpc_mul_fr: Basic Arithmetic. (line 44)
- * mpc_mul_i: Basic Arithmetic. (line 50)
- * mpc_mul_si: Basic Arithmetic. (line 42)
- * mpc_mul_ui: Basic Arithmetic. (line 40)
- * mpc_neg: Basic Arithmetic. (line 34)
- * mpc_norm: Basic Arithmetic. (line 85)
- * mpc_out_str: String and Stream Input and Output.
- (line 109)
- * mpc_pow: Power Functions and Logarithm.
- (line 11)
- * mpc_pow_d: Power Functions and Logarithm.
- (line 13)
- * mpc_pow_fr: Power Functions and Logarithm.
- (line 23)
- * mpc_pow_ld: Power Functions and Logarithm.
- (line 15)
- * mpc_pow_si: Power Functions and Logarithm.
- (line 17)
- * mpc_pow_ui: Power Functions and Logarithm.
- (line 19)
- * mpc_pow_z: Power Functions and Logarithm.
- (line 21)
- * mpc_proj: Projection & Decomposing.
- (line 24)
- * mpc_real: Projection & Decomposing.
- (line 6)
- * mpc_realref: Projection & Decomposing.
- (line 14)
- * 'mpc_rnd_t': GNU MPC Basics. (line 24)
- * mpc_set: Assigning Complex Numbers.
- (line 16)
- * mpc_set_d: Assigning Complex Numbers.
- (line 25)
- * mpc_set_dc: Assigning Complex Numbers.
- (line 27)
- * mpc_set_d_d: Assigning Complex Numbers.
- (line 54)
- * mpc_set_f: Assigning Complex Numbers.
- (line 33)
- * mpc_set_fr: Assigning Complex Numbers.
- (line 34)
- * mpc_set_fr_fr: Assigning Complex Numbers.
- (line 64)
- * mpc_set_f_f: Assigning Complex Numbers.
- (line 62)
- * mpc_set_ld: Assigning Complex Numbers.
- (line 26)
- * mpc_set_ldc: Assigning Complex Numbers.
- (line 29)
- * mpc_set_ld_ld: Assigning Complex Numbers.
- (line 56)
- * mpc_set_nan: Assigning Complex Numbers.
- (line 79)
- * mpc_set_prec: Initializing Complex Numbers.
- (line 41)
- * mpc_set_q: Assigning Complex Numbers.
- (line 32)
- * mpc_set_q_q: Assigning Complex Numbers.
- (line 60)
- * mpc_set_si: Assigning Complex Numbers.
- (line 22)
- * mpc_set_si_si: Assigning Complex Numbers.
- (line 48)
- * mpc_set_sj: Assigning Complex Numbers.
- (line 24)
- * mpc_set_sj_sj: Assigning Complex Numbers.
- (line 52)
- * mpc_set_str: String and Stream Input and Output.
- (line 35)
- * mpc_set_ui: Assigning Complex Numbers.
- (line 20)
- * mpc_set_ui_ui: Assigning Complex Numbers.
- (line 46)
- * mpc_set_uj: Assigning Complex Numbers.
- (line 23)
- * mpc_set_uj_uj: Assigning Complex Numbers.
- (line 50)
- * MPC_SET_X_Y: Advanced Functions. (line 6)
- * mpc_set_z: Assigning Complex Numbers.
- (line 31)
- * mpc_set_z_z: Assigning Complex Numbers.
- (line 58)
- * mpc_sin: Trigonometric Functions.
- (line 6)
- * mpc_sinh: Trigonometric Functions.
- (line 24)
- * mpc_sin_cos: Trigonometric Functions.
- (line 14)
- * mpc_sqr: Basic Arithmetic. (line 56)
- * mpc_sqrt: Power Functions and Logarithm.
- (line 6)
- * mpc_strtoc: String and Stream Input and Output.
- (line 6)
- * mpc_sub: Basic Arithmetic. (line 19)
- * mpc_sub_fr: Basic Arithmetic. (line 21)
- * mpc_sub_ui: Basic Arithmetic. (line 25)
- * mpc_swap: Assigning Complex Numbers.
- (line 82)
- * 'mpc_t': GNU MPC Basics. (line 15)
- * mpc_tan: Trigonometric Functions.
- (line 20)
- * mpc_tanh: Trigonometric Functions.
- (line 32)
- * mpc_ui_div: Basic Arithmetic. (line 70)
- * mpc_ui_sub: Basic Arithmetic. (line 27)
- * mpc_ui_ui_sub: Basic Arithmetic. (line 29)
- * mpc_urandom: Miscellaneous Complex Functions.
- (line 6)
- * MPC_VERSION: Miscellaneous Complex Functions.
- (line 17)
- * MPC_VERSION_MAJOR: Miscellaneous Complex Functions.
- (line 18)
- * MPC_VERSION_MINOR: Miscellaneous Complex Functions.
- (line 19)
- * MPC_VERSION_NUM: Miscellaneous Complex Functions.
- (line 36)
- * MPC_VERSION_PATCHLEVEL: Miscellaneous Complex Functions.
- (line 20)
- * MPC_VERSION_STRING: Miscellaneous Complex Functions.
- (line 21)
- * 'mpfr_prec_t': GNU MPC Basics. (line 19)
- File: mpc.info, Node: GNU Free Documentation License, Prev: Function Index, Up: Top
- Appendix A GNU Free Documentation License
- *****************************************
- Version 1.3, 3 November 2008
- Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
- <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
- 0. PREAMBLE
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or
- noncommercially. Secondarily, this License preserves for the
- author and publisher a way to get credit for their work, while not
- being considered responsible for modifications made by others.
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft
- license designed for free software.
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same freedoms
- that the software does. But this License is not limited to
- software manuals; it can be used for any textual work, regardless
- of subject matter or whether it is published as a printed book. We
- recommend this License principally for works whose purpose is
- instruction or reference.
- 1. APPLICABILITY AND DEFINITIONS
- This License applies to any manual or other work, in any medium,
- that contains a notice placed by the copyright holder saying it can
- be distributed under the terms of this License. Such a notice
- grants a world-wide, royalty-free license, unlimited in duration,
- to use that work under the conditions stated herein. The
- "Document", below, refers to any such manual or work. Any member
- of the public is a licensee, and is addressed as "you". You accept
- the license if you copy, modify or distribute the work in a way
- requiring permission under copyright law.
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
- A "Secondary Section" is a named appendix or a front-matter section
- of the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document's overall
- subject (or to related matters) and contains nothing that could
- fall directly within that overall subject. (Thus, if the Document
- is in part a textbook of mathematics, a Secondary Section may not
- explain any mathematics.) The relationship could be a matter of
- historical connection with the subject or with related matters, or
- of legal, commercial, philosophical, ethical or political position
- regarding them.
- The "Invariant Sections" are certain Secondary Sections whose
- titles are designated, as being those of Invariant Sections, in the
- notice that says that the Document is released under this License.
- If a section does not fit the above definition of Secondary then it
- is not allowed to be designated as Invariant. The Document may
- contain zero Invariant Sections. If the Document does not identify
- any Invariant Sections then there are none.
- The "Cover Texts" are certain short passages of text that are
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
- that says that the Document is released under this License. A
- Front-Cover Text may be at most 5 words, and a Back-Cover Text may
- be at most 25 words.
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images composed
- of pixels) generic paint programs or (for drawings) some widely
- available drawing editor, and that is suitable for input to text
- formatters or for automatic translation to a variety of formats
- suitable for input to text formatters. A copy made in an otherwise
- Transparent file format whose markup, or absence of markup, has
- been arranged to thwart or discourage subsequent modification by
- readers is not Transparent. An image format is not Transparent if
- used for any substantial amount of text. A copy that is not
- "Transparent" is called "Opaque".
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format,
- SGML or XML using a publicly available DTD, and standard-conforming
- simple HTML, PostScript or PDF designed for human modification.
- Examples of transparent image formats include PNG, XCF and JPG.
- Opaque formats include proprietary formats that can be read and
- edited only by proprietary word processors, SGML or XML for which
- the DTD and/or processing tools are not generally available, and
- the machine-generated HTML, PostScript or PDF produced by some word
- processors for output purposes only.
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the
- material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title
- Page" means the text near the most prominent appearance of the
- work's title, preceding the beginning of the body of the text.
- The "publisher" means any person or entity that distributes copies
- of the Document to the public.
- A section "Entitled XYZ" means a named subunit of the Document
- whose title either is precisely XYZ or contains XYZ in parentheses
- following text that translates XYZ in another language. (Here XYZ
- stands for a specific section name mentioned below, such as
- "Acknowledgements", "Dedications", "Endorsements", or "History".)
- To "Preserve the Title" of such a section when you modify the
- Document means that it remains a section "Entitled XYZ" according
- to this definition.
- The Document may include Warranty Disclaimers next to the notice
- which states that this License applies to the Document. These
- Warranty Disclaimers are considered to be included by reference in
- this License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and
- has no effect on the meaning of this License.
- 2. VERBATIM COPYING
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that you
- add no other conditions whatsoever to those of this License. You
- may not use technical measures to obstruct or control the reading
- or further copying of the copies you make or distribute. However,
- you may accept compensation in exchange for copies. If you
- distribute a large enough number of copies you must also follow the
- conditions in section 3.
- You may also lend copies, under the same conditions stated above,
- and you may publicly display copies.
- 3. COPYING IN QUANTITY
- If you publish printed copies (or copies in media that commonly
- have printed covers) of the Document, numbering more than 100, and
- the Document's license notice requires Cover Texts, you must
- enclose the copies in covers that carry, clearly and legibly, all
- these Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also clearly
- and legibly identify you as the publisher of these copies. The
- front cover must present the full title with all words of the title
- equally prominent and visible. You may add other material on the
- covers in addition. Copying with changes limited to the covers, as
- long as they preserve the title of the Document and satisfy these
- conditions, can be treated as verbatim copying in other respects.
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
- If you publish or distribute Opaque copies of the Document
- numbering more than 100, you must either include a machine-readable
- Transparent copy along with each Opaque copy, or state in or with
- each Opaque copy a computer-network location from which the general
- network-using public has access to download using public-standard
- network protocols a complete Transparent copy of the Document, free
- of added material. If you use the latter option, you must take
- reasonably prudent steps, when you begin distribution of Opaque
- copies in quantity, to ensure that this Transparent copy will
- remain thus accessible at the stated location until at least one
- year after the last time you distribute an Opaque copy (directly or
- through your agents or retailers) of that edition to the public.
- It is requested, but not required, that you contact the authors of
- the Document well before redistributing any large number of copies,
- to give them a chance to provide you with an updated version of the
- Document.
- 4. MODIFICATIONS
- You may copy and distribute a Modified Version of the Document
- under the conditions of sections 2 and 3 above, provided that you
- release the Modified Version under precisely this License, with the
- Modified Version filling the role of the Document, thus licensing
- distribution and modification of the Modified Version to whoever
- possesses a copy of it. In addition, you must do these things in
- the Modified Version:
- A. Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of previous
- versions (which should, if there were any, be listed in the
- History section of the Document). You may use the same title
- as a previous version if the original publisher of that
- version gives permission.
- B. List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in
- the Modified Version, together with at least five of the
- principal authors of the Document (all of its principal
- authors, if it has fewer than five), unless they release you
- from this requirement.
- C. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
- D. Preserve all the copyright notices of the Document.
- E. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
- F. Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified
- Version under the terms of this License, in the form shown in
- the Addendum below.
- G. Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
- H. Include an unaltered copy of this License.
- I. Preserve the section Entitled "History", Preserve its Title,
- and add to it an item stating at least the title, year, new
- authors, and publisher of the Modified Version as given on the
- Title Page. If there is no section Entitled "History" in the
- Document, create one stating the title, year, authors, and
- publisher of the Document as given on its Title Page, then add
- an item describing the Modified Version as stated in the
- previous sentence.
- J. Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in the
- "History" section. You may omit a network location for a work
- that was published at least four years before the Document
- itself, or if the original publisher of the version it refers
- to gives permission.
- K. For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the section
- all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
- L. Preserve all the Invariant Sections of the Document, unaltered
- in their text and in their titles. Section numbers or the
- equivalent are not considered part of the section titles.
- M. Delete any section Entitled "Endorsements". Such a section
- may not be included in the Modified Version.
- N. Do not retitle any existing section to be Entitled
- "Endorsements" or to conflict in title with any Invariant
- Section.
- O. Preserve any Warranty Disclaimers.
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no
- material copied from the Document, you may at your option designate
- some or all of these sections as invariant. To do this, add their
- titles to the list of Invariant Sections in the Modified Version's
- license notice. These titles must be distinct from any other
- section titles.
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties--for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
- You may add a passage of up to five words as a Front-Cover Text,
- and a passage of up to 25 words as a Back-Cover Text, to the end of
- the list of Cover Texts in the Modified Version. Only one passage
- of Front-Cover Text and one of Back-Cover Text may be added by (or
- through arrangements made by) any one entity. If the Document
- already includes a cover text for the same cover, previously added
- by you or by arrangement made by the same entity you are acting on
- behalf of, you may not add another; but you may replace the old
- one, on explicit permission from the previous publisher that added
- the old one.
- The author(s) and publisher(s) of the Document do not by this
- License give permission to use their names for publicity for or to
- assert or imply endorsement of any Modified Version.
- 5. COMBINING DOCUMENTS
- You may combine the Document with other documents released under
- this License, under the terms defined in section 4 above for
- modified versions, provided that you include in the combination all
- of the Invariant Sections of all of the original documents,
- unmodified, and list them all as Invariant Sections of your
- combined work in its license notice, and that you preserve all
- their Warranty Disclaimers.
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name
- but different contents, make the title of each such section unique
- by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a
- unique number. Make the same adjustment to the section titles in
- the list of Invariant Sections in the license notice of the
- combined work.
- In the combination, you must combine any sections Entitled
- "History" in the various original documents, forming one section
- Entitled "History"; likewise combine any sections Entitled
- "Acknowledgements", and any sections Entitled "Dedications". You
- must delete all sections Entitled "Endorsements."
- 6. COLLECTIONS OF DOCUMENTS
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the documents
- in all other respects.
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert
- a copy of this License into the extracted document, and follow this
- License in all other respects regarding verbatim copying of that
- document.
- 7. AGGREGATION WITH INDEPENDENT WORKS
- A compilation of the Document or its derivatives with other
- separate and independent documents or works, in or on a volume of a
- storage or distribution medium, is called an "aggregate" if the
- copyright resulting from the compilation is not used to limit the
- legal rights of the compilation's users beyond what the individual
- works permit. When the Document is included in an aggregate, this
- License does not apply to the other works in the aggregate which
- are not themselves derivative works of the Document.
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half
- of the entire aggregate, the Document's Cover Texts may be placed
- on covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic
- form. Otherwise they must appear on printed covers that bracket
- the whole aggregate.
- 8. TRANSLATION
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section
- 4. Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also
- include the original English version of this License and the
- original versions of those notices and disclaimers. In case of a
- disagreement between the translation and the original version of
- this License or a notice or disclaimer, the original version will
- prevail.
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to
- Preserve its Title (section 1) will typically require changing the
- actual title.
- 9. TERMINATION
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense, or distribute it is void,
- and will automatically terminate your rights under this License.
- However, if you cease all violation of this License, then your
- license from a particular copyright holder is reinstated (a)
- provisionally, unless and until the copyright holder explicitly and
- finally terminates your license, and (b) permanently, if the
- copyright holder fails to notify you of the violation by some
- reasonable means prior to 60 days after the cessation.
- Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from
- that copyright holder, and you cure the violation prior to 30 days
- after your receipt of the notice.
- Termination of your rights under this section does not terminate
- the licenses of parties who have received copies or rights from you
- under this License. If your rights have been terminated and not
- permanently reinstated, receipt of a copy of some or all of the
- same material does not give you any rights to use it.
- 10. FUTURE REVISIONS OF THIS LICENSE
- The Free Software Foundation may publish new, revised versions of
- the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- <http://www.gnu.org/copyleft/>.
- Each version of the License is given a distinguishing version
- number. If the Document specifies that a particular numbered
- version of this License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If the
- Document does not specify a version number of this License, you may
- choose any version ever published (not as a draft) by the Free
- Software Foundation. If the Document specifies that a proxy can
- decide which future versions of this License can be used, that
- proxy's public statement of acceptance of a version permanently
- authorizes you to choose that version for the Document.
- 11. RELICENSING
- "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
- World Wide Web server that publishes copyrightable works and also
- provides prominent facilities for anybody to edit those works. A
- public wiki that anybody can edit is an example of such a server.
- A "Massive Multiauthor Collaboration" (or "MMC") contained in the
- site means any set of copyrightable works thus published on the MMC
- site.
- "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
- license published by Creative Commons Corporation, a not-for-profit
- corporation with a principal place of business in San Francisco,
- California, as well as future copyleft versions of that license
- published by that same organization.
- "Incorporate" means to publish or republish a Document, in whole or
- in part, as part of another Document.
- An MMC is "eligible for relicensing" if it is licensed under this
- License, and if all works that were first published under this
- License somewhere other than this MMC, and subsequently
- incorporated in whole or in part into the MMC, (1) had no cover
- texts or invariant sections, and (2) were thus incorporated prior
- to November 1, 2008.
- The operator of an MMC Site may republish an MMC contained in the
- site under CC-BY-SA on the same site at any time before August 1,
- 2009, provided the MMC is eligible for relicensing.
- ADDENDUM: How to use this License for your documents
- ====================================================
- To use this License in a document you have written, include a copy of
- the License in the document and put the following copyright and license
- notices just after the title page:
- Copyright (C) YEAR YOUR NAME.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
- Texts. A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
- If you have Invariant Sections, Front-Cover Texts and Back-Cover
- Texts, replace the "with...Texts." line with this:
- with the Invariant Sections being LIST THEIR TITLES, with
- the Front-Cover Texts being LIST, and with the Back-Cover Texts
- being LIST.
- If you have Invariant Sections without Cover Texts, or some other
- combination of the three, merge those two alternatives to suit the
- situation.
- If your document contains nontrivial examples of program code, we
- recommend releasing these examples in parallel under your choice of free
- software license, such as the GNU General Public License, to permit
- their use in free software.
- Tag Table:
- Node: Top736
- Node: Copying1443
- Node: Introduction to GNU MPC2215
- Node: Installing GNU MPC2934
- Node: Reporting Bugs8019
- Node: GNU MPC Basics9363
- Ref: return-value13040
- Node: Complex Functions14491
- Node: Initializing Complex Numbers15651
- Node: Assigning Complex Numbers18038
- Node: Converting Complex Numbers22438
- Node: String and Stream Input and Output23063
- Node: Complex Comparison29620
- Node: Projection & Decomposing30695
- Node: Basic Arithmetic32072
- Node: Power Functions and Logarithm36645
- Node: Trigonometric Functions38712
- Node: Miscellaneous Complex Functions40937
- Node: Advanced Functions43113
- Node: Internals44186
- Node: References44637
- Node: Concept Index45540
- Node: Function Index47854
- Node: GNU Free Documentation License61638
- End Tag Table
|