function [ A_out ] = LHAL_blk_var1( A, L, nb_alg )

  [ ATL, ATR, ...
    ABL, ABR ] = FLA_Part_2x2( A, ...
                               0, 0, 'FLA_TL' );

  [ LTL, LTR, ...
    LBL, LBR ] = FLA_Part_2x2( L, ...
                               0, 0, 'FLA_TL' );

  while ( size( ATL, 1 ) < size( A, 1 ) )

    b = min( size( ABR, 1 ), nb_alg );

    [ A00, A01, A02, ...
      A10, A11, A12, ...
      A20, A21, A22 ] = FLA_Repart_2x2_to_3x3( ATL, ATR, ...
                                               ABL, ABR, ...
                                               b, b, 'FLA_BR' );

    [ L00, L01, L02, ...
      L10, L11, L12, ...
      L20, L21, L22 ] = FLA_Repart_2x2_to_3x3( LTL, LTR, ...
                                               LBL, LBR, ...
                                               b, b, 'FLA_BR' );

    %------------------------------------------------------------%

    Y10 = Symm_l( A11 ) * L10 ;                  % SYMM
    A10 = A10 * tril( L00 );                     % TRMM
    A10 = A10 + 0.5 * Y10;
    A00 = A00 + tril( A10' * L10 + L10' * A10 ); % SYR2K
    A10 = A10 + 0.5 * Y10;
    A10 = tril( L11 )'  * A10;                   % TRMM
    A11 = LHAL_unb_var1( A11, L11 );

    %------------------------------------------------------------%

    [ ATL, ATR, ...
      ABL, ABR ] = FLA_Cont_with_3x3_to_2x2( A00, A01, A02, ...
                                             A10, A11, A12, ...
                                             A20, A21, A22, ...
                                             'FLA_TL' );

    [ LTL, LTR, ...
      LBL, LBR ] = FLA_Cont_with_3x3_to_2x2( L00, L01, L02, ...
                                             L10, L11, L12, ...
                                             L20, L21, L22, ...
                                             'FLA_TL' );

  end

  A_out = [ ATL, ATR
            ABL, ABR ];

return
