Fixed a few bugs coming from the rebase of square to master:

initialize impl in set_wrapper, missing operator != on
linear_combination, some reader/writer problems related to writing
algebra.
This commit is contained in:
Cotton Seed 2012-07-28 13:48:17 -04:00
parent 5db000c6aa
commit 13ba6be775
7 changed files with 72 additions and 30 deletions

View File

@ -366,6 +366,7 @@ class linear_combination<Z2>
}
bool operator == (const linear_combination &lc) const { assert (m == lc.m); return v == lc.v; }
bool operator != (const linear_combination &lc) const { return !operator == (lc); }
bool operator == (int x) const { assert (x == 0); return v.is_empty (); }
bool operator != (int x) const { return !operator == (x); }

View File

@ -2,6 +2,17 @@
// #include <lib/lib.h>
#include <algebra/algebra.h>
writer::writer (bool raw_)
: raw(raw_),
aw(new algebra_writer)
{
}
writer::~writer ()
{
delete aw;
}
void
writer::write_int (int x)
{
@ -111,6 +122,17 @@ writer::write_mpz (const mpz_t x)
free (buf);
}
reader::reader (bool raw_)
: raw(raw_),
ar(new algebra_reader)
{
}
reader::~reader ()
{
delete ar;
}
int
reader::read_int ()
{

View File

@ -12,8 +12,8 @@ class writer
public:
writer (const writer &) = delete;
writer (bool raw_ = false) : raw(raw_), aw(0) { }
virtual ~writer () = default;
writer (bool raw_);
virtual ~writer ();
writer &operator = (const writer &) = delete;
@ -26,6 +26,8 @@ class writer
void write_unsigned (unsigned x);
void write_uint64 (uint64 x);
virtual void write_mpz (const mpz_t x);
template<class R> void write_mod (ptr<const module<R> > m);
};
@ -36,8 +38,8 @@ class reader
public:
reader (const reader &) = delete;
reader (bool raw_) : raw(raw_), ar(0) { }
virtual ~reader () = default;
reader (bool raw_);
virtual ~reader ();
reader &operator = (const reader &) = delete;
@ -67,6 +69,7 @@ class reader
int read_int ();
unsigned read_unsigned ();
uint64 read_uint64 ();
virtual void read_mpz (mpz_t x);
template<class R> ptr<const module<R> > read_mod ();

View File

@ -124,6 +124,7 @@ class set_wrapper_const_iter
template<class S, class T>
set_wrapper<S, T>::set_wrapper (reader &r)
: impl(new set_wrapper_impl)
{
unsigned n;
read (r, n);

View File

@ -269,7 +269,7 @@ load (map<knot_desc,
printf ("loading %s...\n", buf);
reader r (buf);
file_reader r (buf, 1);
map<knot_desc,
pair<mod_map<Z2>, mod_map<Z2> > > m (r);
for (map<knot_desc,
@ -591,6 +591,41 @@ main ()
// test_sage_show ();
dump_sage ();
#if 0
knot_diagram kd (rolfsen_knot (8, 19));
show (kd); newline ();
cube<Z2> c (kd);
mod_map<Z2> d = c.compute_d (1, 0, 0, 0, 0);
chain_complex_simplifier<Z2> s (c.khC, d, 1);
steenrod_square sq (c, d, s);
mod_map<Z2> sq1 = sq.sq1 ();
mod_map<Z2> sq2 = sq.sq2 ();
assert (sq1.compose (sq1) == 0);
assert (sq2.compose (sq2) + sq1.compose (sq2).compose (sq1) == 0);
display ("sq1:\n", sq1);
display ("sq2:\n", sq2);
{
file_writer w ("sqtest.dat");
write (w, sq1);
write (w, sq2);
}
{
file_reader r ("sqtest.dat");
mod_map<Z2> sq1p (r);
mod_map<Z2> sq2p (r);
display ("sq1p:\n", sq1p);
display ("sq2p:\n", sq2p);
}
#endif
#if 0
knot_diagram kd (mt_link (10, 0, 9));
cube<Z2> c (kd);
@ -728,7 +763,7 @@ main ()
printf ("|knot_kh_sq| = %d\n", knot_kh_sq.card ());
#if 1
#if 0
map<pair<multivariate_laurentpoly<Z>,
map<grading, unsigned> >,
pair<knot_desc,
@ -981,30 +1016,6 @@ main ()
#endif
#endif
#if 0
knot_diagram kd (rolfsen_knot (5, 2));
show (kd); newline ();
cube<Z2> c (kd);
mod_map<Z2> d = c.compute_d (1, 0, 0, 0, 0);
chain_complex_simplifier<Z2> s (c.khC, d, 1);
steenrod_square sq (c, d, s);
mod_map<Z2> sq1 = sq.sq1 ();
mod_map<Z2> sq2 = sq.sq2 ();
assert (sq1.compose (sq1) == 0);
assert (sq2.compose (sq2) + sq1.compose (sq2).compose (sq1) == 0);
display ("sq1:\n", sq1);
display ("sq2:\n", sq2);
writer w ("sqtest.dat");
write (w, sq1);
write (w, sq2);
#endif
#if 0
#if 0
reader r ("sqtest.dat");
@ -1165,6 +1176,7 @@ main ()
assert (sq1.compose (sq1) == 0);
assert (sq2.compose (sq2) + sq1.compose (sq2).compose (sq1) == 0);
}
#endif
#if 0
typedef Z2 R;

2
sseq.h
View File

@ -106,6 +106,7 @@ class sseq
void texshow (FILE *fp, std::string name);
};
#if 0
template<class R> class simplified_complex_generators
{
unsigned new_n;
@ -376,6 +377,7 @@ chain_complex_simplifier<R>::chain_complex_simplifier (ptr<const module<R> > C_,
#endif
}
}
#endif
class sseq_builder
{

View File

@ -40,6 +40,7 @@ general:
(e.g. knot_diagram, resolution_diagram, etc.) -- this is the right
semantics.
- clean up/delete setcommon, mapcommon
- incorporate sage dump into standard classes
c++11:
- make vector wrap std::vector (probably faster)