// // Define object-based interface. // void bli_trsm4m( side_t side, obj_t* alpha, obj_t* a, obj_t* b ) { trsm_t* l_cntl; trsm_t* r_cntl; // Since 4m only applies to the complex domain, we use the regular // control tree for real domain cases. if ( bli_obj_is_complex( *b ) ) { l_cntl = trsm4m_l_cntl; r_cntl = trsm4m_r_cntl; } else { l_cntl = trsm_l_cntl; r_cntl = trsm_r_cntl; } bli_trsm_front( side, alpha, a, b, l_cntl, r_cntl ); }
void bli_trsm( side_t side, obj_t* alpha, obj_t* a, obj_t* b ) { num_t dt = bli_obj_datatype( *b ); // If an induced method is available (ie: implemented and enabled), // call it instead. if ( bli_trsmind_has_avail( dt ) ) { trsm_fp_t func = bli_trsmind_get_avail( dt ); return func( side, alpha, a, b ); } bli_trsm_front( side, alpha, a, b, trsm_l_cntl, trsm_r_cntl ); }
// // Define object-based interface. // void bli_trsm( side_t side, obj_t* alpha, obj_t* a, obj_t* b ) { if ( #ifdef BLIS_ENABLE_SCOMPLEX_VIA_4M bli_obj_is_scomplex( *b ) || #endif #ifdef BLIS_ENABLE_DCOMPLEX_VIA_4M bli_obj_is_dcomplex( *b ) || #endif FALSE ) return bli_trsm4m( side, alpha, a, b ); bli_trsm_front( side, alpha, a, b, trsm_l_cntl, trsm_r_cntl ); }