File: sage.cpp

package info (click to toggle)
gfan 0.5%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 8,348 kB
  • ctags: 5,683
  • sloc: cpp: 39,675; makefile: 454; sh: 1
file content (56 lines) | stat: -rw-r--r-- 1,661 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "primarydecomposition.h"
#include "python2.6/Python.h"

extern "C" void minimal_associated_primes(PolynomialSetList *l, PolynomialRing const *r, PolynomialSet const *g);

#include <iostream>

class SageSingularPrimDec : public PrimaryDecompositionEngine
{
 public:
	 SageSingularPrimDec() : PrimaryDecompositionEngine()
	 {
		 cerr<<"constructing SageSingularPrimDec"<<endl;
		 if (!Py_IsInitialized()) {
			 Py_Initialize();
	   char* argv = {"gfan_python"};
	         PySys_SetArgv(1, &argv); // Sage needs argc, argv set for some reason

	         //Py_SetPythonHome("/home/burcin/sage/sage-4.3.2/local");
	         PyRun_SimpleString("import sys");
	         //PyRun_SimpleString("print sys.path");
	         PyRun_SimpleString("sys.path.append('/home/burcin/sage/sage-4.3.2/local/lib/python2.6/lib-dynload/')");
	         //PyRun_SimpleString("print sys.path");
	         cout<<"initialized python"<<endl;

	         PyRun_SimpleString("import sage.all");

	         PyObject* sage_module = PyImport_ImportModule("sage_link");
	         }
	 }
	 ~SageSingularPrimDec()
	 {
		 Py_Finalize();
			 }
  virtual const char *name()
  {
	  return "sagesingular";
  }
  virtual PolynomialSetList minimalAssociatedPrimes(PolynomialSet const &idealGenerators)
  {
//	  ring r=singularRing(idealGenerators.getRing());
//	  ideal singularPolynomialSet(idealGenerators);

	  cerr<<"CALLING SINGULAR THROUGH SAGE"<<endl;
	  PolynomialSetList ret;


	  PolynomialRing r=idealGenerators.getRing();
	  minimal_associated_primes(&ret,&r,&idealGenerators);
	  cerr<<"RETURNiNG FROM SAGE"<<endl;

	  return ret;
  }
};

static SageSingularPrimDec sageSingularPrimDec;