libflame  revision_anchor
Functions
FLA_Trinv_uu.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Trinv_uu_blk_var1 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_uu_blk_var2 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_uu_blk_var3 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_uu_blk_var4 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_uu_unb_var1 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_unb_var2 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_unb_var3 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_unb_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_opt_var1 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_ops_var1 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opd_var1 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opc_var1 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opz_var1 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opt_var2 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_ops_var2 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opd_var2 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opc_var2 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opz_var2 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opt_var3 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_ops_var3 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opd_var3 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opc_var3 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opz_var3 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opt_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_uu_ops_var4 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opd_var4 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opc_var4 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_uu_opz_var4 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Trinv_uu_blk_var1()

FLA_Error FLA_Trinv_uu_blk_var1 ( FLA_Obj  A,
fla_trinv_t cntl 
)

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trinv_internal(), FLA_Trmm_internal(), and FLA_Trsm_internal().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  dim_t b;
22 
23  FLA_Part_2x2( A, &ATL, &ATR,
24  &ABL, &ABR, 0, 0, FLA_TL );
25 
26  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27 
28  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
29 
30  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
31  /* ************* */ /* ******************** */
32  &A10, /**/ &A11, &A12,
33  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
34  b, b, FLA_BR );
35 
36  /*------------------------------------------------------------*/
37 
38  // A01 = A00 * A01;
39  FLA_Trmm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
40  FLA_ONE, A00, A01,
41  FLA_Cntl_sub_trmm( cntl ) );
42 
43  // A01 = -A01 / triuu( A11 );
44  FLA_Trsm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
45  FLA_MINUS_ONE, A11, A01,
46  FLA_Cntl_sub_trsm1( cntl ) );
47 
48  // A11 = inv( A11 );
49  FLA_Trinv_internal( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A11,
50  FLA_Cntl_sub_trinv( cntl ) );
51 
52  /*------------------------------------------------------------*/
53 
54  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
55  A10, A11, /**/ A12,
56  /* ************** */ /* ****************** */
57  &ABL, /**/ &ABR, A20, A21, /**/ A22,
58  FLA_TL );
59 
60  }
61 
62  return FLA_SUCCESS;
63 }
unsigned long dim_t
Definition: FLA_type_defs.h:71
FLA_Error FLA_Trinv_internal(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_internal.c:16
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
FLA_Error FLA_Trmm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trmm_t *cntl)
Definition: FLA_Trmm_internal.c:16
Definition: FLA_type_defs.h:158
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trsm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t *cntl)
Definition: FLA_Trsm_internal.c:16

◆ FLA_Trinv_uu_blk_var2()

FLA_Error FLA_Trinv_uu_blk_var2 ( FLA_Obj  A,
fla_trinv_t cntl 
)

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trinv_internal(), and FLA_Trsm_internal().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  dim_t b;
22 
23  FLA_Part_2x2( A, &ATL, &ATR,
24  &ABL, &ABR, 0, 0, FLA_TL );
25 
26  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27 
28  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
29 
30  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
31  /* ************* */ /* ******************** */
32  &A10, /**/ &A11, &A12,
33  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
34  b, b, FLA_BR );
35 
36  /*------------------------------------------------------------*/
37 
38  // A12 = A12 / triuu( A22 );
39  FLA_Trsm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
40  FLA_ONE, A22, A12,
41  FLA_Cntl_sub_trsm1( cntl ) );
42 
43  // A12 = -triuu( A11 ) \ A12;
44  FLA_Trsm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
45  FLA_MINUS_ONE, A11, A12,
46  FLA_Cntl_sub_trsm2( cntl ) );
47 
48  // A11 = inv( A11 );
49  FLA_Trinv_internal( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A11,
50  FLA_Cntl_sub_trinv( cntl ) );
51 
52  /*------------------------------------------------------------*/
53 
54  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
55  A10, A11, /**/ A12,
56  /* ************** */ /* ****************** */
57  &ABL, /**/ &ABR, A20, A21, /**/ A22,
58  FLA_TL );
59 
60  }
61 
62  return FLA_SUCCESS;
63 }
unsigned long dim_t
Definition: FLA_type_defs.h:71
FLA_Error FLA_Trinv_internal(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_internal.c:16
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: FLA_type_defs.h:158
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trsm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t *cntl)
Definition: FLA_Trsm_internal.c:16

◆ FLA_Trinv_uu_blk_var3()

FLA_Error FLA_Trinv_uu_blk_var3 ( FLA_Obj  A,
fla_trinv_t cntl 
)

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trinv_internal(), and FLA_Trsm_internal().

Referenced by FLA_Trinv_uu().

14 {
15  FLA_Obj ATL, ATR, A00, A01, A02,
16  ABL, ABR, A10, A11, A12,
17  A20, A21, A22;
18 
19  dim_t b;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
27 
28  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
29  /* ************* */ /* ******************** */
30  &A10, /**/ &A11, &A12,
31  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
32  b, b, FLA_BR );
33 
34  /*------------------------------------------------------------*/
35 
36  // A12 = -triuu( A11 ) \ A12;
37  FLA_Trsm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
38  FLA_MINUS_ONE, A11, A12,
39  FLA_Cntl_sub_trsm1( cntl ) );
40 
41  // A02 = A01 * A12 + A02;
42  FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE,
43  FLA_ONE, A01, A12, FLA_ONE, A02,
44  FLA_Cntl_sub_gemm( cntl ) );
45 
46  // A01 = A01 / triuu( A11 );
47  FLA_Trsm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
48  FLA_ONE, A11, A01,
49  FLA_Cntl_sub_trsm2( cntl ) );
50 
51  // A11 = inv( A11 );
52  FLA_Trinv_internal( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A11,
53  FLA_Cntl_sub_trinv( cntl ) );
54 
55  /*------------------------------------------------------------*/
56 
57  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
58  A10, A11, /**/ A12,
59  /* ************** */ /* ****************** */
60  &ABL, /**/ &ABR, A20, A21, /**/ A22,
61  FLA_TL );
62 
63  }
64 
65  return FLA_SUCCESS;
66 }
FLA_Error FLA_Gemm_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_gemm_t *cntl)
Definition: FLA_Gemm_internal.c:16
unsigned long dim_t
Definition: FLA_type_defs.h:71
FLA_Error FLA_Trinv_internal(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_internal.c:16
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: FLA_type_defs.h:158
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trsm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t *cntl)
Definition: FLA_Trsm_internal.c:16

◆ FLA_Trinv_uu_blk_var4()

FLA_Error FLA_Trinv_uu_blk_var4 ( FLA_Obj  A,
fla_trinv_t cntl 
)

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trinv_internal(), FLA_Trmm_internal(), and FLA_Trsm_internal().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  dim_t b;
22 
23  FLA_Part_2x2( A, &ATL, &ATR,
24  &ABL, &ABR, 0, 0, FLA_TL );
25 
26  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27 
28  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
29 
30  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
31  /* ************* */ /* ******************** */
32  &A10, /**/ &A11, &A12,
33  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
34  b, b, FLA_BR );
35 
36  /*------------------------------------------------------------*/
37 
38  // A12 = -A12 / triuu( A22 );
39  FLA_Trsm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
40  FLA_MINUS_ONE, A22, A12,
41  FLA_Cntl_sub_trsm1( cntl ) );
42 
43  // A02 = -A01 * A12 + A02;
44  FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE,
45  FLA_MINUS_ONE, A01, A12, FLA_ONE, A02,
46  FLA_Cntl_sub_gemm( cntl ) );
47 
48  // A01 = A00 * A01;
49  FLA_Trmm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
50  FLA_ONE, A00, A01,
51  FLA_Cntl_sub_trmm( cntl ) );
52 
53  // A11 = inv( A11 );
54  FLA_Trinv_internal( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A11,
55  FLA_Cntl_sub_trinv( cntl ) );
56 
57  /*------------------------------------------------------------*/
58 
59  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
60  A10, A11, /**/ A12,
61  /* ************** */ /* ****************** */
62  &ABL, /**/ &ABR, A20, A21, /**/ A22,
63  FLA_TL );
64 
65  }
66 
67  return FLA_SUCCESS;
68 }
FLA_Error FLA_Gemm_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_gemm_t *cntl)
Definition: FLA_Gemm_internal.c:16
unsigned long dim_t
Definition: FLA_type_defs.h:71
FLA_Error FLA_Trinv_internal(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_internal.c:16
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
FLA_Error FLA_Trmm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trmm_t *cntl)
Definition: FLA_Trmm_internal.c:16
Definition: FLA_type_defs.h:158
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trsm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t *cntl)
Definition: FLA_Trsm_internal.c:16

◆ FLA_Trinv_uu_opc_var1()

FLA_Error FLA_Trinv_uu_opc_var1 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)

References bl1_cscalv(), bl1_ctrmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var1().

154 {
155  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
156  int i;
157 
158  for ( i = 0; i < mn_A; ++i )
159  {
160  scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
161  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
162 
163  int mn_behind = i;
164 
165  /*------------------------------------------------------------*/
166 
167  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
171  mn_behind,
172  A00, rs_A, cs_A,
173  a01, rs_A );
174 
175  // FLA_Scal_external( FLA_MINUS_ONE, a01 );
177  mn_behind,
178  buff_m1,
179  a01, rs_A );
180 
181  /*------------------------------------------------------------*/
182 
183  }
184 
185  return FLA_SUCCESS;
186 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
Definition: blis_type_defs.h:132
int i
Definition: bl1_axmyv2.c:145
void bl1_ctrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition: bl1_trmv.c:99
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_opc_var2()

FLA_Error FLA_Trinv_uu_opc_var2 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)

References bl1_cscalv(), bl1_ctrsv(), BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var2().

154 {
155  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
156  int i;
157 
158  for ( i = 0; i < mn_A; ++i )
159  {
160  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
161  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
162 
163  int mn_ahead = mn_A - i - 1;
164 
165  /*------------------------------------------------------------*/
166 
167  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
171  mn_ahead,
172  A22, rs_A, cs_A,
173  a12t, cs_A );
174 
175  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
177  mn_ahead,
178  buff_m1,
179  a12t, cs_A );
180 
181  /*------------------------------------------------------------*/
182 
183  }
184 
185  return FLA_SUCCESS;
186 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_ctrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition: bl1_trsv.c:99
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:132
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_opc_var3()

FLA_Error FLA_Trinv_uu_opc_var3 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)

References bl1_cger(), bl1_cscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var3().

162 {
163  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
164  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
165  int i;
166 
167  for ( i = 0; i < mn_A; ++i )
168  {
169  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
170  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
171  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
172 
173  int mn_ahead = mn_A - i - 1;
174  int mn_behind = i;
175 
176  /*------------------------------------------------------------*/
177 
178  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
180  mn_ahead,
181  buff_m1,
182  a12t, cs_A );
183 
184  // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
187  mn_behind,
188  mn_ahead,
189  buff_1,
190  a01, rs_A,
191  a12t, cs_A,
192  A02, rs_A, cs_A );
193 
194  /*------------------------------------------------------------*/
195 
196  }
197 
198  return FLA_SUCCESS;
199 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: blis_type_defs.h:132
void bl1_cger(conj1_t conjx, conj1_t conjy, int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:111
int i
Definition: bl1_axmyv2.c:145

◆ FLA_Trinv_uu_opc_var4()

FLA_Error FLA_Trinv_uu_opc_var4 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)

References bl1_cger(), bl1_cscalv(), bl1_ctrmv(), bl1_ctrsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var4().

196 {
197  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
198  int i;
199 
200  for ( i = 0; i < mn_A; ++i )
201  {
202  scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
203  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
204  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
205  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
206  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
207 
208  int mn_ahead = mn_A - i - 1;
209  int mn_behind = i;
210 
211  /*------------------------------------------------------------*/
212 
213  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
214  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
216  mn_ahead,
217  buff_m1,
218  a12t, cs_A );
222  mn_ahead,
223  A22, rs_A, cs_A,
224  a12t, cs_A );
225 
226  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
229  mn_behind,
230  mn_ahead,
231  buff_m1,
232  a01, rs_A,
233  a12t, cs_A,
234  A02, rs_A, cs_A );
235 
236  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
240  mn_behind,
241  A00, rs_A, cs_A,
242  a01, rs_A );
243 
244  /*------------------------------------------------------------*/
245 
246  }
247 
248  return FLA_SUCCESS;
249 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_ctrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition: bl1_trsv.c:99
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
Definition: blis_type_defs.h:132
void bl1_cger(conj1_t conjx, conj1_t conjy, int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:111
int i
Definition: bl1_axmyv2.c:145
void bl1_ctrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition: bl1_trmv.c:99
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_opd_var1()

FLA_Error FLA_Trinv_uu_opd_var1 ( int  mn_A,
double *  A,
int  rs_A,
int  cs_A 
)

References bl1_dscalv(), bl1_dtrmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var1().

116 {
117  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
118  int i;
119 
120  for ( i = 0; i < mn_A; ++i )
121  {
122  double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
123  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
124 
125  int mn_behind = i;
126 
127  /*------------------------------------------------------------*/
128 
129  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
133  mn_behind,
134  A00, rs_A, cs_A,
135  a01, rs_A );
136 
137  // FLA_Scal_external( FLA_MINUS_ONE, a01 );
139  mn_behind,
140  buff_m1,
141  a01, rs_A );
142 
143  /*------------------------------------------------------------*/
144 
145  }
146 
147  return FLA_SUCCESS;
148 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
void bl1_dtrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition: bl1_trmv.c:56
Definition: blis_type_defs.h:75
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
Definition: blis_type_defs.h:54
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_opd_var2()

FLA_Error FLA_Trinv_uu_opd_var2 ( int  mn_A,
double *  A,
int  rs_A,
int  cs_A 
)

References bl1_dscalv(), bl1_dtrsv(), BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var2().

116 {
117  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
118  int i;
119 
120  for ( i = 0; i < mn_A; ++i )
121  {
122  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
123  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
124 
125  int mn_ahead = mn_A - i - 1;
126 
127  /*------------------------------------------------------------*/
128 
129  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
133  mn_ahead,
134  A22, rs_A, cs_A,
135  a12t, cs_A );
136 
137  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
139  mn_ahead,
140  buff_m1,
141  a12t, cs_A );
142 
143  /*------------------------------------------------------------*/
144 
145  }
146 
147  return FLA_SUCCESS;
148 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
void bl1_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition: bl1_trsv.c:56
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_opd_var3()

FLA_Error FLA_Trinv_uu_opd_var3 ( int  mn_A,
double *  A,
int  rs_A,
int  cs_A 
)

References bl1_dger(), bl1_dscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var3().

119 {
120  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
121  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
122  int i;
123 
124  for ( i = 0; i < mn_A; ++i )
125  {
126  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
127  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
128  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
129 
130  int mn_ahead = mn_A - i - 1;
131  int mn_behind = i;
132 
133  /*------------------------------------------------------------*/
134 
135  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
137  mn_ahead,
138  buff_m1,
139  a12t, cs_A );
140 
141  // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
144  mn_behind,
145  mn_ahead,
146  buff_1,
147  a01, rs_A,
148  a12t, cs_A,
149  A02, rs_A, cs_A );
150 
151  /*------------------------------------------------------------*/
152 
153  }
154 
155  return FLA_SUCCESS;
156 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_dger(conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition: bl1_ger.c:62
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
int i
Definition: bl1_axmyv2.c:145

◆ FLA_Trinv_uu_opd_var4()

FLA_Error FLA_Trinv_uu_opd_var4 ( int  mn_A,
double *  A,
int  rs_A,
int  cs_A 
)

References bl1_dger(), bl1_dscalv(), bl1_dtrmv(), bl1_dtrsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var4().

137 {
138  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
139  int i;
140 
141  for ( i = 0; i < mn_A; ++i )
142  {
143  double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
144  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
145  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
146  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
147  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
148 
149  int mn_ahead = mn_A - i - 1;
150  int mn_behind = i;
151 
152  /*------------------------------------------------------------*/
153 
154  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
155  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
157  mn_ahead,
158  buff_m1,
159  a12t, cs_A );
163  mn_ahead,
164  A22, rs_A, cs_A,
165  a12t, cs_A );
166 
167  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
170  mn_behind,
171  mn_ahead,
172  buff_m1,
173  a01, rs_A,
174  a12t, cs_A,
175  A02, rs_A, cs_A );
176 
177  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
181  mn_behind,
182  A00, rs_A, cs_A,
183  a01, rs_A );
184 
185  /*------------------------------------------------------------*/
186 
187  }
188 
189  return FLA_SUCCESS;
190 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
void bl1_dtrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition: bl1_trmv.c:56
Definition: blis_type_defs.h:55
void bl1_dger(conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition: bl1_ger.c:62
Definition: blis_type_defs.h:75
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
Definition: blis_type_defs.h:54
void bl1_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition: bl1_trsv.c:56
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_ops_var1()

FLA_Error FLA_Trinv_uu_ops_var1 ( int  mn_A,
float *  A,
int  rs_A,
int  cs_A 
)

References bl1_sscalv(), bl1_strmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var1().

78 {
79  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
80  int i;
81 
82  for ( i = 0; i < mn_A; ++i )
83  {
84  float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
85  float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
86 
87  int mn_behind = i;
88 
89  /*------------------------------------------------------------*/
90 
91  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
95  mn_behind,
96  A00, rs_A, cs_A,
97  a01, rs_A );
98 
99  // FLA_Scal_external( FLA_MINUS_ONE, a01 );
101  mn_behind,
102  buff_m1,
103  a01, rs_A );
104 
105  /*------------------------------------------------------------*/
106 
107  }
108 
109  return FLA_SUCCESS;
110 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
void bl1_strmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition: bl1_trmv.c:13
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_ops_var2()

FLA_Error FLA_Trinv_uu_ops_var2 ( int  mn_A,
float *  A,
int  rs_A,
int  cs_A 
)

References bl1_sscalv(), bl1_strsv(), BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var2().

78 {
79  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
80  int i;
81 
82  for ( i = 0; i < mn_A; ++i )
83  {
84  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
85  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
86 
87  int mn_ahead = mn_A - i - 1;
88 
89  /*------------------------------------------------------------*/
90 
91  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
95  mn_ahead,
96  A22, rs_A, cs_A,
97  a12t, cs_A );
98 
99  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
101  mn_ahead,
102  buff_m1,
103  a12t, cs_A );
104 
105  /*------------------------------------------------------------*/
106 
107  }
108 
109  return FLA_SUCCESS;
110 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
void bl1_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition: bl1_trsv.c:13
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_ops_var3()

FLA_Error FLA_Trinv_uu_ops_var3 ( int  mn_A,
float *  A,
int  rs_A,
int  cs_A 
)

References bl1_sger(), bl1_sscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var3().

76 {
77  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
78  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
79  int i;
80 
81  for ( i = 0; i < mn_A; ++i )
82  {
83  float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
84  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
85  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
86 
87  int mn_ahead = mn_A - i - 1;
88  int mn_behind = i;
89 
90  /*------------------------------------------------------------*/
91 
92  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
94  mn_ahead,
95  buff_m1,
96  a12t, cs_A );
97 
98  // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
101  mn_behind,
102  mn_ahead,
103  buff_1,
104  a01, rs_A,
105  a12t, cs_A,
106  A02, rs_A, cs_A );
107 
108  /*------------------------------------------------------------*/
109 
110  }
111 
112  return FLA_SUCCESS;
113 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_sger(conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition: bl1_ger.c:13
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145

◆ FLA_Trinv_uu_ops_var4()

FLA_Error FLA_Trinv_uu_ops_var4 ( int  mn_A,
float *  A,
int  rs_A,
int  cs_A 
)

References bl1_sger(), bl1_sscalv(), bl1_strmv(), bl1_strsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var4().

78 {
79  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
80  int i;
81 
82  for ( i = 0; i < mn_A; ++i )
83  {
84  float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
85  float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
86  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
87  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
88  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
89 
90  int mn_ahead = mn_A - i - 1;
91  int mn_behind = i;
92 
93  /*------------------------------------------------------------*/
94 
95  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
96  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
98  mn_ahead,
99  buff_m1,
100  a12t, cs_A );
104  mn_ahead,
105  A22, rs_A, cs_A,
106  a12t, cs_A );
107 
108  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
111  mn_behind,
112  mn_ahead,
113  buff_m1,
114  a01, rs_A,
115  a12t, cs_A,
116  A02, rs_A, cs_A );
117 
118  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
122  mn_behind,
123  A00, rs_A, cs_A,
124  a01, rs_A );
125 
126  /*------------------------------------------------------------*/
127 
128  }
129 
130  return FLA_SUCCESS;
131 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
void bl1_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition: bl1_trsv.c:13
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
void bl1_strmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition: bl1_trmv.c:13
void bl1_sger(conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition: bl1_ger.c:13
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63

◆ FLA_Trinv_uu_opt_var1()

FLA_Error FLA_Trinv_uu_opt_var1 ( FLA_Obj  A)

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_uu_opc_var1(), FLA_Trinv_uu_opd_var1(), FLA_Trinv_uu_ops_var1(), and FLA_Trinv_uu_opz_var1().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Datatype datatype;
18  int mn_A;
19  int rs_A, cs_A;
20 
21  datatype = FLA_Obj_datatype( A );
22 
23  mn_A = FLA_Obj_length( A );
24  rs_A = FLA_Obj_row_stride( A );
25  cs_A = FLA_Obj_col_stride( A );
26 
27 
28  switch ( datatype )
29  {
30  case FLA_FLOAT:
31  {
32  float* buff_A = FLA_FLOAT_PTR( A );
33 
35  buff_A, rs_A, cs_A );
36 
37  break;
38  }
39 
40  case FLA_DOUBLE:
41  {
42  double* buff_A = FLA_DOUBLE_PTR( A );
43 
45  buff_A, rs_A, cs_A );
46 
47  break;
48  }
49 
50  case FLA_COMPLEX:
51  {
52  scomplex* buff_A = FLA_COMPLEX_PTR( A );
53 
55  buff_A, rs_A, cs_A );
56 
57  break;
58  }
59 
60  case FLA_DOUBLE_COMPLEX:
61  {
62  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
63 
65  buff_A, rs_A, cs_A );
66 
67  break;
68  }
69  }
70 
71  return FLA_SUCCESS;
72 }
FLA_Error FLA_Trinv_uu_opz_var1(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var1.c:190
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
FLA_Error FLA_Trinv_uu_opc_var1(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var1.c:152
FLA_Error FLA_Trinv_uu_opd_var1(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var1.c:114
Definition: blis_type_defs.h:132
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trinv_uu_ops_var1(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var1.c:76
Definition: blis_type_defs.h:137

◆ FLA_Trinv_uu_opt_var2()

FLA_Error FLA_Trinv_uu_opt_var2 ( FLA_Obj  A)

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_uu_opc_var2(), FLA_Trinv_uu_opd_var2(), FLA_Trinv_uu_ops_var2(), and FLA_Trinv_uu_opz_var2().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Datatype datatype;
18  int mn_A;
19  int rs_A, cs_A;
20 
21  datatype = FLA_Obj_datatype( A );
22 
23  mn_A = FLA_Obj_length( A );
24  rs_A = FLA_Obj_row_stride( A );
25  cs_A = FLA_Obj_col_stride( A );
26 
27 
28  switch ( datatype )
29  {
30  case FLA_FLOAT:
31  {
32  float* buff_A = FLA_FLOAT_PTR( A );
33 
35  buff_A, rs_A, cs_A );
36 
37  break;
38  }
39 
40  case FLA_DOUBLE:
41  {
42  double* buff_A = FLA_DOUBLE_PTR( A );
43 
45  buff_A, rs_A, cs_A );
46 
47  break;
48  }
49 
50  case FLA_COMPLEX:
51  {
52  scomplex* buff_A = FLA_COMPLEX_PTR( A );
53 
55  buff_A, rs_A, cs_A );
56 
57  break;
58  }
59 
60  case FLA_DOUBLE_COMPLEX:
61  {
62  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
63 
65  buff_A, rs_A, cs_A );
66 
67  break;
68  }
69  }
70 
71  return FLA_SUCCESS;
72 }
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Error FLA_Trinv_uu_opz_var2(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var2.c:190
FLA_Error FLA_Trinv_uu_opd_var2(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var2.c:114
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
FLA_Error FLA_Trinv_uu_opc_var2(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var2.c:152
Definition: blis_type_defs.h:132
FLA_Error FLA_Trinv_uu_ops_var2(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var2.c:76
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Trinv_uu_opt_var3()

FLA_Error FLA_Trinv_uu_opt_var3 ( FLA_Obj  A)

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_uu_opc_var3(), FLA_Trinv_uu_opd_var3(), FLA_Trinv_uu_ops_var3(), and FLA_Trinv_uu_opz_var3().

Referenced by FLA_Trinv_uu().

14 {
15  FLA_Datatype datatype;
16  int mn_A;
17  int rs_A, cs_A;
18 
19  datatype = FLA_Obj_datatype( A );
20 
21  mn_A = FLA_Obj_length( A );
22  rs_A = FLA_Obj_row_stride( A );
23  cs_A = FLA_Obj_col_stride( A );
24 
25 
26  switch ( datatype )
27  {
28  case FLA_FLOAT:
29  {
30  float* buff_A = FLA_FLOAT_PTR( A );
31 
33  buff_A, rs_A, cs_A );
34 
35  break;
36  }
37 
38  case FLA_DOUBLE:
39  {
40  double* buff_A = FLA_DOUBLE_PTR( A );
41 
43  buff_A, rs_A, cs_A );
44 
45  break;
46  }
47 
48  case FLA_COMPLEX:
49  {
50  scomplex* buff_A = FLA_COMPLEX_PTR( A );
51 
53  buff_A, rs_A, cs_A );
54 
55  break;
56  }
57 
58  case FLA_DOUBLE_COMPLEX:
59  {
60  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
61 
63  buff_A, rs_A, cs_A );
64 
65  break;
66  }
67  }
68 
69  return FLA_SUCCESS;
70 }
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
FLA_Error FLA_Trinv_uu_ops_var3(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var3.c:74
Definition: blis_type_defs.h:132
FLA_Error FLA_Trinv_uu_opc_var3(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var3.c:160
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trinv_uu_opz_var3(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var3.c:203
Definition: blis_type_defs.h:137
FLA_Error FLA_Trinv_uu_opd_var3(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var3.c:117

◆ FLA_Trinv_uu_opt_var4()

FLA_Error FLA_Trinv_uu_opt_var4 ( FLA_Obj  A)

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_uu_opc_var4(), FLA_Trinv_uu_opd_var4(), FLA_Trinv_uu_ops_var4(), and FLA_Trinv_uu_opz_var4().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Datatype datatype;
18  int mn_A;
19  int rs_A, cs_A;
20 
21  datatype = FLA_Obj_datatype( A );
22 
23  mn_A = FLA_Obj_length( A );
24  rs_A = FLA_Obj_row_stride( A );
25  cs_A = FLA_Obj_col_stride( A );
26 
27 
28  switch ( datatype )
29  {
30  case FLA_FLOAT:
31  {
32  float* buff_A = FLA_FLOAT_PTR( A );
33 
35  buff_A, rs_A, cs_A );
36 
37  break;
38  }
39 
40  case FLA_DOUBLE:
41  {
42  double* buff_A = FLA_DOUBLE_PTR( A );
43 
45  buff_A, rs_A, cs_A );
46 
47  break;
48  }
49 
50  case FLA_COMPLEX:
51  {
52  scomplex* buff_A = FLA_COMPLEX_PTR( A );
53 
55  buff_A, rs_A, cs_A );
56 
57  break;
58  }
59 
60  case FLA_DOUBLE_COMPLEX:
61  {
62  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
63 
65  buff_A, rs_A, cs_A );
66 
67  break;
68  }
69  }
70 
71  return FLA_SUCCESS;
72 }
FLA_Error FLA_Trinv_uu_ops_var4(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var4.c:76
FLA_Error FLA_Trinv_uu_opd_var4(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var4.c:135
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
Definition: blis_type_defs.h:132
FLA_Error FLA_Trinv_uu_opc_var4(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var4.c:194
int FLA_Datatype
Definition: FLA_type_defs.h:49
FLA_Error FLA_Trinv_uu_opz_var4(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_uu_opt_var4.c:253
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Trinv_uu_opz_var1()

FLA_Error FLA_Trinv_uu_opz_var1 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)

References bl1_zscalv(), bl1_ztrmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var1().

192 {
193  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
194  int i;
195 
196  for ( i = 0; i < mn_A; ++i )
197  {
198  dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
199  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
200 
201  int mn_behind = i;
202 
203  /*------------------------------------------------------------*/
204 
205  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
209  mn_behind,
210  A00, rs_A, cs_A,
211  a01, rs_A );
212 
213  // FLA_Scal_external( FLA_MINUS_ONE, a01 );
215  mn_behind,
216  buff_m1,
217  a01, rs_A );
218 
219  /*------------------------------------------------------------*/
220 
221  }
222 
223  return FLA_SUCCESS;
224 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
void bl1_ztrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition: bl1_trmv.c:177
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63
Definition: blis_type_defs.h:137

◆ FLA_Trinv_uu_opz_var2()

FLA_Error FLA_Trinv_uu_opz_var2 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)

References bl1_zscalv(), bl1_ztrsv(), BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var2().

192 {
193  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
194  int i;
195 
196  for ( i = 0; i < mn_A; ++i )
197  {
198  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
199  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
200 
201  int mn_ahead = mn_A - i - 1;
202 
203  /*------------------------------------------------------------*/
204 
205  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
209  mn_ahead,
210  A22, rs_A, cs_A,
211  a12t, cs_A );
212 
213  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
215  mn_ahead,
216  buff_m1,
217  a12t, cs_A );
218 
219  /*------------------------------------------------------------*/
220 
221  }
222 
223  return FLA_SUCCESS;
224 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63
Definition: blis_type_defs.h:137
void bl1_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition: bl1_trsv.c:177

◆ FLA_Trinv_uu_opz_var3()

FLA_Error FLA_Trinv_uu_opz_var3 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)

References bl1_zger(), bl1_zscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var3().

205 {
206  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
207  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
208  int i;
209 
210  for ( i = 0; i < mn_A; ++i )
211  {
212  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
213  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
214  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
215 
216  int mn_ahead = mn_A - i - 1;
217  int mn_behind = i;
218 
219  /*------------------------------------------------------------*/
220 
221  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
223  mn_ahead,
224  buff_m1,
225  a12t, cs_A );
226 
227  // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
230  mn_behind,
231  mn_ahead,
232  buff_1,
233  a01, rs_A,
234  a12t, cs_A,
235  A02, rs_A, cs_A );
236 
237  /*------------------------------------------------------------*/
238 
239  }
240 
241  return FLA_SUCCESS;
242 }
void bl1_zger(conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:194
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:137

◆ FLA_Trinv_uu_opz_var4()

FLA_Error FLA_Trinv_uu_opz_var4 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)

References bl1_zger(), bl1_zscalv(), bl1_ztrmv(), bl1_ztrsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_uu_opt_var4().

255 {
256  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
257  int i;
258 
259  for ( i = 0; i < mn_A; ++i )
260  {
261  dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
262  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
263  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
264  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
265  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
266 
267  int mn_ahead = mn_A - i - 1;
268  int mn_behind = i;
269 
270  /*------------------------------------------------------------*/
271 
272  // FLA_Scal_external( FLA_MINUS_ONE, a12t );
273  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
275  mn_ahead,
276  buff_m1,
277  a12t, cs_A );
281  mn_ahead,
282  A22, rs_A, cs_A,
283  a12t, cs_A );
284 
285  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
288  mn_behind,
289  mn_ahead,
290  buff_m1,
291  a01, rs_A,
292  a12t, cs_A,
293  A02, rs_A, cs_A );
294 
295  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
299  mn_behind,
300  A00, rs_A, cs_A,
301  a01, rs_A );
302 
303  /*------------------------------------------------------------*/
304 
305  }
306 
307  return FLA_SUCCESS;
308 }
void bl1_zger(conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:194
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
void bl1_ztrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition: bl1_trmv.c:177
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:63
Definition: blis_type_defs.h:137
void bl1_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition: bl1_trsv.c:177

◆ FLA_Trinv_uu_unb_var1()

FLA_Error FLA_Trinv_uu_unb_var1 ( FLA_Obj  A)

References FLA_Cont_with_3x3_to_2x2(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and FLA_Trmv_external().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27  /* ************* */ /* ************************** */
28  &a10t, /**/ &alpha11, &a12t,
29  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30  1, 1, FLA_BR );
31 
32  /*------------------------------------------------------------*/
33 
34  // a01 = triuu( A00 ) * a01;
35  FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
36 
37  // a01 = -a01;
39 
40  /*------------------------------------------------------------*/
41 
42  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
43  a10t, alpha11, /**/ a12t,
44  /* ************** */ /* ************************ */
45  &ABL, /**/ &ABR, A20, a21, /**/ A22,
46  FLA_TL );
47 
48  }
49 
50  return FLA_SUCCESS;
51 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
Definition: FLA_type_defs.h:158
FLA_Error FLA_Trmv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition: FLA_Trmv_external.c:13
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116

◆ FLA_Trinv_uu_unb_var2()

FLA_Error FLA_Trinv_uu_unb_var2 ( FLA_Obj  A)

References FLA_Cont_with_3x3_to_2x2(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and FLA_Trsv_external().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27  /* ************* */ /* ************************** */
28  &a10t, /**/ &alpha11, &a12t,
29  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30  1, 1, FLA_BR );
31 
32  /*------------------------------------------------------------*/
33 
34  // a12t = a12t / triuu( A22' );
35  FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
36 
37  // a12t = -a12t;
39 
40  /*------------------------------------------------------------*/
41 
42  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
43  a10t, alpha11, /**/ a12t,
44  /* ************** */ /* ************************ */
45  &ABL, /**/ &ABR, A20, a21, /**/ A22,
46  FLA_TL );
47 
48  }
49 
50  return FLA_SUCCESS;
51 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
Definition: FLA_type_defs.h:158
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trsv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition: FLA_Trsv_external.c:13

◆ FLA_Trinv_uu_unb_var3()

FLA_Error FLA_Trinv_uu_unb_var3 ( FLA_Obj  A)

References FLA_Cont_with_3x3_to_2x2(), FLA_Ger_external(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), and FLA_Scal_external().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27  /* ************* */ /* ************************** */
28  &a10t, /**/ &alpha11, &a12t,
29  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30  1, 1, FLA_BR );
31 
32  /*------------------------------------------------------------*/
33 
34  // a12t = -a12t;
36 
37  // A02 = a01 * a12t + A02;
38  FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
39 
40  /*------------------------------------------------------------*/
41 
42  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
43  a10t, alpha11, /**/ a12t,
44  /* ************** */ /* ************************ */
45  &ABL, /**/ &ABR, A20, a21, /**/ A22,
46  FLA_TL );
47 
48  }
49 
50  return FLA_SUCCESS;
51 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: FLA_type_defs.h:158
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
FLA_Error FLA_Ger_external(FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition: FLA_Ger_external.c:13
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116

◆ FLA_Trinv_uu_unb_var4()

FLA_Error FLA_Trinv_uu_unb_var4 ( FLA_Obj  A)

References FLA_Cont_with_3x3_to_2x2(), FLA_Ger_external(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_Trmv_external(), and FLA_Trsv_external().

Referenced by FLA_Trinv_uu().

16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27  /* ************* */ /* ************************** */
28  &a10t, /**/ &alpha11, &a12t,
29  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30  1, 1, FLA_BR );
31 
32  /*------------------------------------------------------------*/
33 
34  // a12t = a12t / triuu( A22' );
36  FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A22, a12t );
37 
38  // A02 = a01 * a12t + A02;
39  FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
40 
41  // a01 = triuu( A00 ) * a01;
42  FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
43 
44  /*------------------------------------------------------------*/
45 
46  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
47  a10t, alpha11, /**/ a12t,
48  /* ************** */ /* ************************ */
49  &ABL, /**/ &ABR, A20, a21, /**/ A22,
50  FLA_TL );
51 
52  }
53 
54  return FLA_SUCCESS;
55 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
Definition: FLA_type_defs.h:158
FLA_Error FLA_Trmv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition: FLA_Trmv_external.c:13
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
FLA_Error FLA_Ger_external(FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition: FLA_Ger_external.c:13
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Error FLA_Trsv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition: FLA_Trsv_external.c:13