#include "FLAME.h" int Apdot_blk_var2( FLA_Obj alpha, FLA_Obj x, FLA_Obj y, int nb_alg ) { FLA_Obj xT, x0, xB, x1, x2; FLA_Obj yT, y0, yB, y1, y2; int b; 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 ) ){ b = min( FLA_Obj_length( xT ), nb_alg ); FLA_Repart_2x1_to_3x1( xT, &x0, &x1, /* ** */ /* ** */ xB, &x2, b, FLA_TOP ); FLA_Repart_2x1_to_3x1( yT, &y0, &y1, /* ** */ /* ** */ yB, &y2, b, FLA_TOP ); /*------------------------------------------------------------*/ Apdot_unb_var2(alpha, x1, y1); /*------------------------------------------------------------*/ FLA_Cont_with_3x1_to_2x1( &xT, x0, /* ** */ /* ** */ x1, &xB, x2, FLA_BOTTOM ); FLA_Cont_with_3x1_to_2x1( &yT, y0, /* ** */ /* ** */ y1, &yB, y2, FLA_BOTTOM ); } return FLA_SUCCESS; }
