Computation of the Jones polynomial
This commit is contained in:
parent
4fdd08f1d1
commit
df8f02f3ca
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,5 +1,9 @@
|
||||
#*
|
||||
*~
|
||||
*.o
|
||||
GPATH
|
||||
GRTAGS
|
||||
GTAGS
|
||||
/kk
|
||||
/main
|
||||
/testsurfaces
|
||||
|
4
Makefile
4
Makefile
@ -4,9 +4,9 @@ devel = 1
|
||||
BISON = bison
|
||||
FLEX = flex
|
||||
|
||||
# CXX = g++
|
||||
CXX = g++ -std=c++11
|
||||
# CXX = OMPI_CXX=clang++ mpic++ -fno-color-diagnostics --stdlib=libc++ --std=c++11 -I/u/cseed/llvm-3.1/lib/c++/v1
|
||||
CXX = clang++ -fno-color-diagnostics --stdlib=libc++ --std=c++11
|
||||
#CXX = clang++ -fno-color-diagnostics --stdlib=libc++ --std=c++11
|
||||
|
||||
INCLUDES = -I. -I/opt/local/include
|
||||
|
||||
|
@ -155,7 +155,7 @@ class Z
|
||||
return mpz_divisible_p (num.impl->x, impl->x);
|
||||
}
|
||||
bool operator | (const Z &num) const { return divides (num); }
|
||||
|
||||
|
||||
Z divide_exact (const Z &denom) const
|
||||
{
|
||||
// num = *this
|
||||
|
55
kk.cpp
55
kk.cpp
@ -251,6 +251,37 @@ compute_gss ()
|
||||
tex_footer ();
|
||||
}
|
||||
|
||||
multivariate_laurentpoly<Q> compute_jones(const knot_diagram& k, bool reduced) {
|
||||
cube<Z2> c(kd, reduced);
|
||||
multivariate_laurentpoly<Q> jones;
|
||||
for(uint i = 1; i <= c.n_generators; ++i) {
|
||||
grading gr = c.compute_generator_grading(i);
|
||||
if(gr.h % 2 == 0) {
|
||||
jones += multivariate_laurentpoly<Q>(1, VARIABLE, 1, gr.q);
|
||||
}
|
||||
else {
|
||||
jones += multivariate_laurentpoly<Q>(-1, VARIABLE, 1, gr.q);
|
||||
}
|
||||
}
|
||||
return jones;
|
||||
}
|
||||
|
||||
void compute_khp(const knot_diagram& k, bool reduced) {
|
||||
cube<Z2> c(kd,reduced);
|
||||
ptr<const module<Z2> > C = c.khC;
|
||||
mod_map<Z2> d = c.compute_d(1, 0, 0, 0, 0);
|
||||
chain_complex_simplifier<Z2> s(C, d, maybe<int>(1), maybe<int>(0));
|
||||
C = s.new_C;
|
||||
d = s.new_d;
|
||||
C->show_self();
|
||||
//multivariate_laurentpoly<Q> khp;
|
||||
//for(uint i = 1; i <= c.n_generators; ++i) {
|
||||
// grading gr = c.compute_generator_grading(i);
|
||||
// khp += multivariate_laurentpoly<Q>(1, VARIABLE, gr.h, gr.q);
|
||||
//}
|
||||
printf("The Poincare polynomial \n");
|
||||
}
|
||||
|
||||
template<class R> void
|
||||
compute_invariant ()
|
||||
{
|
||||
@ -663,12 +694,12 @@ main (int argc, char **argv)
|
||||
|
||||
kd = parse_knot (knot);
|
||||
kd.marked_edge = 1;
|
||||
|
||||
if (!strcmp (invariant, "gauss"))
|
||||
{
|
||||
basedvector<basedvector<int, 1>, 1> gc = kd.as_gauss_code ();
|
||||
for (unsigned i = 1; i <= gc.size (); i ++)
|
||||
{
|
||||
|
||||
if (!strcmp (invariant, "gauss"))
|
||||
{
|
||||
basedvector<basedvector<int, 1>, 1> gc = kd.as_gauss_code ();
|
||||
for (unsigned i = 1; i <= gc.size (); i ++)
|
||||
{
|
||||
if (i > 1)
|
||||
printf (":");
|
||||
for (unsigned j = 1; j <= gc[i].size (); j ++)
|
||||
@ -701,6 +732,18 @@ main (int argc, char **argv)
|
||||
|
||||
compute_gss ();
|
||||
}
|
||||
else if(!strcmp(invariant, "jones")) {
|
||||
multivariate_laurentpoly<Q> jones_pol = compute_jones(kd, reduced);
|
||||
printf("Jones polynomial of %s is equal to:\n", knot);
|
||||
jones_pol.show_self();
|
||||
printf("\n");
|
||||
}
|
||||
else if(!strcmp(invariant, "przytycki_cong")) {
|
||||
multivariate_laurentpoly<Q> jones_pol = compute_jones(kd, reduced);
|
||||
}
|
||||
else if(!strcmp(invariant, "khp")) {
|
||||
compute_khp(kd, reduced);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!strcmp (field, "Z2"))
|
||||
|
@ -1,8 +1,6 @@
|
||||
|
||||
#include <knotkit.h>
|
||||
|
||||
#define HOME "/Users/josh/Documents/code/knotkit/"
|
||||
|
||||
bool verbose = 0;
|
||||
|
||||
static const struct {
|
||||
|
Loading…
Reference in New Issue
Block a user