138{
141 double gamma12;
142 double sigma12;
143 double gamma23;
144 double sigma23;
145 double* a1;
146 double* a2;
147 double* a3;
151 int nG, nG_app;
152 int n_iter;
154 int k_minus_1;
155 int n_fuse;
156 int is_ident12, is_ident23;
157 int m_app;
158
159
160 k_minus_1 = k_G - 1;
161 nG = n_A - 1;
162 n_fuse = 2;
163
164
165 if ( nG < 2*k_minus_1 || k_G == 1 )
166 {
168 m_A,
169 n_A,
170 buff_G, rs_G, cs_G,
171 buff_A, rs_A, cs_A );
172 return FLA_SUCCESS;
173 }
174
175
176
177
178 for ( j = -1; j < k_minus_1; j += n_fuse )
179 {
180 nG_app = j + 1;
181 n_iter = nG_app;
183
184 for (
i = 0, k = 0, g = j;
i < n_iter; ++
i, ++k, --g )
185 {
186 g12 = buff_G + (g )*rs_G + (k )*cs_G;
187 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
188 a1 = buff_A + (g )*cs_A;
189 a2 = buff_A + (g + 1)*cs_A;
190 a3 = buff_A + (g + 2)*cs_A;
191
196
197 is_ident12 = ( gamma12 == one && sigma12 == zero );
198 is_ident23 = ( gamma23 == one && sigma23 == zero );
199
200 m_app = min( i_k + 3 + j - iTL, m_A );
201 m_app = max( m_app, 0 );
202
203 if ( !is_ident12 && is_ident23 )
204 {
205
206
207 MAC_Apply_G_mx2_asd( m_app,
208 &gamma12,
209 &sigma12,
210 a1, 1,
211 a2, 1 );
212 }
213 else if ( is_ident12 && !is_ident23 )
214 {
215
216
217 MAC_Apply_G_mx2_asd( m_app,
218 &gamma23,
219 &sigma23,
220 a2, 1,
221 a3, 1 );
222 }
223 else if ( !is_ident12 && !is_ident23 )
224 {
225
226
227 MAC_Apply_G_mx3_asd( m_app,
228 &gamma12,
229 &sigma12,
230 &gamma23,
231 &sigma23,
232 a1, 1,
233 a2, 1,
234 a3, 1 );
235 }
236 }
237
239 {
240 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
241 a2 = buff_A + (g + 1)*cs_A;
242 a3 = buff_A + (g + 2)*cs_A;
243
246
247 is_ident23 = ( gamma23 == one && sigma23 == zero );
248
249 m_app = min( i_k + 3 + j - iTL, m_A );
250 m_app = max( m_app, 0 );
251
252 if ( !is_ident23 )
253 MAC_Apply_G_mx2_asd( m_app,
254 &gamma23,
255 &sigma23,
256 a2, 1,
257 a3, 1 );
258 }
259 }
260
261
262
263 for ( ; j < nG - 1; j += n_fuse )
264 {
265 nG_app = k_G;
266 n_iter = nG_app;
268
269 for (
i = 0, k = 0, g = j;
i < n_iter; ++
i, ++k, --g )
270 {
271 g12 = buff_G + (g )*rs_G + (k )*cs_G;
272 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
273 a1 = buff_A + (g )*cs_A;
274 a2 = buff_A + (g + 1)*cs_A;
275 a3 = buff_A + (g + 2)*cs_A;
276
281
282 is_ident12 = ( gamma12 == one && sigma12 == zero );
283 is_ident23 = ( gamma23 == one && sigma23 == zero );
284
285 m_app = min( i_k + 3 + j - iTL, m_A );
286 m_app = max( m_app, 0 );
287
288 if ( !is_ident12 && is_ident23 )
289 {
290
291
292 MAC_Apply_G_mx2_asd( m_app,
293 &gamma12,
294 &sigma12,
295 a1, 1,
296 a2, 1 );
297 }
298 else if ( is_ident12 && !is_ident23 )
299 {
300
301
302 MAC_Apply_G_mx2_asd( m_app,
303 &gamma23,
304 &sigma23,
305 a2, 1,
306 a3, 1 );
307 }
308 else if ( !is_ident12 && !is_ident23 )
309 {
310
311
312 MAC_Apply_G_mx3_asd( m_app,
313 &gamma12,
314 &sigma12,
315 &gamma23,
316 &sigma23,
317 a1, 1,
318 a2, 1,
319 a3, 1 );
320 }
321 }
322 }
323
324
325
326 for ( j = nG % n_fuse; j < k_G; j += n_fuse )
327 {
328 g = nG - 1;
329 k = j;
330
333 {
334 g12 = buff_G + (g )*rs_G + (k )*cs_G;
335 a1 = buff_A + (g )*cs_A;
336 a2 = buff_A + (g + 1)*cs_A;
337
340
341 is_ident12 = ( gamma12 == one && sigma12 == zero );
342
343 m_app = m_A;
344
345 if ( !is_ident12 )
346 MAC_Apply_G_mx2_asd( m_app,
347 &gamma12,
348 &sigma12,
349 a1, 1,
350 a2, 1 );
351 ++k;
352 --g;
353 }
354
355 nG_app = k_minus_1 - j;
356 n_iter = nG_app;
357
358 for (
i = 0;
i < n_iter; ++
i, ++k, --g )
359 {
360 g12 = buff_G + (g )*rs_G + (k )*cs_G;
361 g23 = buff_G + (g + 1)*rs_G + (k )*cs_G;
362 a1 = buff_A + (g )*cs_A;
363 a2 = buff_A + (g + 1)*cs_A;
364 a3 = buff_A + (g + 2)*cs_A;
365
370
371 is_ident12 = ( gamma12 == one && sigma12 == zero );
372 is_ident23 = ( gamma23 == one && sigma23 == zero );
373
374 m_app = m_A;
375
376 if ( !is_ident12 && is_ident23 )
377 {
378
379
380 MAC_Apply_G_mx2_asd( m_app,
381 &gamma12,
382 &sigma12,
383 a1, 1,
384 a2, 1 );
385 }
386 else if ( is_ident12 && !is_ident23 )
387 {
388
389
390 MAC_Apply_G_mx2_asd( m_app,
391 &gamma23,
392 &sigma23,
393 a2, 1,
394 a3, 1 );
395 }
396 else if ( !is_ident12 && !is_ident23 )
397 {
398
399
400 MAC_Apply_G_mx3_asd( m_app,
401 &gamma12,
402 &sigma12,
403 &gamma23,
404 &sigma23,
405 a1, 1,
406 a2, 1,
407 a3, 1 );
408 }
409 }
410 }
411
412 return FLA_SUCCESS;
413}
FLA_Error FLA_Apply_G_rf_asd_var1(int k_G, int m_A, int n_A, dcomplex *buff_G, int rs_G, int cs_G, double *buff_A, int rs_A, int cs_A)
Definition FLA_Apply_G_rf_asm_var1.c:164
int n_left
Definition bl1_axmyv2.c:149
int i
Definition bl1_axmyv2.c:145
double bl1_d0(void)
Definition bl1_constants.c:118
double bl1_d1(void)
Definition bl1_constants.c:54
Definition blis_type_defs.h:138
double real
Definition blis_type_defs.h:139
double imag
Definition blis_type_defs.h:139