Frobby  0.9.5
LibHilbertPoincareTest.cpp
Go to the documentation of this file.
1 /* Frobby: Software for monomial ideal computations.
2  Copyright (C) 2007 Bjarke Hammersholt Roune (www.broune.com)
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see http://www.gnu.org/licenses/.
16 */
17 #include "stdinc.h"
18 
19 #include "frobby.h"
20 #include "tests.h"
21 #include "BigIdeal.h"
22 #include "BigPolynomial.h"
23 #include "IdealFactory.h"
24 #include "PolynomialFactory.h"
25 #include "LibTest.h"
26 
27 TEST_SUITE2(LibraryInterface, HilbertPoincare)
28 
29 TEST(HilbertPoincare, TypicalMultigraded) {
32 
34 
36 }
37 
38 TEST(HilbertPoincare, TypicalUnivariate) {
41  LibPolynomialConsumer consumer(output.getNames());
42 
44 
45  ASSERT_EQ(consumer.getPolynomial(), output);
46 }
47 
48 TEST(HilbertPoincare, ZeroIdealMultigraded) {
49  for (size_t varCount = 0; varCount <= 3; ++varCount) {
50  Frobby::Ideal ideal(varCount);
51  LibPolynomialConsumer consumer((VarNames(varCount)));
52 
54 
55  ASSERT_EQ(consumer.getPolynomial(), PolynomialFactory::one(varCount));
56  }
57 }
58 
59 TEST(HilbertPoincare, ZeroIdealUnivariate) {
60  for (size_t varCount = 0; varCount <= 3; ++varCount) {
61  Frobby::Ideal ideal(varCount);
62  LibPolynomialConsumer consumer((VarNames(1)));
63 
65 
67  }
68 }
69 
70 TEST(HilbertPoincare, WholeRingMultigraded) {
71  for (size_t varCount = 0; varCount <= 3; ++varCount) {
73  LibPolynomialConsumer consumer((VarNames(varCount)));
74 
76 
77  ASSERT_EQ(consumer.getPolynomial(), PolynomialFactory::zero(varCount));
78  }
79 }
80 
81 TEST(HilbertPoincare, WholeRingUnivariate) {
82  for (size_t varCount = 0; varCount <= 3; ++varCount) {
84  LibPolynomialConsumer consumer((VarNames(1)));
85 
87 
89  }
90 }
TEST(HilbertPoincare, TypicalMultigraded)
Frobby::Ideal toLibIdeal(const BigIdeal &ideal)
Returns a library interface ideal that corresponds to the parameter ideal.
Definition: LibTest.cpp:26
#define ASSERT_EQ(A, B)
Definition: asserts.h:147
const VarNames & getNames() const
static BigIdeal xx_yy_xz_yz()
Returns .
static VarNames ring_xyzt()
Returns the ring in the four variables , , and .
static BigIdeal wholeRing(size_t varCount)
Returns in the ring VarNames(varCount).
Records library interface output into a BigPolynomial.
Definition: LibTest.h:74
const BigPolynomial & getPolynomial() const
Returns the recorded polynomial in a canonical form.
Definition: LibTest.cpp:113
static BigPolynomial one(size_t varCount)
Returns the polynomial 1 in the ring VarNames(varCount).
static BigPolynomial one_minus4tt_3ttt_tttt_minusttttt()
Returns the polynomial 1 - 4t^2 + 3t^3 + t^4 - t^5.
static BigPolynomial zero(size_t varCount)
Return the zero polynomial in the ring VarNames(varCount).
static BigPolynomial hilbert_xx_yy_xz_yz()
Returns the multigraded Hilbert-Poincare series numerator of the ideal <x^2, y^2, xz,...
Defines the variables of a polynomial ring and facilities IO involving them.
Definition: VarNames.h:40
#define TEST_SUITE2(PARENT, SUITE)
Definition: macroes.h:28
void univariateHilbertPoincareSeries(const Ideal &ideal, PolynomialConsumer &consumer)
Compute the univariate Hilbert-Poincare series of ideal.
Definition: frobby.cpp:311
void multigradedHilbertPoincareSeries(const Ideal &ideal, PolynomialConsumer &consumer)
Compute the multigraded Hilbert-Poincare series of ideal.
Definition: frobby.cpp:299