comparison src/DLD-FUNCTIONS/inv.cc @ 8916:a2878ba31a9e

add diag & perm matrix query methods to octave_value
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 06 Mar 2009 12:00:11 +0100
parents c3f7e2549abb
children eb63fbe60fab
comparison
equal deleted inserted replaced
8915:485eabc0cfec 8916:a2878ba31a9e
89 89
90 if (arg.is_diag_matrix ()) 90 if (arg.is_diag_matrix ())
91 { 91 {
92 rcond = 1.0; 92 rcond = 1.0;
93 frcond = 1.0f; 93 frcond = 1.0f;
94 const octave_base_value& a = arg.get_rep ();
95 if (arg.is_complex_type ()) 94 if (arg.is_complex_type ())
96 { 95 {
97 if (isfloat) 96 if (isfloat)
98 { 97 {
99 CAST_CONV_ARG (const octave_float_complex_diag_matrix&); 98 result = arg.float_complex_diag_matrix_value ().inverse (info);
100 result = v.float_complex_diag_matrix_value ().inverse (info); 99 if (nargout > 1)
101 if (nargout > 1) 100 frcond = arg.float_complex_diag_matrix_value ().rcond ();
102 frcond = v.float_complex_diag_matrix_value ().rcond ();
103 } 101 }
104 else 102 else
105 { 103 {
106 CAST_CONV_ARG (const octave_complex_diag_matrix&); 104 result = arg.complex_diag_matrix_value ().inverse (info);
107 result = v.complex_diag_matrix_value ().inverse (info); 105 if (nargout > 1)
108 if (nargout > 1) 106 rcond = arg.complex_diag_matrix_value ().rcond ();
109 rcond = v.complex_diag_matrix_value ().rcond ();
110 } 107 }
111 } 108 }
112 else 109 else
113 { 110 {
114 if (isfloat) 111 if (isfloat)
115 { 112 {
116 CAST_CONV_ARG (const octave_float_diag_matrix&); 113 result = arg.float_diag_matrix_value ().inverse (info);
117 result = v.float_diag_matrix_value ().inverse (info); 114 if (nargout > 1)
118 if (nargout > 1) 115 frcond = arg.float_diag_matrix_value ().rcond ();
119 frcond = v.float_diag_matrix_value ().rcond ();
120 } 116 }
121 else 117 else
122 { 118 {
123 CAST_CONV_ARG (const octave_diag_matrix&); 119 result = arg.diag_matrix_value ().inverse (info);
124 result = v.diag_matrix_value ().inverse (info); 120 if (nargout > 1)
125 if (nargout > 1) 121 rcond = arg.diag_matrix_value ().rcond ();
126 rcond = v.diag_matrix_value ().rcond ();
127 } 122 }
128 } 123 }
129 } 124 }
130 else if (arg.is_perm_matrix ()) 125 else if (arg.is_perm_matrix ())
131 { 126 {
132 rcond = 1.0; 127 rcond = 1.0;
133 frcond = 1.0f; 128 frcond = 1.0f;
134 info = 0; 129 info = 0;
135 const octave_base_value& a = arg.get_rep ();
136 if (isfloat) 130 if (isfloat)
137 { 131 result = octave_value (arg.perm_matrix_value ().inverse (), true);
138 CAST_CONV_ARG (const octave_float_perm_matrix&);
139 result = v.perm_matrix_value ().inverse ();
140 }
141 else 132 else
142 { 133 result = arg.perm_matrix_value ().inverse ();
143 CAST_CONV_ARG (const octave_perm_matrix&);
144 result = v.perm_matrix_value ().inverse ();
145 }
146 } 134 }
147 else if (isfloat) 135 else if (isfloat)
148 { 136 {
149 if (arg.is_real_type ()) 137 if (arg.is_real_type ())
150 { 138 {