Your MWE program compiles and runs ok for me. Did you check if you might be linking to an old version of GSL with -lgsl? You may have the new gsl library installed somewhere different.
On 10/14/19 4:48 AM, 2592680259 wrote: > I was using "g++ test_gsl.cpp -I/usr/local/include -lgsl -lgslcblas -o > test_gsl.o", but got error message: > > > undefined reference to `gsl_spmatrix_float_alloc_nzmax' > undefined reference to `gsl_spmatrix_float_d2sp' > > > those two functions are declared in "gsl/gsl_spmatrix_float.h". > > > The MWE for "test_gsl.cpp" is listed below > > > #include <iostream> > #include <cmath> > #include <string> > #include <gsl/gsl_matrix.h> > #include <gsl/gsl_matrix_float.h> > #include <gsl/gsl_spmatrix.h> > #include <gsl/gsl_spmatrix_float.h> > > > using namespace std; > > > const int N = 32 * 40 * 2; > const int N_nz = 25530; > > > int main(int argc, char **argv) > { > gsl_matrix *test = gsl_matrix_alloc(N, N); > gsl_matrix_float *test_float = gsl_matrix_float_alloc(N, N); > > > gsl_spmatrix *test_sp = gsl_spmatrix_alloc_nzmax(N, N, N_nz, > GSL_SPMATRIX_COO); > gsl_spmatrix_d2sp(test_sp, test); > > > gsl_spmatrix_float *test_float_sp = gsl_spmatrix_float_alloc_nzmax(N, N, > N_nz, GSL_SPMATRIX_COO); > gsl_spmatrix_float_d2sp(test_float_sp, test_float); > > > gsl_matrix_free(test); > gsl_matrix_float_free(test_float); > gsl_spmatrix_free(test_sp); > gsl_spmatrix_float_free(test_float_sp); > > > > > return 0; > }