Functions | |
FLA_Error | FLA_QR_UT_UD_Accum_T_opt_var1 (FLA_Obj U, FLA_Obj D, FLA_Obj T) |
FLA_Error | FLA_QR_UT_UD_Accum_T_opt_var1_float (FLA_Obj U, FLA_Obj D, FLA_Obj T) |
FLA_Error | FLA_QR_UT_UD_Accum_T_opt_var1_double (FLA_Obj U, FLA_Obj D, FLA_Obj T) |
FLA_Error | FLA_QR_UT_UD_Accum_T_opt_var1_scomplex (FLA_Obj U, FLA_Obj D, FLA_Obj T) |
FLA_Error | FLA_QR_UT_UD_Accum_T_opt_var1_dcomplex (FLA_Obj U, FLA_Obj D, FLA_Obj T) |
References FLA_Obj_datatype(), FLA_QR_UT_UD_Accum_T_opt_var1_dcomplex(), FLA_QR_UT_UD_Accum_T_opt_var1_double(), FLA_QR_UT_UD_Accum_T_opt_var1_float(), and FLA_QR_UT_UD_Accum_T_opt_var1_scomplex().
Referenced by FLA_QR_UT_UD_internal().
00037 { 00038 FLA_Datatype datatype; 00039 00040 datatype = FLA_Obj_datatype( U ); 00041 00042 switch ( datatype ) 00043 { 00044 case FLA_FLOAT: 00045 FLA_QR_UT_UD_Accum_T_opt_var1_float( U, 00046 D, T ); 00047 break; 00048 00049 case FLA_DOUBLE: 00050 FLA_QR_UT_UD_Accum_T_opt_var1_double( U, 00051 D, T ); 00052 break; 00053 00054 case FLA_COMPLEX: 00055 FLA_QR_UT_UD_Accum_T_opt_var1_scomplex( U, 00056 D, T ); 00057 break; 00058 00059 case FLA_DOUBLE_COMPLEX: 00060 FLA_QR_UT_UD_Accum_T_opt_var1_dcomplex( U, 00061 D, T ); 00062 break; 00063 } 00064 00065 return FLA_SUCCESS; 00066 }
References FLA_Apply_househ2_UT_opt_dcomplex(), FLA_Househ2_UT_opt_dcomplex(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_ONE, FLA_ZERO, and zgemv().
Referenced by FLA_QR_UT_UD_Accum_T_opt_var1().
00297 { 00298 dcomplex* buff_U = FLA_DOUBLE_COMPLEX_PTR( U ); 00299 dcomplex* buff_D = FLA_DOUBLE_COMPLEX_PTR( D ); 00300 dcomplex* buff_T = FLA_DOUBLE_COMPLEX_PTR( T ); 00301 dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE ); 00302 dcomplex* buff_0 = FLA_DOUBLE_COMPLEX_PTR( FLA_ZERO ); 00303 00304 int m_UT = FLA_Obj_length( U ); 00305 int m_D = FLA_Obj_length( D ); 00306 int ldim_U = FLA_Obj_ldim( U ); 00307 int ldim_D = FLA_Obj_ldim( D ); 00308 int ldim_T = FLA_Obj_ldim( T ); 00309 00310 char trans = 'C'; 00311 int inc_one = 1; 00312 int i; 00313 00314 for ( i = 0; i < m_UT; ++i ) 00315 { 00316 dcomplex* upsilon11 = buff_U + (i )*ldim_U + i; 00317 dcomplex* u12t = buff_U + (i+1)*ldim_U + i; 00318 00319 dcomplex* D0 = buff_D + (0 )*ldim_D; 00320 dcomplex* d1 = buff_D + (i )*ldim_D; 00321 dcomplex* D2 = buff_D + (i+1)*ldim_D; 00322 00323 dcomplex* tau11 = buff_T + (i )*ldim_T + i; 00324 dcomplex* t01 = buff_T + (i )*ldim_T; 00325 00326 int mn_ahead = m_UT - i - 1; 00327 int mn_behind = i; 00328 00329 //------------------------------------------------------------// 00330 00331 // FLA_Househ2_UT( upsilon11, 00332 // d1, tau11 ); 00333 FLA_Househ2_UT_opt_dcomplex( m_D, 00334 upsilon11, 00335 d1, inc_one, 00336 tau11 ); 00337 00338 if ( i > 0 ) 00339 { 00340 // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D0, d1, FLA_ZERO, t01 ); 00341 FLA_C2F( zgemv )( &trans, 00342 &m_D, &mn_behind, 00343 buff_1, 00344 D0, &ldim_D, 00345 d1, &inc_one, 00346 buff_0, 00347 t01, &inc_one ); 00348 } 00349 00350 if ( i < m_UT - 1 ) 00351 { 00352 // FLA_Apply_househ2_UT( tau11, d1, u12t, 00353 // D2 ); 00354 FLA_Apply_househ2_UT_opt_dcomplex( m_D, mn_ahead, 00355 tau11, 00356 d1, inc_one, 00357 u12t, ldim_U, 00358 D2, ldim_D ); 00359 } 00360 00361 //------------------------------------------------------------// 00362 00363 } 00364 00365 return FLA_SUCCESS; 00366 }
References dgemv(), FLA_Apply_househ2_UT_opt_double(), FLA_Househ2_UT_opt_double(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_ONE, and FLA_ZERO.
Referenced by FLA_QR_UT_UD_Accum_T_opt_var1().
00147 { 00148 double* buff_U = FLA_DOUBLE_PTR( U ); 00149 double* buff_D = FLA_DOUBLE_PTR( D ); 00150 double* buff_T = FLA_DOUBLE_PTR( T ); 00151 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE ); 00152 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO ); 00153 00154 int m_UT = FLA_Obj_length( U ); 00155 int m_D = FLA_Obj_length( D ); 00156 int ldim_U = FLA_Obj_ldim( U ); 00157 int ldim_D = FLA_Obj_ldim( D ); 00158 int ldim_T = FLA_Obj_ldim( T ); 00159 00160 char trans = 'T'; 00161 int inc_one = 1; 00162 int i; 00163 00164 for ( i = 0; i < m_UT; ++i ) 00165 { 00166 double* upsilon11 = buff_U + (i )*ldim_U + i; 00167 double* u12t = buff_U + (i+1)*ldim_U + i; 00168 00169 double* D0 = buff_D + (0 )*ldim_D; 00170 double* d1 = buff_D + (i )*ldim_D; 00171 double* D2 = buff_D + (i+1)*ldim_D; 00172 00173 double* tau11 = buff_T + (i )*ldim_T + i; 00174 double* t01 = buff_T + (i )*ldim_T; 00175 00176 int mn_ahead = m_UT - i - 1; 00177 int mn_behind = i; 00178 00179 //------------------------------------------------------------// 00180 00181 // FLA_Househ2_UT( upsilon11, 00182 // d1, tau11 ); 00183 FLA_Househ2_UT_opt_double( m_D, 00184 upsilon11, 00185 d1, inc_one, 00186 tau11 ); 00187 00188 if ( i > 0 ) 00189 { 00190 // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D0, d1, FLA_ZERO, t01 ); 00191 FLA_C2F( dgemv )( &trans, 00192 &m_D, &mn_behind, 00193 buff_1, 00194 D0, &ldim_D, 00195 d1, &inc_one, 00196 buff_0, 00197 t01, &inc_one ); 00198 } 00199 00200 if ( i < m_UT - 1 ) 00201 { 00202 // FLA_Apply_househ2_UT( tau11, d1, u12t, 00203 // D2 ); 00204 FLA_Apply_househ2_UT_opt_double( m_D, mn_ahead, 00205 tau11, 00206 d1, inc_one, 00207 u12t, ldim_U, 00208 D2, ldim_D ); 00209 } 00210 00211 //------------------------------------------------------------// 00212 00213 } 00214 00215 return FLA_SUCCESS; 00216 }
References FLA_Apply_househ2_UT_opt_float(), FLA_Househ2_UT_opt_float(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_ONE, FLA_ZERO, and sgemv().
Referenced by FLA_QR_UT_UD_Accum_T_opt_var1().
00072 { 00073 float* buff_U = FLA_FLOAT_PTR( U ); 00074 float* buff_D = FLA_FLOAT_PTR( D ); 00075 float* buff_T = FLA_FLOAT_PTR( T ); 00076 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE ); 00077 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO ); 00078 00079 int m_UT = FLA_Obj_length( U ); 00080 int m_D = FLA_Obj_length( D ); 00081 int ldim_U = FLA_Obj_ldim( U ); 00082 int ldim_D = FLA_Obj_ldim( D ); 00083 int ldim_T = FLA_Obj_ldim( T ); 00084 00085 char trans = 'T'; 00086 int inc_one = 1; 00087 int i; 00088 00089 for ( i = 0; i < m_UT; ++i ) 00090 { 00091 float* upsilon11 = buff_U + (i )*ldim_U + i; 00092 float* u12t = buff_U + (i+1)*ldim_U + i; 00093 00094 float* D0 = buff_D + (0 )*ldim_D; 00095 float* d1 = buff_D + (i )*ldim_D; 00096 float* D2 = buff_D + (i+1)*ldim_D; 00097 00098 float* tau11 = buff_T + (i )*ldim_T + i; 00099 float* t01 = buff_T + (i )*ldim_T; 00100 00101 int mn_ahead = m_UT - i - 1; 00102 int mn_behind = i; 00103 00104 //------------------------------------------------------------// 00105 00106 // FLA_Househ2_UT( upsilon11, 00107 // d1, tau11 ); 00108 FLA_Househ2_UT_opt_float( m_D, 00109 upsilon11, 00110 d1, inc_one, 00111 tau11 ); 00112 00113 if ( i > 0 ) 00114 { 00115 // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D0, d1, FLA_ZERO, t01 ); 00116 FLA_C2F( sgemv )( &trans, 00117 &m_D, &mn_behind, 00118 buff_1, 00119 D0, &ldim_D, 00120 d1, &inc_one, 00121 buff_0, 00122 t01, &inc_one ); 00123 } 00124 00125 if ( i < m_UT - 1 ) 00126 { 00127 // FLA_Apply_househ2_UT( tau11, d1, u12t, 00128 // D2 ); 00129 FLA_Apply_househ2_UT_opt_float( m_D, mn_ahead, 00130 tau11, 00131 d1, inc_one, 00132 u12t, ldim_U, 00133 D2, ldim_D ); 00134 } 00135 00136 //------------------------------------------------------------// 00137 00138 } 00139 00140 return FLA_SUCCESS; 00141 }
References cgemv(), FLA_Apply_househ2_UT_opt_scomplex(), FLA_Househ2_UT_opt_scomplex(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_ONE, and FLA_ZERO.
Referenced by FLA_QR_UT_UD_Accum_T_opt_var1().
00222 { 00223 scomplex* buff_U = FLA_COMPLEX_PTR( U ); 00224 scomplex* buff_D = FLA_COMPLEX_PTR( D ); 00225 scomplex* buff_T = FLA_COMPLEX_PTR( T ); 00226 scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE ); 00227 scomplex* buff_0 = FLA_COMPLEX_PTR( FLA_ZERO ); 00228 00229 int m_UT = FLA_Obj_length( U ); 00230 int m_D = FLA_Obj_length( D ); 00231 int ldim_U = FLA_Obj_ldim( U ); 00232 int ldim_D = FLA_Obj_ldim( D ); 00233 int ldim_T = FLA_Obj_ldim( T ); 00234 00235 char trans = 'C'; 00236 int inc_one = 1; 00237 int i; 00238 00239 for ( i = 0; i < m_UT; ++i ) 00240 { 00241 scomplex* upsilon11 = buff_U + (i )*ldim_U + i; 00242 scomplex* u12t = buff_U + (i+1)*ldim_U + i; 00243 00244 scomplex* D0 = buff_D + (0 )*ldim_D; 00245 scomplex* d1 = buff_D + (i )*ldim_D; 00246 scomplex* D2 = buff_D + (i+1)*ldim_D; 00247 00248 scomplex* tau11 = buff_T + (i )*ldim_T + i; 00249 scomplex* t01 = buff_T + (i )*ldim_T; 00250 00251 int mn_ahead = m_UT - i - 1; 00252 int mn_behind = i; 00253 00254 //------------------------------------------------------------// 00255 00256 // FLA_Househ2_UT( upsilon11, 00257 // d1, tau11 ); 00258 FLA_Househ2_UT_opt_scomplex( m_D, 00259 upsilon11, 00260 d1, inc_one, 00261 tau11 ); 00262 00263 if ( i > 0 ) 00264 { 00265 // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D0, d1, FLA_ZERO, t01 ); 00266 FLA_C2F( cgemv )( &trans, 00267 &m_D, &mn_behind, 00268 buff_1, 00269 D0, &ldim_D, 00270 d1, &inc_one, 00271 buff_0, 00272 t01, &inc_one ); 00273 } 00274 00275 if ( i < m_UT - 1 ) 00276 { 00277 // FLA_Apply_househ2_UT( tau11, d1, u12t, 00278 // D2 ); 00279 FLA_Apply_househ2_UT_opt_scomplex( m_D, mn_ahead, 00280 tau11, 00281 d1, inc_one, 00282 u12t, ldim_U, 00283 D2, ldim_D ); 00284 } 00285 00286 //------------------------------------------------------------// 00287 00288 } 00289 00290 return FLA_SUCCESS; 00291 }