Функции длинной версии cholmod возвращают нулевой указатель - c программирование
Я использую SuiteSparse @4.2.1_3, установленный через macports, и хочу выделить структуру 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
структура в длинной версии не работает, но целочисленная версия работает хорошо. Кто-нибудь знает причину, почему это происходит?
1 ответ
Вы должны установить правильный тип в cholmod_common
состав 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. */