libflame revision_anchor
Functions
FLA_Sylv_unb_external.c File Reference

(r)

Functions

FLA_Error FLA_Sylv_unb_external (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_nn_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_nh_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_hn_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 
FLA_Error FLA_Sylv_hh_unb_ext (FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
 

Function Documentation

◆ FLA_Sylv_hh_unb_ext()

FLA_Error FLA_Sylv_hh_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)
163{
165}
FLA_Error FLA_Sylv_unb_external(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
Definition FLA_Sylv_unb_external.c:13
int i
Definition bl1_axmyv2.c:145

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_hh().

◆ FLA_Sylv_hn_unb_ext()

FLA_Error FLA_Sylv_hn_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_hn().

◆ FLA_Sylv_nh_unb_ext()

FLA_Error FLA_Sylv_nh_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_nh().

◆ FLA_Sylv_nn_unb_ext()

FLA_Error FLA_Sylv_nn_unb_ext ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)

References FLA_Sylv_unb_external(), and i.

Referenced by FLA_Sylv_nn().

◆ FLA_Sylv_unb_external()

FLA_Error FLA_Sylv_unb_external ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale 
)
14{
15 int info = 0;
16#ifdef FLA_ENABLE_EXTERNAL_LAPACK_INTERFACES
17 FLA_Datatype datatype;
18 int cs_A;
19 int cs_B;
20 int m_C, n_C, cs_C;
21 char blas_transa;
22 char blas_transb;
23
26
27 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
28 if ( FLA_Obj_has_zero_dim( B ) ) return FLA_SUCCESS;
29 if ( FLA_Obj_has_zero_dim( C ) ) return FLA_SUCCESS;
30
31 datatype = FLA_Obj_datatype( A );
32
33 m_C = FLA_Obj_length( C );
34 n_C = FLA_Obj_width( C );
36
38
40
43
44
45 switch( datatype ){
46
47 case FLA_FLOAT:
48 {
49 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
50 float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
51 float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
52 float *buff_C = ( float * ) FLA_FLOAT_PTR( C );
53 float *buff_scale = ( float * ) FLA_FLOAT_PTR( scale );
54
58 &m_C,
59 &n_C,
60 buff_A, &cs_A,
61 buff_B, &cs_B,
62 buff_C, &cs_C,
64 &info );
65
66 break;
67 }
68
69 case FLA_DOUBLE:
70 {
71 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
72 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
73 double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
74 double *buff_C = ( double * ) FLA_DOUBLE_PTR( C );
75 double *buff_scale = ( double * ) FLA_DOUBLE_PTR( scale );
76
80 &m_C,
81 &n_C,
82 buff_A, &cs_A,
83 buff_B, &cs_B,
84 buff_C, &cs_C,
86 &info );
87
88 break;
89 }
90
91 case FLA_COMPLEX:
92 {
93 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
97 float *buff_scale = ( float * ) FLA_COMPLEX_PTR( scale );
98
101 buff_isgn,
102 &m_C,
103 &n_C,
104 buff_A, &cs_A,
105 buff_B, &cs_B,
106 buff_C, &cs_C,
108 &info );
109
110 break;
111 }
112
114 {
115 int *buff_isgn = ( int * ) FLA_INT_PTR( isgn );
119 double *buff_scale = ( double * ) FLA_DOUBLE_COMPLEX_PTR( scale );
120
123 buff_isgn,
124 &m_C,
125 &n_C,
126 buff_A, &cs_A,
127 buff_B, &cs_B,
128 buff_C, &cs_C,
130 &info );
131
132 break;
133 }
134
135 }
136
137 // We don't provide a comprehensive strategy for handing scaling to avoid
138 // overflow, so we just force the scale argument to 1.0.
140#else
142#endif
143
144 return info;
145}
FLA_Error FLA_Sylv_check(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale)
Definition FLA_Sylv_check.c:13
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
int F77_ctrsyl(char *transa, char *transb, int *isgn, int *m, int *n, scomplex *a, int *lda, scomplex *b, int *ldb, scomplex *c, int *ldc, float *scale, int *info)
int F77_ztrsyl(char *transa, char *transb, int *isgn, int *m, int *n, dcomplex *a, int *lda, dcomplex *b, int *ldb, dcomplex *c, int *ldc, double *scale, int *info)
int F77_dtrsyl(char *transa, char *transb, int *isgn, int *m, int *n, double *a, int *lda, double *b, int *ldb, double *c, int *ldc, double *scale, int *info)
int F77_strsyl(char *transa, char *transb, int *isgn, int *m, int *n, float *a, int *lda, float *b, int *ldb, float *c, int *ldc, float *scale, int *info)
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
FLA_Bool FLA_Obj_has_zero_dim(FLA_Obj A)
Definition FLA_Query.c:400
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition FLA_Query.c:174
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
void FLA_Param_map_flame_to_netlib_trans(FLA_Trans trans, void *blas_trans)
Definition FLA_Param.c:15
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
FLA_Error FLA_Set(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Set.c:13
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

References F77_ctrsyl(), F77_dtrsyl(), F77_strsyl(), F77_ztrsyl(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_width(), FLA_ONE, FLA_Param_map_flame_to_netlib_trans(), FLA_Set(), FLA_Sylv_check(), and i.

Referenced by FLA_Sylv_blk_external(), FLA_Sylv_hh_unb_ext(), FLA_Sylv_hn_unb_ext(), FLA_Sylv_nh_unb_ext(), and FLA_Sylv_nn_unb_ext().