| Ramón Casero Cañas on Mon, 13 Jan 2003 13:08:46 +0100 (MET) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| is this the right list for this question? |
I do not know whether this is the right list for a question regarding some
C++ code I'm writting based on PARI functions (maybe I should write to the
users list). It's basic code, actually; at present, just input a (bool **) and
copy it to a PARI matrix. I get a segmentation fault at the outbeaut()
function:
----------------------------------------------------------------
inverse_mat_mod2: size = 32
Matrix? a = 1078694052
[ *** segmentation fault: bug in PARI or calling program.
*** Error in the PARI system. End of program.
----------------------------------------------------------------
bool inverse_mat_mod2(bool **_a, unsigned _size, bool _CHECK) {
long paristacksize = 500000;
GEN a; // temp matrix by columns
unsigned i, j; // counter
unsigned sizepari = _size + 1;
GEN v; // auxiliay pointer for columns
GEN z; // auxiliary element of the matrix
if (sizeof(long) * _size * _size > (unsigned)paristacksize) {
paristacksize = sizeof(long) * _size * _size * 2; // this's a guess of
mine w/o any base
}
pari_init(paristacksize, 2); // init PARI stack
/* allocate memory for the temp matrix
* note: remember that PARI matrices of mxn need (m+1)x(n+1), and
* that elements go a[1], a[2], ..., as a[0] is for type
* information */
std::cout << "inverse_mat_mod2: size = " << _size << std::endl;
a = cgetg(sizepari, t_MAT); // `a' has _size columns
if (!a) err(talker, "inverse_mat_mod2: memory!\n");
for (i = 1; i < sizepari; ++i) { // alloc `a' columns
a[i] = lgetg(sizepari, t_COL);
if (!a[i]) err(talker, "inverse_mat_mod2: memory!\n");
}
for (i = 1; i < sizepari; ++i) { // alloc space for elements
for (j = 1; j < sizepari; ++j) {
z = gcoeff(a, i, j);
z = cgetg(3, t_INTMOD);
z[1] = (long)2;
z[2] = (long)1;
}
}
std::cout << "Matrix? a = " << (int)a << std::endl;
outbeaut(a);
return true;
}
--
+++ GMX - Mail, Messaging & more http://www.gmx.net +++
NEU: Mit GMX ins Internet. Rund um die Uhr für 1 ct/ Min. surfen!