function [ A_out ] = InvLAInvLH_blk_var3( A, L, Y, 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' );

  [ YTL, YTR, ...
    YBL, YBR ] = FLA_Part_2x2( Y, ...
                               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' );

    [ Y00, Y01, Y02, ...
      Y10, Y11, Y12, ...
      Y20, Y21, Y22 ] = FLA_Repart_2x2_to_3x3( YTL, YTR, ...
                                               YBL, YBR, ...
                                               b, b, 'FLA_BR' );

    %------------------------------------------------------------%
    
    A10 = A10 - 0.5 * Y10;
    A11 = A11 - tril( A10 * L10' + L10 * A10' );  % SYR2K
    A11 = InvLAInvLH_unb_var3( A11, L11, Y11 );
    A21 = A21 - A20 * L10';                       % GEMM
    A21 = A21 * inv( tril( L11 ) ');              % TRSM
    A10 = A10 - 0.5 * Y10;                        
    A10 = tril( L11 ) \ A10;                      % TRSM
    Y20 = Y20 + L21 * A10;                        % GEMM
    Y21 = L21 * Symm_l( A11 );                    % SYMM
    Y21 = Y21 + L20 * A10';                       % GEMM
    
    %------------------------------------------------------------%

    [ 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' );

    [ YTL, YTR, ...
      YBL, YBR ] = FLA_Cont_with_3x3_to_2x2( Y00, Y01, Y02, ...
                                             Y10, Y11, Y12, ...
                                             Y20, Y21, Y22, ...
                                             'FLA_TL' );

  end

  A_out = [ ATL, ATR
            ABL, ABR ];

return
