MPSolve  3.2.1
mps.h
Go to the documentation of this file.
1 /*
2  * This file is part of MPSolve 3.2.1
3  *
4  * Copyright (C) 2001-2020, Dipartimento di Matematica "L. Tonelli", Pisa.
5  * License: http://www.gnu.org/licenses/gpl.html GPL version 3 or higher
6  *
7  * Authors:
8  * Leonardo Robol <leonardo.robol@unipi.it>
9  */
10 
21 #ifdef HAVE_CONFIG_H
22 #include <config.h>
23 #endif
24 
25 #ifndef MPS_CORE_H_
26 #define MPS_CORE_H_
27 
28 #ifdef __cplusplus
29 #define __MPS_NOT_DEFINE_BOOL
30 #endif
31 
32 #ifdef __MPS_MATLAB_MODE
33 #define __MPS_NOT_DEFINE_BOOL
34 #endif
35 
36 #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
37  #ifdef MPS_PUBLISH_PRIVATE_METHODS
38  #define MPS_PRIVATE
39  #else
40  #define MPS_PRIVATE __attribute__((visibility ("hidden")))
41  #endif
42 #else
43  #define MPS_PRIVATE
44 #endif
45 
46 #ifdef __cplusplus
47  #define MPS_BEGIN_DECLS extern "C" {
48  #define MPS_END_DECLS }
49 #else
50  #define MPS_BEGIN_DECLS
51  #define MPS_END_DECLS
52 #endif
53 
54 #ifdef HAVE_CONFIG_H
55 #include <config.h>
56 #endif
57 
58 /* This header should be included first since it contains all the forward
59  * declaration that must be available in the others. */
60 #include <mps/types.h>
61 
62 /* Include more types that are needed in the declarations of the generic
63  * functions, such as DPE and MP. */
64 #include <mps/mt.h>
65 #include <mps/gmptools.h>
66 #include <mps/mpc.h>
67 #include <mps/link.h>
68 #include <mps/polynomial.h>
69 
70 /* Public types, mostly custom polynomial types such as Chebyshev, Monomial and
71  * Secular equations. */
72 #include <mps/matrix.h>
73 #include <mps/chebyshev.h>
75 #include <mps/monomial-poly.h>
76 #include <mps/secular-equation.h>
77 #include <mps/nroots-polynomial.h>
79 
80 /* Public interface functions for MPSolve */
81 #include <mps/approximation.h>
82 #include <mps/context.h>
83 #include <mps/debug.h>
84 #include <mps/interface.h>
85 #include <mps/parser.h>
86 #include <mps/version.h>
87 
88 /* Private inclusions. Please note that these header files may not be distributed with
89  * MPSolve, so it's safe to use them only for internal functions. */
90 #ifdef _MPS_PRIVATE
91 
92 #ifndef getline
93 MPS_BEGIN_DECLS
94 ssize_t getline (char **lineptr, size_t *n, FILE *stream);
95 MPS_END_DECLS
96 #endif
100 #include <mps/private/aberth.h>
101 #include <mps/private/algorithms.h>
102 #include <mps/private/cluster.h>
103 #include <mps/private/convex.h>
104 #include <mps/private/data.h>
106 #include <mps/private/horner.h>
108 #include <mps/private/improve.h>
111 #include <mps/private/list.h>
113 #include <mps/private/newton.h>
114 #include <mps/private/options.h>
115 #include <mps/private/radii.h>
117 #include <mps/private/solve.h>
118 #include <mps/private/sort.h>
119 #include <mps/private/starting.h>
121 #include <mps/private/threading.h>
122 #include <mps/private/tools.h>
123 #include <mps/private/touch.h>
124 #include <mps/private/utils.h>
128 #endif
129 
130 #endif /* ndef MPSCORE_H */
mandelbrot-user.h
starting-configuration.h
formal-polynomial.h
Implementation in C++ of arithmetic between formal polynomials with rational coefficients.
cluster.h
Data structures for cluster analysis and some accessors and internal functions.
algorithms.h
This file contains the entry points of the various algorithms implemented in MPSolve.
monomial-matrix-poly.h
Implementation of the monomial version of the matrix polynomial.
approximation.h
Representation of a single approximation.
hessenberg-determinant.h
Implementation of determinant computation for Hessenberg matrices.
jacobi-aberth.h
Implementation of the iterations using Jacobi-style updates.
improve.h
Refining of isolated approximations by means of Newton method.
horner.h
Horner implementation for Monomial polynomials.
formal-monomial.h
Implementation in C++ of arithmetic between formal polynomials with rational coefficients.
abstract-input-stream.h
Abstract input stream used to parse files.
options.h
Implementation of option parsing for MPSolve.
input-output.h
Generic input-output functions inside MPSolve.
monomial-poly.h
Implementation of the allocation and edit functions for the handling of monomial polynomials.
radii.h
Implementation of radius computation.
input-buffer.h
Implementation of a buffer for parsing input file for MPSolve.
file-input-stream.h
starting.h
Selection of starting points and shifting of the polynomials to zoom in the clusters.
solve.h
General routines ported from MPSolve 2.2.
memory-file-stream.h
Implementation of a fmemopen-like stream.
mpc.h
Multiprecision complex type, based on mpf multiprecision floating point type.
touch.h
Routines that check the emptyness of the intersection of several sets.
interface.h
Simple routines used to interact with MPSolve without going into the internals.
convex.h
Implementation of the convex hull computation.
newton.h
Implementation of Newton correction computation.
sort.h
Implementation of sorting routines for MPSolve.
threading.h
Multithreading iterations for MPSolve.
parser.h
Generic parsers for common polynomial types.
aberth.h
Implementation of Aberth correction computation.
mt.h
Library with extended types in C.
data.h
Implementation of the routines that handle the management of data inside mps_context objects.
secular-regeneration.h
context.h
This file contains the definition of mps_context and most of its fields.
secular-evaluation.h
Evaluation of secular equations.
secular-equation.h
Header file for secular-related routines.
tools.h
Header containing various tools used to interact with the system.
list.h
Custom implementation of list inside MPSolve.
gmptools.h
Additional functions used to complete the GMP package with what is needed in MPSolve.
nroots-polynomial.h
regeneration-driver.h
debug.h
Debugging functions, that honor the status os s->DOLOG and autodetect if the output stream is or not ...