DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
testMPolynomialReader.cpp
Go to the documentation of this file.
1
16
29
31
#include <iostream>
32
#include <iomanip>
33
#include <sstream>
34
#include "DGtal/base/Common.h"
35
#include "DGtal/math/MPolynomial.h"
36
#include "DGtal/io/readers/MPolynomialReader.h"
38
39
using namespace
std
;
40
using namespace
DGtal
;
41
43
// Functions for testing class MPolynomialReader.
45
46
bool
testMPolynomialReader
()
47
{
48
49
MPolynomial<2,double,std::allocator<double>
> Q1;
50
MPolynomial<2,double,std::allocator<double>
> Q2;
51
MPolynomial<2,double,std::allocator<double>
> Q = Q1 * Q2;
52
53
typedef
int
Ring
;
54
MPolynomial<3,Ring,std::allocator<Ring>
> P;
55
MPolynomialReader<3,Ring>
reader;
56
string
s1 =
"1.5 X_0^2 X_2^3 X_1^5 * (4 X_0^3 + X_1^2)^2"
;
57
//string s1 = "1.5 X_0^2 X_2^3 X_1^5";
58
string
s2 =
"2 X_0^2 X_2 X_1^5"
;
59
string
s3 = s1 +
" * "
+ s2;
60
string
s4 =
"("
+ s2 +
")^4 * ("
+ s1 +
")^1 - 3 X_2^3"
;
61
string
s5 =
"x^3y+xz^3+y^3z+z^3+5z"
;
// Durchblick
62
string
s6 =
"(y^2+z^2-1)^2 +(x^2+y^2-1)^3"
;
// Crixxi
63
string
s7 =
"(y^2+z^2-1)^2 Abrahamovitch"
;
64
bool
ok1 = reader.
read
( P, s1.begin(), s1.end() ) == s1.end();
65
trace
.
info
() <<
"- Parsing "
<< s1 <<
" : "
<< ok1 <<
" "
<< P << std::endl;
66
bool
ok2 = reader.
read
( P, s2.begin(), s2.end() ) == s2.end();
67
trace
.
info
() <<
"- Parsing "
<< s2 <<
" : "
<< ok2 <<
" "
<< P << std::endl;
68
bool
ok3 = reader.
read
( P, s3.begin(), s3.end() ) == s3.end();
69
trace
.
info
() <<
"- Parsing "
<< s3 <<
" : "
<< ok3 <<
" "
<< P << std::endl;
70
bool
ok4 = reader.
read
( P, s4.begin(), s4.end() ) == s4.end();
71
trace
.
info
() <<
"- Parsing "
<< s4 <<
" : "
<< ok4 <<
" "
<< P << std::endl;
72
bool
ok5 = reader.
read
( P, s5.begin(), s5.end() ) == s5.end();
73
trace
.
info
() <<
"- Parsing "
<< s5 <<
" : "
<< ok5 <<
" "
<< P << std::endl;
74
bool
ok6 = reader.
read
( P, s6.begin(), s6.end() ) == s6.end();
75
trace
.
info
() <<
"- Parsing "
<< s6 <<
" : "
<< ok6 <<
" "
<< P << std::endl;
76
bool
ok7 = reader.
read
( P, s7.begin(), s7.end() ) == s7.end();
77
trace
.
info
() <<
"- Parsing "
<< s7 <<
" : "
<< ok7 <<
" "
<< P << std::endl;
78
79
string
s8 =
"(zyx^2+x^2-1)^2 + xy AVERTY"
;
80
std::istringstream sin( s8 );
81
std::string other;
82
sin >> P >> other;
83
trace
.
info
() <<
"- Read "
<< P <<
" and "
<< other << std::endl;
84
85
return
ok1 && ok2 && ok3 && ok4 && ok5 && ok6 && (!ok7);
86
}
87
88
bool
testMPolynomialReader2
()
89
{
90
91
typedef
double
Ring
;
92
MPolynomial<3,Ring,std::allocator<Ring>
> P1, P2, Q1, Q2, Q3, Q4;
93
MPolynomialReader<3,Ring>
reader;
94
string
s1 =
" x^4"
;
95
string
s2 =
"1*y^4"
;
96
string
s3 = s1 +
"+"
+ s2 +
"-2"
;
97
string
s4 =
"("
+ s1 +
")+("
+ s2 +
")-2"
;
98
string
s5 =
"("
+ s1 +
")+ "
+ s2 +
" -2"
;
99
bool
ok1 = reader.
read
( P1, s1.begin(), s1.end() ) == s1.end();
100
bool
ok2 = reader.
read
( P2, s2.begin(), s2.end() ) == s2.end();
101
Q1 = P1 + P2 - 2;
102
bool
ok3 = reader.
read
( Q2, s3.begin(), s3.end() ) == s3.end();
103
bool
ok4 = reader.
read
( Q3, s4.begin(), s4.end() ) == s4.end();
104
bool
ok4b= reader.
read
( Q4, s5.begin(), s5.end() ) == s5.end();
105
106
trace
.
info
() <<
"- Read Q1="
<< Q1 <<
" from addition of monomials. "
<< std::endl;
107
trace
.
info
() <<
"- Read Q2="
<< Q2 <<
" from string: "
<< s3 << std::endl;
108
trace
.
info
() <<
"- Read Q3="
<< Q3 <<
" from string: "
<< s4 << std::endl;
109
trace
.
info
() <<
"- Read Q4="
<< Q4 <<
" from string: "
<< s5 << std::endl;
110
bool
ok5 = Q1 == Q2;
111
bool
ok6 = Q1 == Q3;
112
return
ok1 && ok2 && ok3 && ok4 && ok5 && ok6 && ok4b;
113
}
114
115
// Standard services - public :
116
117
int
main
(
int
/*argc*/
,
char
**
/*argv*/
)
118
{
119
trace
.
beginBlock
(
"Testing class MPolynomialReader"
);
120
121
bool
res =
testMPolynomialReader
()
122
&&
testMPolynomialReader2
();
123
trace
.
emphase
() << ( res ?
"Passed."
:
"Error."
) << endl;
124
trace
.
endBlock
();
125
return
res ? 0 : 1;
126
}
127
// //
DGtal::MPolynomialReader
Aim: This class converts a string polynomial expression in a multivariate polynomial.
Definition
MPolynomialReader.h:259
DGtal::MPolynomialReader::read
Iterator read(Polynomial &p, Iterator begin, Iterator end)
Definition
MPolynomialReader.h:284
DGtal::MPolynomial
Aim: Represents a multivariate polynomial, i.e. an element of , where K is some ring or field.
Definition
MPolynomial.h:970
DGtal::Trace::beginBlock
void beginBlock(const std::string &keyword="")
DGtal::Trace::emphase
std::ostream & emphase()
DGtal::Trace::info
std::ostream & info()
DGtal::Trace::endBlock
double endBlock()
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::trace
Trace trace
std
STL namespace.
main
int main(int, char **)
Definition
testIntegerComputer.cpp:331
testMPolynomialReader
bool testMPolynomialReader()
Definition
testMPolynomialReader.cpp:46
testMPolynomialReader2
bool testMPolynomialReader2()
Definition
testMPolynomialReader.cpp:88
Ring
RealPointT::Coordinate Ring
Definition
testPolynomial.cpp:69
tests
io
readers
testMPolynomialReader.cpp
Generated on
for DGtal by
1.18.0