@@ -427,23 +427,102 @@ VALUE cmatrix_dense_LU(VALUE self)
427427 return result ;
428428}
429429
430- /* VALUE cmatrix_dense_LDL(VALUE self)
430+ VALUE cmatrix_dense_LDL (VALUE self )
431431{
432+ CDenseMatrix * this ;
433+ Data_Get_Struct (self , CDenseMatrix , this );
434+
435+ CDenseMatrix * cresult_l ;
436+ VALUE result_l ;
437+ cresult_l = dense_matrix_new ();
438+
439+ CDenseMatrix * cresult_d ;
440+ VALUE result_d ;
441+ cresult_d = dense_matrix_new ();
442+
443+ dense_matrix_LDL (cresult_l , cresult_d , this );
444+
445+ result_l = Data_Wrap_Struct (c_dense_matrix , NULL , dense_matrix_free ,
446+ cresult_l );
447+ result_d = Data_Wrap_Struct (c_dense_matrix , NULL , dense_matrix_free ,
448+ cresult_d );
449+
450+ VALUE result ;
451+ result = rb_ary_new ();
452+ rb_ary_push (result , result_l );
453+ rb_ary_push (result , result_d );
432454
455+ return result ;
433456}
434457
435458VALUE cmatrix_dense_LU_solve (VALUE self , VALUE b )
436459{
460+ CDenseMatrix * this ;
461+ Data_Get_Struct (self , CDenseMatrix , this );
462+
463+ CDenseMatrix * cresult ;
464+ VALUE result ;
465+ cresult = dense_matrix_new ();
466+
467+ CDenseMatrix * coperand ;
468+ Data_Get_Struct (b , CDenseMatrix , coperand );
437469
470+ dense_matrix_LU_solve (cresult , this , coperand );
471+
472+ result = Data_Wrap_Struct (c_dense_matrix , NULL , dense_matrix_free ,
473+ cresult );
474+ return result ;
438475}
439476
440477VALUE cmatrix_dense_FFLU (VALUE self )
441478{
479+ CDenseMatrix * this ;
480+ Data_Get_Struct (self , CDenseMatrix , this );
481+
482+ CDenseMatrix * cresult_lu ;
483+ VALUE result_lu ;
484+ cresult_lu = dense_matrix_new ();
485+
486+ dense_matrix_FFLU (cresult_lu , this );
487+
488+ result_lu = Data_Wrap_Struct (c_dense_matrix , NULL , dense_matrix_free ,
489+ cresult_lu );
442490
491+ return result_lu ;
443492}
444493
445494
446495VALUE cmatrix_dense_FFLDU (VALUE self )
447496{
497+ CDenseMatrix * this ;
498+ Data_Get_Struct (self , CDenseMatrix , this );
499+
500+ CDenseMatrix * cresult_l ;
501+ VALUE result_l ;
502+ cresult_l = dense_matrix_new ();
503+
504+ CDenseMatrix * cresult_d ;
505+ VALUE result_d ;
506+ cresult_d = dense_matrix_new ();
507+
508+ CDenseMatrix * cresult_u ;
509+ VALUE result_u ;
510+ cresult_u = dense_matrix_new ();
511+
512+ dense_matrix_LDL (cresult_l , cresult_d , this );
513+
514+ result_l = Data_Wrap_Struct (c_dense_matrix , NULL , dense_matrix_free ,
515+ cresult_l );
516+ result_d = Data_Wrap_Struct (c_dense_matrix , NULL , dense_matrix_free ,
517+ cresult_d );
518+ result_u = Data_Wrap_Struct (c_dense_matrix , NULL , dense_matrix_free ,
519+ cresult_u );
448520
449- }*/
521+ VALUE result ;
522+ result = rb_ary_new ();
523+ rb_ary_push (result , result_l );
524+ rb_ary_push (result , result_d );
525+ rb_ary_push (result , result_u );
526+
527+ return result ;
528+ }
0 commit comments