#include "FLAME.h" int Apdot_unb_var2( FLA_Obj alpha, FLA_Obj x, FLA_Obj y ) { FLA_Obj xT, x0, xB, chi1, x2; FLA_Obj yT, y0, yB, psi1, y2; FLA_Part_2x1( x, &xT, &xB, 0, FLA_BOTTOM ); FLA_Part_2x1( y, &yT, &yB, 0, FLA_BOTTOM ); while ( FLA_Obj_length( xB ) < FLA_Obj_length( x ) ){ FLA_Repart_2x1_to_3x1( xT, &x0, &chi1, /* ** */ /* **** */ xB, &x2, 1, FLA_TOP ); FLA_Repart_2x1_to_3x1( yT, &y0, &psi1, /* ** */ /* **** */ yB, &y2, 1, FLA_TOP ); /*------------------------------------------------------------*/ /*alpha = chi1 * psi1 + alpha;*/ FLA_Axpy(chi1, psi1, alpha); /*------------------------------------------------------------*/ FLA_Cont_with_3x1_to_2x1( &xT, x0, /* ** */ /* **** */ chi1, &xB, x2, FLA_BOTTOM ); FLA_Cont_with_3x1_to_2x1( &yT, y0, /* ** */ /* **** */ psi1, &yB, y2, FLA_BOTTOM ); } return FLA_SUCCESS; }
