2011-10-13 4 views
0

gsl_matrix_setを16回書くのではなく、gsl_matrixデータポインタに値を代入するためのショートカットが必要ですが、動作させることができません。小さな自己完結型のサンプル:gsl_matrix構造体ポインタに - >を使用する

#include <stdio.h> 
#include <stdlib.h> 
#include <gsl/gsl_linalg.h> 
#include <gsl/gsl_matrix.h> 

gsl_matrix* get_rates(double k) { 

    int nChar = 4; 
    gsl_matrix *rates = gsl_matrix_calloc(nChar, nChar); 

//TODO: this apparently fails 
    rates->data = (double[]) {-1, k/(k+2), 1/(k+2), 1/(k+2), 
     k/(k+2), -1, 1/(k+2), 1/(k+2), 
     1/(k+2), 1/(k+2), -1, k/(k+2), 
     1/(k+2), 1/(k+2), k/(k+2), -1}; 

    return (rates); 

} 

int main(void) { 

    gsl_matrix *rates; 

    rates = get_rates(2.0); 

    gsl_matrix_fprintf (stdout, rates, " %f"); 

     return(0); 
} 

戻り値:

-1.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 
0.000000 

答えて

関連する問題