Public Member Functions | Private Member Functions | Private Attributes
sparse_number_mat Class Reference

Public Member Functions

 sparse_number_mat (ideal, const ring)
 
 ~sparse_number_mat ()
 
int smIsSing ()
 
void smTriangular ()
 
void smSolv ()
 
ideal smRes2Ideal ()
 

Private Member Functions

void smColToRow ()
 
void smRowToCol ()
 
void smSelectPR ()
 
void smRealPivot ()
 
void smZeroToredElim ()
 
void smGElim ()
 
void smAllDel ()
 

Private Attributes

int nrows
 
int ncols
 
int act
 
int crd
 
int tored
 
int sing
 
int rpiv
 
int * perm
 
number * sol
 
int * wrw
 
int * wcl
 
smnumberm_act
 
smnumberm_res
 
smnumberm_row
 
smnumber red
 
smnumber piv
 
smnumber dumm
 
ring _R
 

Detailed Description

Definition at line 2328 of file sparsmat.cc.

Constructor & Destructor Documentation

◆ sparse_number_mat()

sparse_number_mat::sparse_number_mat ( ideal  smat,
const ring  R 
)

Definition at line 2404 of file sparsmat.cc.

2405 {
2406  int i;
2407  poly* pmat;
2408  _R=R;
2409 
2410  crd = sing = 0;
2411  act = ncols = smat->ncols;
2412  tored = nrows = smat->rank;
2413  i = tored+1;
2414  perm = (int *)omAlloc(sizeof(int)*i);
2415  m_row = (smnumber *)omAlloc0(sizeof(smnumber)*i);
2416  wrw = (int *)omAlloc(sizeof(int)*i);
2417  i = ncols+1;
2418  wcl = (int *)omAlloc(sizeof(int)*i);
2419  m_act = (smnumber *)omAlloc(sizeof(smnumber)*i);
2420  m_res = (smnumber *)omAlloc0(sizeof(smnumber)*i);
2422  pmat = smat->m;
2423  for(i=ncols; i; i--)
2424  {
2425  m_act[i] = sm_Poly2Smnumber(pmat[i-1],_R);
2426  }
2427  omFreeSize((ADDRESS)pmat,smat->ncols*sizeof(poly));
2429 }
#define omAllocBin(bin)
Definition: omAllocDecl.h:205
smnumber * m_res
Definition: sparsmat.cc:2340
omBin sip_sideal_bin
Definition: simpleideals.cc:30
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:115
#define omAlloc(size)
Definition: omAllocDecl.h:210
smnumber * m_act
Definition: sparsmat.cc:2339
sm_nrec * smnumber
Definition: sparsmat.cc:2310
const ring R
Definition: DebugPrint.cc:36
int i
Definition: cfEzgcd.cc:123
smnumber * m_row
Definition: sparsmat.cc:2341
static smnumber sm_Poly2Smnumber(poly, const ring)
Definition: sparsmat.cc:2898
static omBin smnrec_bin
Definition: sparsmat.cc:2317
polyrec * poly
Definition: hilb.h:10
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259
#define omAlloc0(size)
Definition: omAllocDecl.h:211

◆ ~sparse_number_mat()

sparse_number_mat::~sparse_number_mat ( )

Definition at line 2434 of file sparsmat.cc.

2435 {
2436  int i;
2438  i = ncols+1;
2439  omFreeSize((ADDRESS)m_res, sizeof(smnumber)*i);
2440  omFreeSize((ADDRESS)m_act, sizeof(smnumber)*i);
2441  omFreeSize((ADDRESS)wcl, sizeof(int)*i);
2442  i = nrows+1;
2443  omFreeSize((ADDRESS)wrw, sizeof(int)*i);
2444  omFreeSize((ADDRESS)m_row, sizeof(smnumber)*i);
2445  omFreeSize((ADDRESS)perm, sizeof(int)*i);
2446 }
smnumber * m_res
Definition: sparsmat.cc:2340
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:115
smnumber * m_act
Definition: sparsmat.cc:2339
sm_nrec * smnumber
Definition: sparsmat.cc:2310
int i
Definition: cfEzgcd.cc:123
smnumber * m_row
Definition: sparsmat.cc:2341
static omBin smnrec_bin
Definition: sparsmat.cc:2317
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259

Member Function Documentation

◆ smAllDel()

void sparse_number_mat::smAllDel ( )
private

Definition at line 2848 of file sparsmat.cc.

2849 {
2850  smnumber a;
2851  int i;
2852 
2853  for (i=act; i; i--)
2854  {
2855  a = m_act[i];
2856  while (a != NULL)
2857  sm_NumberDelete(&a,_R);
2858  }
2859  for (i=crd; i; i--)
2860  {
2861  a = m_res[i];
2862  while (a != NULL)
2863  sm_NumberDelete(&a,_R);
2864  }
2865  if (act)
2866  {
2867  for (i=nrows; i; i--)
2868  {
2869  a = m_row[i];
2870  while (a != NULL)
2871  sm_NumberDelete(&a,_R);
2872  }
2873  }
2874 }
smnumber * m_res
Definition: sparsmat.cc:2340
const poly a
Definition: syzextra.cc:212
static void sm_NumberDelete(smnumber *, const ring R)
Definition: sparsmat.cc:2878
smnumber * m_act
Definition: sparsmat.cc:2339
sm_nrec * smnumber
Definition: sparsmat.cc:2310
int i
Definition: cfEzgcd.cc:123
smnumber * m_row
Definition: sparsmat.cc:2341
#define NULL
Definition: omList.c:10

◆ smColToRow()

void sparse_number_mat::smColToRow ( )
private

Definition at line 2773 of file sparsmat.cc.

2774 {
2775  smnumber c = m_act[act];
2776  smnumber h;
2777 
2778  while (c != NULL)
2779  {
2780  h = c;
2781  c = c->n;
2782  h->n = m_row[h->pos];
2783  m_row[h->pos] = h;
2784  h->pos = crd;
2785  }
2786 }
smnumber * m_act
Definition: sparsmat.cc:2339
sm_nrec * smnumber
Definition: sparsmat.cc:2310
smnumber * m_row
Definition: sparsmat.cc:2341
#define NULL
Definition: omList.c:10
static Poly * h
Definition: janet.cc:978

◆ smGElim()

void sparse_number_mat::smGElim ( )
private

Definition at line 2629 of file sparsmat.cc.

2630 {
2631  number p = n_Invers(piv->m,_R->cf); // pivotelement
2632  smnumber c = m_act[act]; // pivotcolumn
2633  smnumber r = red; // row to reduce
2634  smnumber res, a, b;
2635  number w, ha, hb;
2636 
2637  if ((c == NULL) || (r == NULL))
2638  {
2639  while (r!=NULL) sm_NumberDelete(&r,_R);
2640  return;
2641  }
2642  do
2643  {
2644  a = m_act[r->pos];
2645  res = dumm;
2646  res->n = NULL;
2647  b = c;
2648  w = n_Mult(r->m, p,_R->cf);
2649  n_Delete(&r->m,_R->cf);
2650  r->m = w;
2651  loop // combine the chains a and b: a + w*b
2652  {
2653  if (a == NULL)
2654  {
2655  do
2656  {
2657  res = res->n = smNumberCopy(b);
2658  res->m = n_Mult(b->m, w,_R->cf);
2659  b = b->n;
2660  } while (b != NULL);
2661  break;
2662  }
2663  if (a->pos < b->pos)
2664  {
2665  res = res->n = a;
2666  a = a->n;
2667  }
2668  else if (a->pos > b->pos)
2669  {
2670  res = res->n = smNumberCopy(b);
2671  res->m = n_Mult(b->m, w,_R->cf);
2672  b = b->n;
2673  }
2674  else
2675  {
2676  hb = n_Mult(b->m, w,_R->cf);
2677  ha = n_Add(a->m, hb,_R->cf);
2678  n_Delete(&hb,_R->cf);
2679  n_Delete(&a->m,_R->cf);
2680  if (n_IsZero(ha,_R->cf))
2681  {
2682  sm_NumberDelete(&a,_R);
2683  }
2684  else
2685  {
2686  a->m = ha;
2687  res = res->n = a;
2688  a = a->n;
2689  }
2690  b = b->n;
2691  }
2692  if (b == NULL)
2693  {
2694  res->n = a;
2695  break;
2696  }
2697  }
2698  m_act[r->pos] = dumm->n;
2699  sm_NumberDelete(&r,_R);
2700  } while (r != NULL);
2701  n_Delete(&p,_R->cf);
2702 }
const poly a
Definition: syzextra.cc:212
loop
Definition: myNF.cc:98
return P p
Definition: myNF.cc:203
static void sm_NumberDelete(smnumber *, const ring R)
Definition: sparsmat.cc:2878
smnumber * m_act
Definition: sparsmat.cc:2339
poly res
Definition: myNF.cc:322
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of &#39;a&#39; and &#39;b&#39;, i.e., a*b
Definition: coeffs.h:640
sm_nrec * smnumber
Definition: sparsmat.cc:2310
const ring r
Definition: syzextra.cc:208
static smnumber smNumberCopy(smnumber)
Definition: sparsmat.cc:2887
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of &#39;a&#39; and &#39;b&#39;, i.e., a+b
Definition: coeffs.h:660
static FORCE_INLINE number n_Invers(number a, const coeffs r)
return the multiplicative inverse of &#39;a&#39;; raise an error if &#39;a&#39; is not invertible ...
Definition: coeffs.h:568
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff &#39;n&#39; represents the zero element.
Definition: coeffs.h:468
#define NULL
Definition: omList.c:10
const CanonicalForm & w
Definition: facAbsFact.cc:55
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459
const poly b
Definition: syzextra.cc:213

◆ smIsSing()

int sparse_number_mat::smIsSing ( )
inline

Definition at line 2356 of file sparsmat.cc.

2356 { return sing; }

◆ smRealPivot()

void sparse_number_mat::smRealPivot ( )
private

Definition at line 2578 of file sparsmat.cc.

2579 {
2580  smnumber a;
2581  number x, xo;
2582  int i, copt, ropt;
2583 
2584  xo=n_Init(0,_R->cf);
2585  for (i=act; i; i--)
2586  {
2587  a = m_act[i];
2588  while ((a!=NULL) && (a->pos<=tored))
2589  {
2590  x = a->m;
2591  if (n_GreaterZero(x,_R->cf))
2592  {
2593  if (n_Greater(x,xo,_R->cf))
2594  {
2595  n_Delete(&xo,_R->cf);
2596  xo = n_Copy(x,_R->cf);
2597  copt = i;
2598  ropt = a->pos;
2599  }
2600  }
2601  else
2602  {
2603  xo = n_InpNeg(xo,_R->cf);
2604  if (n_Greater(xo,x,_R->cf))
2605  {
2606  n_Delete(&xo,_R->cf);
2607  xo = n_Copy(x,_R->cf);
2608  copt = i;
2609  ropt = a->pos;
2610  }
2611  xo = n_InpNeg(xo,_R->cf);
2612  }
2613  a = a->n;
2614  }
2615  }
2616  rpiv = ropt;
2617  if (copt != act)
2618  {
2619  a = m_act[act];
2620  m_act[act] = m_act[copt];
2621  m_act[copt] = a;
2622  }
2623  n_Delete(&xo,_R->cf);
2624 }
static FORCE_INLINE BOOLEAN n_Greater(number a, number b, const coeffs r)
ordered fields: TRUE iff &#39;a&#39; is larger than &#39;b&#39;; in Z/pZ: TRUE iff la > lb, where la and lb are the l...
Definition: coeffs.h:515
const poly a
Definition: syzextra.cc:212
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
smnumber * m_act
Definition: sparsmat.cc:2339
sm_nrec * smnumber
Definition: sparsmat.cc:2310
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
Definition: coeffs.h:561
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of &#39;n&#39;
Definition: coeffs.h:455
Variable x
Definition: cfModGcd.cc:4023
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459
static FORCE_INLINE BOOLEAN n_GreaterZero(number n, const coeffs r)
ordered fields: TRUE iff &#39;n&#39; is positive; in Z/pZ: TRUE iff 0 < m <= roundedBelow(p/2), where m is the long representing n in C: TRUE iff (Im(n) != 0 and Im(n) >= 0) or (Im(n) == 0 and Re(n) >= 0) in K(a)/<p(a)>: TRUE iff (n != 0 and (LC(n) > 0 or deg(n) > 0)) in K(t_1, ..., t_n): TRUE iff (LC(numerator(n) is a constant and > 0) or (LC(numerator(n) is not a constant) in Z/2^kZ: TRUE iff 0 < n <= 2^(k-1) in Z/mZ: TRUE iff the internal mpz is greater than zero in Z: TRUE iff n > 0
Definition: coeffs.h:498

◆ smRes2Ideal()

ideal sparse_number_mat::smRes2Ideal ( )

Definition at line 2559 of file sparsmat.cc.

2560 {
2561  int i, j;
2562  ideal res = idInit(crd, 1);
2563 
2564  for (i=crd; i; i--)
2565  {
2566  j = perm[i]-1;
2567  res->m[j] = sm_Smnumber2Poly(sol[i],_R);
2568  }
2569  omFreeSize((ADDRESS)sol, sizeof(number)*(crd+1));
2570  return res;
2571 }
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:260
void * ADDRESS
Definition: auxiliary.h:115
poly res
Definition: myNF.cc:322
static poly sm_Smnumber2Poly(number, const ring)
Definition: sparsmat.cc:2929
int j
Definition: myNF.cc:70
int i
Definition: cfEzgcd.cc:123
ideal idInit(int idsize, int rank)
initialise an ideal / module
Definition: simpleideals.cc:38

◆ smRowToCol()

void sparse_number_mat::smRowToCol ( )
private

Definition at line 2793 of file sparsmat.cc.

2794 {
2795  smnumber r = m_row[rpiv];
2796  smnumber a, ap, h;
2797 
2798  m_row[rpiv] = NULL;
2799  perm[crd] = rpiv;
2800  piv->pos = crd;
2801  m_res[crd] = piv;
2802  while (r != NULL)
2803  {
2804  ap = m_res[r->pos];
2805  loop
2806  {
2807  a = ap->n;
2808  if (a == NULL)
2809  {
2810  ap->n = h = r;
2811  r = r->n;
2812  h->n = a;
2813  h->pos = crd;
2814  break;
2815  }
2816  ap = a;
2817  }
2818  }
2819 }
smnumber * m_res
Definition: sparsmat.cc:2340
const poly a
Definition: syzextra.cc:212
loop
Definition: myNF.cc:98
sm_nrec * smnumber
Definition: sparsmat.cc:2310
const ring r
Definition: syzextra.cc:208
smnumber * m_row
Definition: sparsmat.cc:2341
#define NULL
Definition: omList.c:10
static Poly * h
Definition: janet.cc:978

◆ smSelectPR()

void sparse_number_mat::smSelectPR ( )
private

Definition at line 2709 of file sparsmat.cc.

2710 {
2711  smnumber b = dumm;
2712  smnumber a, ap;
2713  int i;
2714 
2715  if (TEST_OPT_PROT)
2716  {
2717  if ((crd+1)%10)
2718  PrintS(".");
2719  else
2720  PrintS(".\n");
2721  }
2722  a = m_act[act];
2723  if (a->pos < rpiv)
2724  {
2725  do
2726  {
2727  ap = a;
2728  a = a->n;
2729  } while (a->pos < rpiv);
2730  ap->n = a->n;
2731  }
2732  else
2733  m_act[act] = a->n;
2734  piv = a;
2735  a->n = NULL;
2736  for (i=1; i<act; i++)
2737  {
2738  a = m_act[i];
2739  if (a->pos < rpiv)
2740  {
2741  loop
2742  {
2743  ap = a;
2744  a = a->n;
2745  if ((a == NULL) || (a->pos > rpiv))
2746  break;
2747  if (a->pos == rpiv)
2748  {
2749  ap->n = a->n;
2750  a->m = n_InpNeg(a->m,_R->cf);
2751  b = b->n = a;
2752  b->pos = i;
2753  break;
2754  }
2755  }
2756  }
2757  else if (a->pos == rpiv)
2758  {
2759  m_act[i] = a->n;
2760  a->m = n_InpNeg(a->m,_R->cf);
2761  b = b->n = a;
2762  b->pos = i;
2763  }
2764  }
2765  b->n = NULL;
2766  red = dumm->n;
2767 }
const poly a
Definition: syzextra.cc:212
#define TEST_OPT_PROT
Definition: options.h:98
loop
Definition: myNF.cc:98
smnumber * m_act
Definition: sparsmat.cc:2339
sm_nrec * smnumber
Definition: sparsmat.cc:2310
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
Definition: coeffs.h:561
int i
Definition: cfEzgcd.cc:123
void PrintS(const char *s)
Definition: reporter.cc:284
#define NULL
Definition: omList.c:10
const poly b
Definition: syzextra.cc:213

◆ smSolv()

void sparse_number_mat::smSolv ( )

Definition at line 2482 of file sparsmat.cc.

2483 {
2484  int i, j;
2485  number x, y, z;
2486  smnumber s, d, r = m_row[nrows];
2487 
2488  m_row[nrows] = NULL;
2489  sol = (number *)omAlloc0(sizeof(number)*(crd+1));
2490  while (r != NULL) // expand the rigth hand side
2491  {
2492  sol[r->pos] = r->m;
2493  s = r;
2494  r = r->n;
2496  }
2497  i = crd; // solve triangular system
2498  if (sol[i] != NULL)
2499  {
2500  x = sol[i];
2501  sol[i] = n_Div(x, m_res[i]->m,_R->cf);
2502  n_Delete(&x,_R->cf);
2503  }
2504  i--;
2505  while (i > 0)
2506  {
2507  x = NULL;
2508  d = m_res[i];
2509  s = d->n;
2510  while (s != NULL)
2511  {
2512  j = s->pos;
2513  if (sol[j] != NULL)
2514  {
2515  z = n_Mult(sol[j], s->m,_R->cf);
2516  if (x != NULL)
2517  {
2518  y = x;
2519  x = n_Sub(y, z,_R->cf);
2520  n_Delete(&y,_R->cf);
2521  n_Delete(&z,_R->cf);
2522  }
2523  else
2524  x = n_InpNeg(z,_R->cf);
2525  }
2526  s = s->n;
2527  }
2528  if (sol[i] != NULL)
2529  {
2530  if (x != NULL)
2531  {
2532  y = n_Add(x, sol[i],_R->cf);
2533  n_Delete(&x,_R->cf);
2534  if (n_IsZero(y,_R->cf))
2535  {
2536  n_Delete(&sol[i],_R->cf);
2537  sol[i] = NULL;
2538  }
2539  else
2540  sol[i] = y;
2541  }
2542  }
2543  else
2544  sol[i] = x;
2545  if (sol[i] != NULL)
2546  {
2547  x = sol[i];
2548  sol[i] = n_Div(x, d->m,_R->cf);
2549  n_Delete(&x,_R->cf);
2550  }
2551  i--;
2552  }
2553  this->smAllDel();
2554 }
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of &#39;a&#39; and &#39;b&#39;, i.e., a-b
Definition: coeffs.h:673
const CanonicalForm int s
Definition: facAbsFact.cc:55
smnumber * m_res
Definition: sparsmat.cc:2340
const CanonicalForm int const CFList const Variable & y
Definition: facAbsFact.cc:57
void * ADDRESS
Definition: auxiliary.h:115
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of &#39;a&#39; and &#39;b&#39;, i.e., a*b
Definition: coeffs.h:640
sm_nrec * smnumber
Definition: sparsmat.cc:2310
const ring r
Definition: syzextra.cc:208
int j
Definition: myNF.cc:70
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of &#39;a&#39; and &#39;b&#39;, i.e., a+b
Definition: coeffs.h:660
int m
Definition: cfEzgcd.cc:119
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
Definition: coeffs.h:561
int i
Definition: cfEzgcd.cc:123
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff &#39;n&#39; represents the zero element.
Definition: coeffs.h:468
smnumber * m_row
Definition: sparsmat.cc:2341
#define NULL
Definition: omList.c:10
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of &#39;a&#39; and &#39;b&#39;, i.e., a/b; raises an error if &#39;b&#39; is not invertible in r exceptio...
Definition: coeffs.h:619
Variable x
Definition: cfModGcd.cc:4023
static omBin smnrec_bin
Definition: sparsmat.cc:2317
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459
#define omFreeBin(addr, bin)
Definition: omAllocDecl.h:259
#define omAlloc0(size)
Definition: omAllocDecl.h:211

◆ smTriangular()

void sparse_number_mat::smTriangular ( )

Definition at line 2451 of file sparsmat.cc.

2452 {
2453  tored--;
2454  this->smZeroToredElim();
2455  if (sing != 0) return;
2456  while (act > 1)
2457  {
2458  this->smRealPivot();
2459  this->smSelectPR();
2460  this->smGElim();
2461  crd++;
2462  this->smColToRow();
2463  act--;
2464  this->smRowToCol();
2465  this->smZeroToredElim();
2466  if (sing != 0) return;
2467  }
2468  if (TEST_OPT_PROT) PrintS(".\n");
2469  piv = m_act[1];
2470  rpiv = piv->pos;
2471  m_act[1] = piv->n;
2472  piv->n = NULL;
2473  crd++;
2474  this->smColToRow();
2475  act--;
2476  this->smRowToCol();
2477 }
#define TEST_OPT_PROT
Definition: options.h:98
smnumber * m_act
Definition: sparsmat.cc:2339
void smZeroToredElim()
Definition: sparsmat.cc:2826
void PrintS(const char *s)
Definition: reporter.cc:284
#define NULL
Definition: omList.c:10

◆ smZeroToredElim()

void sparse_number_mat::smZeroToredElim ( )
private

Definition at line 2826 of file sparsmat.cc.

2827 {
2828  smnumber a;
2829  int i = act;
2830 
2831  loop
2832  {
2833  if (i == 0) return;
2834  a = m_act[i];
2835  if ((a==NULL) || (a->pos>tored))
2836  {
2837  sing = 1;
2838  this->smAllDel();
2839  return;
2840  }
2841  i--;
2842  }
2843 }
const poly a
Definition: syzextra.cc:212
loop
Definition: myNF.cc:98
smnumber * m_act
Definition: sparsmat.cc:2339
sm_nrec * smnumber
Definition: sparsmat.cc:2310
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10

Field Documentation

◆ _R

ring sparse_number_mat::_R
private

Definition at line 2345 of file sparsmat.cc.

◆ act

int sparse_number_mat::act
private

Definition at line 2331 of file sparsmat.cc.

◆ crd

int sparse_number_mat::crd
private

Definition at line 2332 of file sparsmat.cc.

◆ dumm

smnumber sparse_number_mat::dumm
private

Definition at line 2344 of file sparsmat.cc.

◆ m_act

smnumber* sparse_number_mat::m_act
private

Definition at line 2339 of file sparsmat.cc.

◆ m_res

smnumber* sparse_number_mat::m_res
private

Definition at line 2340 of file sparsmat.cc.

◆ m_row

smnumber* sparse_number_mat::m_row
private

Definition at line 2341 of file sparsmat.cc.

◆ ncols

int sparse_number_mat::ncols
private

Definition at line 2330 of file sparsmat.cc.

◆ nrows

int sparse_number_mat::nrows
private

Definition at line 2330 of file sparsmat.cc.

◆ perm

int* sparse_number_mat::perm
private

Definition at line 2336 of file sparsmat.cc.

◆ piv

smnumber sparse_number_mat::piv
private

Definition at line 2343 of file sparsmat.cc.

◆ red

smnumber sparse_number_mat::red
private

Definition at line 2342 of file sparsmat.cc.

◆ rpiv

int sparse_number_mat::rpiv
private

Definition at line 2335 of file sparsmat.cc.

◆ sing

int sparse_number_mat::sing
private

Definition at line 2334 of file sparsmat.cc.

◆ sol

number* sparse_number_mat::sol
private

Definition at line 2337 of file sparsmat.cc.

◆ tored

int sparse_number_mat::tored
private

Definition at line 2333 of file sparsmat.cc.

◆ wcl

int * sparse_number_mat::wcl
private

Definition at line 2338 of file sparsmat.cc.

◆ wrw

int* sparse_number_mat::wrw
private

Definition at line 2338 of file sparsmat.cc.


The documentation for this class was generated from the following file: