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:
parent
5db000c6aa
commit
13ba6be775
@ -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 { 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 { assert (x == 0); return v.is_empty (); }
|
||||||
bool operator != (int x) const { return !operator == (x); }
|
bool operator != (int x) const { return !operator == (x); }
|
||||||
|
22
lib/io.cpp
22
lib/io.cpp
@ -2,6 +2,17 @@
|
|||||||
// #include <lib/lib.h>
|
// #include <lib/lib.h>
|
||||||
#include <algebra/algebra.h>
|
#include <algebra/algebra.h>
|
||||||
|
|
||||||
|
writer::writer (bool raw_)
|
||||||
|
: raw(raw_),
|
||||||
|
aw(new algebra_writer)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
writer::~writer ()
|
||||||
|
{
|
||||||
|
delete aw;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
writer::write_int (int x)
|
writer::write_int (int x)
|
||||||
{
|
{
|
||||||
@ -111,6 +122,17 @@ writer::write_mpz (const mpz_t x)
|
|||||||
free (buf);
|
free (buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reader::reader (bool raw_)
|
||||||
|
: raw(raw_),
|
||||||
|
ar(new algebra_reader)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
reader::~reader ()
|
||||||
|
{
|
||||||
|
delete ar;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
reader::read_int ()
|
reader::read_int ()
|
||||||
{
|
{
|
||||||
|
11
lib/io.h
11
lib/io.h
@ -12,8 +12,8 @@ class writer
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
writer (const writer &) = delete;
|
writer (const writer &) = delete;
|
||||||
writer (bool raw_ = false) : raw(raw_), aw(0) { }
|
writer (bool raw_);
|
||||||
virtual ~writer () = default;
|
virtual ~writer ();
|
||||||
|
|
||||||
writer &operator = (const writer &) = delete;
|
writer &operator = (const writer &) = delete;
|
||||||
|
|
||||||
@ -26,6 +26,8 @@ class writer
|
|||||||
void write_unsigned (unsigned x);
|
void write_unsigned (unsigned x);
|
||||||
void write_uint64 (uint64 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);
|
template<class R> void write_mod (ptr<const module<R> > m);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -36,8 +38,8 @@ class reader
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
reader (const reader &) = delete;
|
reader (const reader &) = delete;
|
||||||
reader (bool raw_) : raw(raw_), ar(0) { }
|
reader (bool raw_);
|
||||||
virtual ~reader () = default;
|
virtual ~reader ();
|
||||||
|
|
||||||
reader &operator = (const reader &) = delete;
|
reader &operator = (const reader &) = delete;
|
||||||
|
|
||||||
@ -67,6 +69,7 @@ class reader
|
|||||||
int read_int ();
|
int read_int ();
|
||||||
unsigned read_unsigned ();
|
unsigned read_unsigned ();
|
||||||
uint64 read_uint64 ();
|
uint64 read_uint64 ();
|
||||||
|
|
||||||
virtual void read_mpz (mpz_t x);
|
virtual void read_mpz (mpz_t x);
|
||||||
|
|
||||||
template<class R> ptr<const module<R> > read_mod ();
|
template<class R> ptr<const module<R> > read_mod ();
|
||||||
|
@ -124,6 +124,7 @@ class set_wrapper_const_iter
|
|||||||
|
|
||||||
template<class S, class T>
|
template<class S, class T>
|
||||||
set_wrapper<S, T>::set_wrapper (reader &r)
|
set_wrapper<S, T>::set_wrapper (reader &r)
|
||||||
|
: impl(new set_wrapper_impl)
|
||||||
{
|
{
|
||||||
unsigned n;
|
unsigned n;
|
||||||
read (r, n);
|
read (r, n);
|
||||||
|
64
main.cpp
64
main.cpp
@ -269,7 +269,7 @@ load (map<knot_desc,
|
|||||||
|
|
||||||
printf ("loading %s...\n", buf);
|
printf ("loading %s...\n", buf);
|
||||||
|
|
||||||
reader r (buf);
|
file_reader r (buf, 1);
|
||||||
map<knot_desc,
|
map<knot_desc,
|
||||||
pair<mod_map<Z2>, mod_map<Z2> > > m (r);
|
pair<mod_map<Z2>, mod_map<Z2> > > m (r);
|
||||||
for (map<knot_desc,
|
for (map<knot_desc,
|
||||||
@ -591,6 +591,41 @@ main ()
|
|||||||
// test_sage_show ();
|
// test_sage_show ();
|
||||||
dump_sage ();
|
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
|
#if 0
|
||||||
knot_diagram kd (mt_link (10, 0, 9));
|
knot_diagram kd (mt_link (10, 0, 9));
|
||||||
cube<Z2> c (kd);
|
cube<Z2> c (kd);
|
||||||
@ -728,7 +763,7 @@ main ()
|
|||||||
|
|
||||||
printf ("|knot_kh_sq| = %d\n", knot_kh_sq.card ());
|
printf ("|knot_kh_sq| = %d\n", knot_kh_sq.card ());
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
map<pair<multivariate_laurentpoly<Z>,
|
map<pair<multivariate_laurentpoly<Z>,
|
||||||
map<grading, unsigned> >,
|
map<grading, unsigned> >,
|
||||||
pair<knot_desc,
|
pair<knot_desc,
|
||||||
@ -981,30 +1016,6 @@ main ()
|
|||||||
#endif
|
#endif
|
||||||
#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
|
||||||
#if 0
|
#if 0
|
||||||
reader r ("sqtest.dat");
|
reader r ("sqtest.dat");
|
||||||
@ -1165,6 +1176,7 @@ main ()
|
|||||||
assert (sq1.compose (sq1) == 0);
|
assert (sq1.compose (sq1) == 0);
|
||||||
assert (sq2.compose (sq2) + sq1.compose (sq2).compose (sq1) == 0);
|
assert (sq2.compose (sq2) + sq1.compose (sq2).compose (sq1) == 0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
typedef Z2 R;
|
typedef Z2 R;
|
||||||
|
2
sseq.h
2
sseq.h
@ -106,6 +106,7 @@ class sseq
|
|||||||
void texshow (FILE *fp, std::string name);
|
void texshow (FILE *fp, std::string name);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if 0
|
||||||
template<class R> class simplified_complex_generators
|
template<class R> class simplified_complex_generators
|
||||||
{
|
{
|
||||||
unsigned new_n;
|
unsigned new_n;
|
||||||
@ -376,6 +377,7 @@ chain_complex_simplifier<R>::chain_complex_simplifier (ptr<const module<R> > C_,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
class sseq_builder
|
class sseq_builder
|
||||||
{
|
{
|
||||||
|
1
todo.txt
1
todo.txt
@ -40,6 +40,7 @@ general:
|
|||||||
(e.g. knot_diagram, resolution_diagram, etc.) -- this is the right
|
(e.g. knot_diagram, resolution_diagram, etc.) -- this is the right
|
||||||
semantics.
|
semantics.
|
||||||
- clean up/delete setcommon, mapcommon
|
- clean up/delete setcommon, mapcommon
|
||||||
|
- incorporate sage dump into standard classes
|
||||||
|
|
||||||
c++11:
|
c++11:
|
||||||
- make vector wrap std::vector (probably faster)
|
- make vector wrap std::vector (probably faster)
|
||||||
|
Loading…
Reference in New Issue
Block a user