0

我正在使用通过 macports 安装的 SuiteSparse @4.2.1_3 并希望分配一个 cholmod_dense 结构。考虑以下代码:

/* start CHOLMOD */
cholmod_common c;
cholmod_dense* myv;
cholmod_dense* myv2;

cholmod_start (&c);
myv  = cholmod_l_allocate_dense( 4,1,4,CHOLMOD_REAL,&c);
myv2 = cholmod_allocate_dense(4,1,4,CHOLMOD_REAL,&c);
printf("myv=%p\n",myv);
printf("myv2=%p\n",myv2);

/* finish CHOLMOD */
cholmod_finish (&c) ; 

我得到以下输出:

myv=0x0
myv2=0x7fb86ac0c060

这意味着长版本中的分配cholmod_dense结构不起作用,但整数版本效果很好。有谁知道发生这种情况的原因?

4

1 回答 1

0

您必须在cholmod_common结构中设置正确的 itype c

c.itype=CHOLMOD_LONG;

/* Common->itype and Common->dtype are used to define the types of all
 * sparse matrices, triplet matrices, dense matrices, and factors
 * created using this Common struct.  The itypes and dtypes of all
 * parameters to all CHOLMOD routines must match.  */
于 2014-07-12T10:29:37.073 回答