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