@@ -95,9 +95,6 @@ static VALUE rb_gsl_linalg_LU_decomp_nmatrix(int argc, VALUE *argv, VALUE obj,
9595 m = rb_nmatrix_dense_create (FLOAT64 , input_nmatrix -> shape , 2 ,
9696 input_nmatrix -> elements , input_nmatrix -> shape [0 ] * input_nmatrix -> shape [1 ]);
9797 temp_nmatrix = NM_STORAGE_DENSE (m );
98-
99- memcpy ((double * )temp_nmatrix -> elements , (double * )input_nmatrix -> elements ,
100- sizeof (double )* input_nmatrix -> shape [0 ]* input_nmatrix -> shape [1 ]);
10198 mv = gsl_matrix_view_array ((double * )temp_nmatrix -> elements ,
10299 temp_nmatrix -> shape [0 ], temp_nmatrix -> shape [1 ]);
103100 } else {
@@ -872,27 +869,6 @@ static VALUE rb_gsl_linalg_QR_LQ_decomposition(int argc, VALUE *argv, VALUE obj,
872869}
873870
874871#ifdef HAVE_NARRAY_H
875- static VALUE rb_gsl_linalg_QR_decomp_narray (int argc , VALUE * argv , VALUE obj )
876- {
877- struct NARRAY * na ;
878- gsl_matrix_view mv ;
879- gsl_vector_view vv ;
880- int shapem [2 ], shapev [1 ];
881- VALUE qr , tau ;
882- if (argc < 1 ) rb_raise (rb_eArgError , "too few arguments." );
883- GetNArray (argv [0 ], na );
884- shapem [0 ] = na -> shape [1 ];
885- shapem [1 ] = na -> shape [1 ];
886- shapev [0 ] = shapem [0 ];
887- qr = na_make_object (NA_DFLOAT , 2 , shapem , CLASS_OF (argv [0 ]));
888- tau = na_make_object (NA_DFLOAT , 1 , shapev , cNVector );
889- memcpy (NA_PTR_TYPE (qr ,double * ),na -> ptr ,sizeof (double )* shapem [0 ]* shapem [1 ]);
890- mv = gsl_matrix_view_array (NA_PTR_TYPE (qr ,double * ), shapem [0 ], shapem [1 ]);
891- vv = gsl_vector_view_array (NA_PTR_TYPE (tau ,double * ), shapev [0 ]);
892- gsl_linalg_QR_decomp (& mv .matrix , & vv .vector );
893- return rb_ary_new3 (2 , qr , tau );
894- }
895-
896872static VALUE rb_gsl_linalg_QR_unpack_narray (int argc , VALUE * argv , VALUE obj )
897873{
898874 struct NARRAY * m , * tau ;
@@ -953,6 +929,26 @@ static VALUE rb_gsl_linalg_QR_svx_narray(int argc, VALUE *argv, VALUE obj)
953929 gsl_linalg_QR_svx (& mv .matrix , & tv .vector , & bv .vector );
954930 return argv [2 ];
955931}
932+ static VALUE rb_gsl_linalg_QR_decomp_narray (int argc , VALUE * argv , VALUE obj )
933+ {
934+ struct NARRAY * na ;
935+ gsl_matrix_view mv ;
936+ gsl_vector_view vv ;
937+ int shapem [2 ], shapev [1 ];
938+ VALUE qr , tau ;
939+ if (argc < 1 ) rb_raise (rb_eArgError , "too few arguments." );
940+ GetNArray (argv [0 ], na );
941+ shapem [0 ] = na -> shape [1 ];
942+ shapem [1 ] = na -> shape [1 ];
943+ shapev [0 ] = shapem [0 ];
944+ qr = na_make_object (NA_DFLOAT , 2 , shapem , CLASS_OF (argv [0 ]));
945+ tau = na_make_object (NA_DFLOAT , 1 , shapev , cNVector );
946+ memcpy (NA_PTR_TYPE (qr ,double * ),na -> ptr ,sizeof (double )* shapem [0 ]* shapem [1 ]);
947+ mv = gsl_matrix_view_array (NA_PTR_TYPE (qr ,double * ), shapem [0 ], shapem [1 ]);
948+ vv = gsl_vector_view_array (NA_PTR_TYPE (tau ,double * ), shapev [0 ]);
949+ gsl_linalg_QR_decomp (& mv .matrix , & vv .vector );
950+ return rb_ary_new3 (2 , qr , tau );
951+ }
956952#endif
957953
958954#ifdef HAVE_NMATRIX_H
@@ -966,15 +962,12 @@ static VALUE rb_gsl_linalg_QR_decomp_nmatrix(int argc, VALUE *argv, VALUE obj)
966962
967963 if (argc < 1 ) rb_raise (rb_eArgError , "too few arguments." );
968964 nm = NM_STORAGE_DENSE (argv [0 ]);
969- shapem [0 ] = nm -> shape [0 ];
965+ shapem [0 ] = nm -> shape [1 ];
970966 shapem [1 ] = nm -> shape [1 ];
971967 shapev [0 ] = shapem [0 ];
972968 qr = rb_nmatrix_dense_create (FLOAT64 , shapem , 2 , nm -> elements ,
973969 shapem [0 ]* shapem [1 ]);
974970 tau = rb_nmatrix_dense_create (FLOAT64 , shapev , 1 , nm -> elements , shapev [0 ]);
975-
976- memcpy ((double * )NM_DENSE_ELEMENTS (qr ),nm -> elements ,
977- sizeof (double )* shapem [0 ]* shapem [1 ]);
978971 mv = gsl_matrix_view_array ((double * )NM_DENSE_ELEMENTS (qr ), shapem [0 ], shapem [1 ]);
979972 vv = gsl_vector_view_array ((double * )NM_DENSE_ELEMENTS (tau ), shapev [0 ]);
980973 gsl_linalg_QR_decomp (& mv .matrix , & vv .vector );
0 commit comments