1 /*
2
3 Copyright (C) 2014, The University of Texas at Austin
4
5 This file is part of libflame and is available under the 3-Clause
6 BSD license, which can be found in the LICENSE file at the top-level
7 directory, or at http://opensource.org/licenses/BSD-3-Clause
8
9 */
10
11 #include "FLAME.h"
12
FLA_Eig_gest_il_opt_var3(FLA_Obj A,FLA_Obj Y,FLA_Obj B)13 FLA_Error FLA_Eig_gest_il_opt_var3( FLA_Obj A, FLA_Obj Y, FLA_Obj B )
14 {
15 FLA_Datatype datatype;
16 int m_AB;
17 int rs_A, cs_A;
18 int rs_Y, cs_Y;
19 int rs_B, cs_B;
20
21 datatype = FLA_Obj_datatype( A );
22
23 m_AB = FLA_Obj_length( A );
24
25 rs_A = FLA_Obj_row_stride( A );
26 cs_A = FLA_Obj_col_stride( A );
27
28 rs_Y = FLA_Obj_row_stride( Y );
29 cs_Y = FLA_Obj_col_stride( Y );
30
31 rs_B = FLA_Obj_row_stride( B );
32 cs_B = FLA_Obj_col_stride( B );
33
34 switch ( datatype )
35 {
36 case FLA_FLOAT:
37 {
38 float* buff_A = FLA_FLOAT_PTR( A );
39 float* buff_Y = FLA_FLOAT_PTR( Y );
40 float* buff_B = FLA_FLOAT_PTR( B );
41
42 FLA_Eig_gest_il_ops_var3( m_AB,
43 buff_A, rs_A, cs_A,
44 buff_Y, rs_Y, cs_Y,
45 buff_B, rs_B, cs_B );
46
47 break;
48 }
49
50 case FLA_DOUBLE:
51 {
52 double* buff_A = FLA_DOUBLE_PTR( A );
53 double* buff_Y = FLA_DOUBLE_PTR( Y );
54 double* buff_B = FLA_DOUBLE_PTR( B );
55
56 FLA_Eig_gest_il_opd_var3( m_AB,
57 buff_A, rs_A, cs_A,
58 buff_Y, rs_Y, cs_Y,
59 buff_B, rs_B, cs_B );
60
61 break;
62 }
63
64 case FLA_COMPLEX:
65 {
66 scomplex* buff_A = FLA_COMPLEX_PTR( A );
67 scomplex* buff_Y = FLA_COMPLEX_PTR( Y );
68 scomplex* buff_B = FLA_COMPLEX_PTR( B );
69
70 FLA_Eig_gest_il_opc_var3( m_AB,
71 buff_A, rs_A, cs_A,
72 buff_Y, rs_Y, cs_Y,
73 buff_B, rs_B, cs_B );
74
75 break;
76 }
77
78 case FLA_DOUBLE_COMPLEX:
79 {
80 dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
81 dcomplex* buff_Y = FLA_DOUBLE_COMPLEX_PTR( Y );
82 dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
83
84 FLA_Eig_gest_il_opz_var3( m_AB,
85 buff_A, rs_A, cs_A,
86 buff_Y, rs_Y, cs_Y,
87 buff_B, rs_B, cs_B );
88
89 break;
90 }
91 }
92
93 return FLA_SUCCESS;
94 }
95
96
97
FLA_Eig_gest_il_ops_var3(int m_AB,float * buff_A,int rs_A,int cs_A,float * buff_Y,int rs_Y,int cs_Y,float * buff_B,int rs_B,int cs_B)98 FLA_Error FLA_Eig_gest_il_ops_var3( int m_AB,
99 float* buff_A, int rs_A, int cs_A,
100 float* buff_Y, int rs_Y, int cs_Y,
101 float* buff_B, int rs_B, int cs_B )
102 {
103 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
104 float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
105 float* buff_m1h = FLA_FLOAT_PTR( FLA_MINUS_ONE_HALF );
106 int i;
107
108 for ( i = 0; i < m_AB; ++i )
109 {
110 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
111 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
112 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
113 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
114
115 float* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
116 float* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
117 float* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
118
119 float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
120 float* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
121 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
122 float* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
123
124 int m_ahead = m_AB - i - 1;
125 int m_behind = i;
126
127 /*------------------------------------------------------------*/
128
129 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
130 bl1_saxpyv( BLIS1_NO_CONJUGATE,
131 m_behind,
132 buff_m1h,
133 y10t, cs_Y,
134 a10t, cs_A );
135
136 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
137 bl1_sdot2s( BLIS1_CONJUGATE,
138 m_behind,
139 buff_m1,
140 a10t, cs_A,
141 b10t, cs_B,
142 buff_1,
143 alpha11 );
144
145 // FLA_Inv_scal_external( beta11, alpha11 );
146 // FLA_Inv_scal_external( beta11, alpha11 );
147 bl1_sinvscals( beta11, alpha11 );
148 bl1_sinvscals( beta11, alpha11 );
149
150 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
151 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
152 bl1_sgemv( BLIS1_NO_TRANSPOSE,
153 BLIS1_CONJUGATE,
154 m_ahead,
155 m_behind,
156 buff_m1,
157 A20, rs_A, cs_A,
158 b10t, cs_B,
159 buff_1,
160 a21, rs_A );
161
162 // FLA_Inv_scal_external( beta11, a21 );
163 bl1_sinvscalv( BLIS1_NO_CONJUGATE,
164 m_ahead,
165 beta11,
166 a21, rs_A );
167
168 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
169 bl1_saxpyv( BLIS1_NO_CONJUGATE,
170 m_behind,
171 buff_m1h,
172 y10t, cs_Y,
173 a10t, cs_A );
174
175 // FLA_Inv_scal_external( beta11, a10t );
176 bl1_sinvscalv( BLIS1_NO_CONJUGATE,
177 m_behind,
178 beta11,
179 a10t, cs_A );
180
181 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
182 bl1_sger( BLIS1_NO_CONJUGATE,
183 BLIS1_NO_CONJUGATE,
184 m_ahead,
185 m_behind,
186 buff_1,
187 b21, rs_B,
188 a10t, cs_A,
189 Y20, rs_Y, cs_Y );
190
191 // FLA_Copy_external( b21, y21 );
192 // FLA_Scal_external( alpha11, y21 );
193 bl1_scopyv( BLIS1_NO_CONJUGATE,
194 m_ahead,
195 b21, rs_B,
196 y21, rs_Y );
197 bl1_sscalv( BLIS1_NO_CONJUGATE,
198 m_ahead,
199 alpha11,
200 y21, rs_Y );
201
202 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
203 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
204 bl1_sgemv( BLIS1_NO_TRANSPOSE,
205 BLIS1_CONJUGATE,
206 m_ahead,
207 m_behind,
208 buff_1,
209 B20, rs_B, cs_B,
210 a10t, cs_A,
211 buff_1,
212 y21, rs_Y );
213
214 /*------------------------------------------------------------*/
215
216 }
217
218 return FLA_SUCCESS;
219 }
220
221
222
FLA_Eig_gest_il_opd_var3(int m_AB,double * buff_A,int rs_A,int cs_A,double * buff_Y,int rs_Y,int cs_Y,double * buff_B,int rs_B,int cs_B)223 FLA_Error FLA_Eig_gest_il_opd_var3( int m_AB,
224 double* buff_A, int rs_A, int cs_A,
225 double* buff_Y, int rs_Y, int cs_Y,
226 double* buff_B, int rs_B, int cs_B )
227 {
228 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
229 double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
230 double* buff_m1h = FLA_DOUBLE_PTR( FLA_MINUS_ONE_HALF );
231 int i;
232
233 for ( i = 0; i < m_AB; ++i )
234 {
235 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
236 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
237 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
238 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
239
240 double* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
241 double* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
242 double* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
243
244 double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
245 double* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
246 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
247 double* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
248
249 int m_ahead = m_AB - i - 1;
250 int m_behind = i;
251
252 /*------------------------------------------------------------*/
253
254 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
255 bl1_daxpyv( BLIS1_NO_CONJUGATE,
256 m_behind,
257 buff_m1h,
258 y10t, cs_Y,
259 a10t, cs_A );
260
261 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
262 bl1_ddot2s( BLIS1_CONJUGATE,
263 m_behind,
264 buff_m1,
265 a10t, cs_A,
266 b10t, cs_B,
267 buff_1,
268 alpha11 );
269
270 // FLA_Inv_scal_external( beta11, alpha11 );
271 // FLA_Inv_scal_external( beta11, alpha11 );
272 bl1_dinvscals( beta11, alpha11 );
273 bl1_dinvscals( beta11, alpha11 );
274
275 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
276 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
277 bl1_dgemv( BLIS1_NO_TRANSPOSE,
278 BLIS1_CONJUGATE,
279 m_ahead,
280 m_behind,
281 buff_m1,
282 A20, rs_A, cs_A,
283 b10t, cs_B,
284 buff_1,
285 a21, rs_A );
286
287 // FLA_Inv_scal_external( beta11, a21 );
288 bl1_dinvscalv( BLIS1_NO_CONJUGATE,
289 m_ahead,
290 beta11,
291 a21, rs_A );
292
293 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
294 bl1_daxpyv( BLIS1_NO_CONJUGATE,
295 m_behind,
296 buff_m1h,
297 y10t, cs_Y,
298 a10t, cs_A );
299
300 // FLA_Inv_scal_external( beta11, a10t );
301 bl1_dinvscalv( BLIS1_NO_CONJUGATE,
302 m_behind,
303 beta11,
304 a10t, cs_A );
305
306 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
307 bl1_dger( BLIS1_NO_CONJUGATE,
308 BLIS1_NO_CONJUGATE,
309 m_ahead,
310 m_behind,
311 buff_1,
312 b21, rs_B,
313 a10t, cs_A,
314 Y20, rs_Y, cs_Y );
315
316 // FLA_Copy_external( b21, y21 );
317 // FLA_Scal_external( alpha11, y21 );
318 bl1_dcopyv( BLIS1_NO_CONJUGATE,
319 m_ahead,
320 b21, rs_B,
321 y21, rs_Y );
322 bl1_dscalv( BLIS1_NO_CONJUGATE,
323 m_ahead,
324 alpha11,
325 y21, rs_Y );
326
327 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
328 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
329 bl1_dgemv( BLIS1_NO_TRANSPOSE,
330 BLIS1_CONJUGATE,
331 m_ahead,
332 m_behind,
333 buff_1,
334 B20, rs_B, cs_B,
335 a10t, cs_A,
336 buff_1,
337 y21, rs_Y );
338
339 /*------------------------------------------------------------*/
340
341 }
342
343 return FLA_SUCCESS;
344 }
345
346
347
FLA_Eig_gest_il_opc_var3(int m_AB,scomplex * buff_A,int rs_A,int cs_A,scomplex * buff_Y,int rs_Y,int cs_Y,scomplex * buff_B,int rs_B,int cs_B)348 FLA_Error FLA_Eig_gest_il_opc_var3( int m_AB,
349 scomplex* buff_A, int rs_A, int cs_A,
350 scomplex* buff_Y, int rs_Y, int cs_Y,
351 scomplex* buff_B, int rs_B, int cs_B )
352 {
353 scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
354 scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
355 scomplex* buff_m1h = FLA_COMPLEX_PTR( FLA_MINUS_ONE_HALF );
356 int i;
357
358 for ( i = 0; i < m_AB; ++i )
359 {
360 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
361 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
362 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
363 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
364
365 scomplex* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
366 scomplex* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
367 scomplex* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
368
369 scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
370 scomplex* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
371 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
372 scomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
373
374 int m_ahead = m_AB - i - 1;
375 int m_behind = i;
376
377 /*------------------------------------------------------------*/
378
379 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
380 bl1_caxpyv( BLIS1_NO_CONJUGATE,
381 m_behind,
382 buff_m1h,
383 y10t, cs_Y,
384 a10t, cs_A );
385
386 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
387 bl1_cdot2s( BLIS1_CONJUGATE,
388 m_behind,
389 buff_m1,
390 a10t, cs_A,
391 b10t, cs_B,
392 buff_1,
393 alpha11 );
394
395 // FLA_Inv_scal_external( beta11, alpha11 );
396 // FLA_Inv_scal_external( beta11, alpha11 );
397 bl1_cinvscals( beta11, alpha11 );
398 bl1_cinvscals( beta11, alpha11 );
399
400 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
401 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
402 bl1_cgemv( BLIS1_NO_TRANSPOSE,
403 BLIS1_CONJUGATE,
404 m_ahead,
405 m_behind,
406 buff_m1,
407 A20, rs_A, cs_A,
408 b10t, cs_B,
409 buff_1,
410 a21, rs_A );
411
412 // FLA_Inv_scal_external( beta11, a21 );
413 bl1_cinvscalv( BLIS1_NO_CONJUGATE,
414 m_ahead,
415 beta11,
416 a21, rs_A );
417
418 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
419 bl1_caxpyv( BLIS1_NO_CONJUGATE,
420 m_behind,
421 buff_m1h,
422 y10t, cs_Y,
423 a10t, cs_A );
424
425 // FLA_Inv_scal_external( beta11, a10t );
426 bl1_cinvscalv( BLIS1_NO_CONJUGATE,
427 m_behind,
428 beta11,
429 a10t, cs_A );
430
431 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
432 bl1_cger( BLIS1_NO_CONJUGATE,
433 BLIS1_NO_CONJUGATE,
434 m_ahead,
435 m_behind,
436 buff_1,
437 b21, rs_B,
438 a10t, cs_A,
439 Y20, rs_Y, cs_Y );
440
441 // FLA_Copy_external( b21, y21 );
442 // FLA_Scal_external( alpha11, y21 );
443 bl1_ccopyv( BLIS1_NO_CONJUGATE,
444 m_ahead,
445 b21, rs_B,
446 y21, rs_Y );
447 bl1_cscalv( BLIS1_NO_CONJUGATE,
448 m_ahead,
449 alpha11,
450 y21, rs_Y );
451
452 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
453 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
454 bl1_cgemv( BLIS1_NO_TRANSPOSE,
455 BLIS1_CONJUGATE,
456 m_ahead,
457 m_behind,
458 buff_1,
459 B20, rs_B, cs_B,
460 a10t, cs_A,
461 buff_1,
462 y21, rs_Y );
463
464 /*------------------------------------------------------------*/
465
466 }
467
468 return FLA_SUCCESS;
469 }
470
471
472
FLA_Eig_gest_il_opz_var3(int m_AB,dcomplex * buff_A,int rs_A,int cs_A,dcomplex * buff_Y,int rs_Y,int cs_Y,dcomplex * buff_B,int rs_B,int cs_B)473 FLA_Error FLA_Eig_gest_il_opz_var3( int m_AB,
474 dcomplex* buff_A, int rs_A, int cs_A,
475 dcomplex* buff_Y, int rs_Y, int cs_Y,
476 dcomplex* buff_B, int rs_B, int cs_B )
477 {
478 dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
479 dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
480 dcomplex* buff_m1h = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE_HALF );
481 int i;
482
483 for ( i = 0; i < m_AB; ++i )
484 {
485 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
486 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
487 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
488 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
489
490 dcomplex* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
491 dcomplex* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
492 dcomplex* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
493
494 dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
495 dcomplex* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
496 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
497 dcomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
498
499 int m_ahead = m_AB - i - 1;
500 int m_behind = i;
501
502 /*------------------------------------------------------------*/
503
504 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
505 bl1_zaxpyv( BLIS1_NO_CONJUGATE,
506 m_behind,
507 buff_m1h,
508 y10t, cs_Y,
509 a10t, cs_A );
510
511 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
512 bl1_zdot2s( BLIS1_CONJUGATE,
513 m_behind,
514 buff_m1,
515 a10t, cs_A,
516 b10t, cs_B,
517 buff_1,
518 alpha11 );
519
520 // FLA_Inv_scal_external( beta11, alpha11 );
521 // FLA_Inv_scal_external( beta11, alpha11 );
522 bl1_zinvscals( beta11, alpha11 );
523 bl1_zinvscals( beta11, alpha11 );
524
525 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
526 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
527 bl1_zgemv( BLIS1_NO_TRANSPOSE,
528 BLIS1_CONJUGATE,
529 m_ahead,
530 m_behind,
531 buff_m1,
532 A20, rs_A, cs_A,
533 b10t, cs_B,
534 buff_1,
535 a21, rs_A );
536
537 // FLA_Inv_scal_external( beta11, a21 );
538 bl1_zinvscalv( BLIS1_NO_CONJUGATE,
539 m_ahead,
540 beta11,
541 a21, rs_A );
542
543 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
544 bl1_zaxpyv( BLIS1_NO_CONJUGATE,
545 m_behind,
546 buff_m1h,
547 y10t, cs_Y,
548 a10t, cs_A );
549
550 // FLA_Inv_scal_external( beta11, a10t );
551 bl1_zinvscalv( BLIS1_NO_CONJUGATE,
552 m_behind,
553 beta11,
554 a10t, cs_A );
555
556 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
557 bl1_zger( BLIS1_NO_CONJUGATE,
558 BLIS1_NO_CONJUGATE,
559 m_ahead,
560 m_behind,
561 buff_1,
562 b21, rs_B,
563 a10t, cs_A,
564 Y20, rs_Y, cs_Y );
565
566 // FLA_Copy_external( b21, y21 );
567 // FLA_Scal_external( alpha11, y21 );
568 bl1_zcopyv( BLIS1_NO_CONJUGATE,
569 m_ahead,
570 b21, rs_B,
571 y21, rs_Y );
572 bl1_zscalv( BLIS1_NO_CONJUGATE,
573 m_ahead,
574 alpha11,
575 y21, rs_Y );
576
577 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
578 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
579 bl1_zgemv( BLIS1_NO_TRANSPOSE,
580 BLIS1_CONJUGATE,
581 m_ahead,
582 m_behind,
583 buff_1,
584 B20, rs_B, cs_B,
585 a10t, cs_A,
586 buff_1,
587 y21, rs_Y );
588
589 /*------------------------------------------------------------*/
590
591 }
592
593 return FLA_SUCCESS;
594 }
595
596