MPSolve 3.2.1
Loading...
Searching...
No Matches
formal-polynomial.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 <robol@mail.dm.unipi.it>
9 */
10
20#ifndef MPS_FORMAL_POLYNOMIAL_H_
21#define MPS_FORMAL_POLYNOMIAL_H_
22
23MPS_BEGIN_DECLS
24
25struct mps_formal_polynomial;
26
27typedef struct mps_formal_polynomial mps_formal_polynomial;
28
29mps_formal_polynomial * mps_formal_polynomial_new_with_monomial (mps_formal_monomial *);
30
31mps_formal_polynomial * mps_formal_polynomial_sum_eq (mps_formal_polynomial * p,
32 mps_formal_monomial * m);
33
34mps_formal_polynomial * mps_formal_polynomial_sub_eq (mps_formal_polynomial * p,
35 mps_formal_monomial * m);
36
37mps_formal_polynomial * mps_formal_polynomial_sum_eq_p (mps_formal_polynomial * p,
38 mps_formal_polynomial * m);
39
40mps_formal_polynomial * mps_formal_polynomial_sub_eq_p (mps_formal_polynomial * p,
41 mps_formal_polynomial * m);
42
43mps_monomial_poly * mps_formal_polynomial_create_monomial_poly (mps_formal_polynomial * p,
44 mps_context * ctx);
45
46mps_formal_polynomial * mps_formal_polynomial_mul (mps_formal_polynomial * p,
47 mps_formal_polynomial * q);
48
49mps_formal_polynomial * mps_formal_polynomial_mul_eq (mps_formal_polynomial * p,
50 mps_formal_polynomial * q);
51
52void mps_formal_polynomial_print (mps_formal_polynomial * p);
53
54void mps_formal_polynomial_free (mps_formal_polynomial * p);
55
56MPS_END_DECLS
57
58#ifdef __cplusplus
59
60#include <vector>
61#include <stdexcept>
62#include <iostream>
63
64namespace mps {
65 namespace formal {
66
67 class Polynomial {
68 public:
69
73 Polynomial();
74
79
83 Polynomial(const Polynomial& rhs);
84
88 const Monomial operator[] (const int degree) const;
89
94
98 Polynomial operator+(const Monomial& m) const;
99
104
108 Polynomial operator+(const Polynomial& p) const;
109
114
118 Polynomial operator-(const Polynomial& p) const;
119
123 Polynomial& operator-=(const Monomial& m);
124
128 Polynomial operator-(const Monomial& m) const;
129
133 Polynomial& operator*=(const Polynomial& other);
134
138 Polynomial operator*(const Polynomial& other) const;
139
140 ~Polynomial();
141
146 long degree() const;
147
152
153 private:
154 std::vector<Monomial> mMonomials;
155 };
156
157 Polynomial operator+(Monomial a, Monomial b);
158
159 std::ostream& operator<<(std::ostream& os, const Polynomial& p);
160
161 }
162}
163
164#endif /* ifdef __cplusplus */
165
166#endif /* MPS_FORMAL_POLYNOMIAL_H_ */
167
Definition: formal-monomial.h:60
Definition: formal-polynomial.h:67
Polynomial operator+(const Monomial &m) const
Sum two Monomials.
Definition: formal-polynomial.cpp:174
long degree() const
Returns the degree of this polynomial. Empty polynomials have -1 degree.
Definition: formal-polynomial.cpp:250
Polynomial & operator*=(const Polynomial &other)
Multiply two polynomials together.
Definition: formal-polynomial.cpp:214
const Monomial operator[](const int degree) const
Access a Monomial inside the Polynomial.
Definition: formal-polynomial.cpp:114
Polynomial & operator-=(const Polynomial &p)
Subtract a new Polynomial from an existing Polynomial.
Definition: formal-polynomial.cpp:198
Polynomial operator*(const Polynomial &other) const
Multiply two polynomials together.
Definition: formal-polynomial.cpp:228
Polynomial & operator+=(const Monomial &m)
Add a new Monomial in an existing Polynomial.
Definition: formal-polynomial.cpp:141
Polynomial()
Create a default empty Polynomial.
Definition: formal-polynomial.cpp:92
Polynomial operator-(const Polynomial &p) const
Subtract two Polynomials.
Definition: formal-polynomial.cpp:206
mps_monomial_poly * createMonomialPoly(mps_context *ctx) const
Create a representation of this polynomial as a mps_monomial_poly.
Definition: formal-polynomial.cpp:302
this struct holds the state of the mps computation
Definition: context.h:55
Data regarding a polynomial represented in the monomial base.
Definition: monomial-poly.h:44