596 int is_ident23_k1, is_ident34_k1;
597 int is_ident12_k2, is_ident23_k2;
606 if ( nG < 2*k_minus_1 || k_G == 1 )
612 buff_A, rs_A, cs_A );
619 for ( j = -1; j < k_minus_1; j += n_fuse )
622 n_iter = nG_app / k_fuse;
625 for ( i = 0, k = 0, g = j; i < n_iter; ++
i, k += k_fuse, g -= n_fuse )
627 g23_k1 = buff_G + (g )*rs_G + (k )*cs_G;
628 g34_k1 = buff_G + (g + 1)*rs_G + (k )*cs_G;
629 g12_k2 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
630 g23_k2 = buff_G + (g )*rs_G + (k + 1)*cs_G;
631 a1 = buff_A + (g - 1)*cs_A;
632 a2 = buff_A + (g )*cs_A;
633 a3 = buff_A + (g + 1)*cs_A;
634 a4 = buff_A + (g + 2)*cs_A;
636 gamma23_k1 = g23_k1->
real;
637 sigma23_k1 = g23_k1->
imag;
638 gamma34_k1 = g34_k1->
real;
639 sigma34_k1 = g34_k1->
imag;
640 gamma12_k2 = g12_k2->
real;
641 sigma12_k2 = g12_k2->
imag;
642 gamma23_k2 = g23_k2->
real;
643 sigma23_k2 = g23_k2->
imag;
645 is_ident23_k1 = ( gamma23_k1 == one && sigma23_k1 == zero );
646 is_ident34_k1 = ( gamma34_k1 == one && sigma34_k1 == zero );
647 is_ident12_k2 = ( gamma12_k2 == one && sigma12_k2 == zero );
648 is_ident23_k2 = ( gamma23_k2 == one && sigma23_k2 == zero );
649 has_ident = ( is_ident23_k1 || is_ident34_k1 ||
650 is_ident12_k2 || is_ident23_k2 );
656 if ( !is_ident23_k1 )
657 MAC_Apply_G_mx2_opd( m_A,
663 if ( !is_ident34_k1 )
664 MAC_Apply_G_mx2_opd( m_A,
670 if ( !is_ident12_k2 )
671 MAC_Apply_G_mx2_opd( m_A,
677 if ( !is_ident23_k2 )
678 MAC_Apply_G_mx2_opd( m_A,
688 MAC_Apply_G_mx4s_opd( m_A,
706 g34_k1 = buff_G + (g + 1)*rs_G + (k )*cs_G;
707 a3 = buff_A + (g + 1)*cs_A;
708 a4 = buff_A + (g + 2)*cs_A;
710 gamma34_k1 = g34_k1->
real;
711 sigma34_k1 = g34_k1->
imag;
713 is_ident34_k1 = ( gamma34_k1 == one && sigma34_k1 == zero );
715 if ( !is_ident34_k1 )
716 MAC_Apply_G_mx2_opd( m_A,
726 for ( ; j < nG - 1; j += n_fuse )
729 n_iter = nG_app / k_fuse;
730 n_left = nG_app % k_fuse;
732 for ( i = 0, k = 0, g = j; i < n_iter; ++
i, k += k_fuse, g -= n_fuse )
734 g23_k1 = buff_G + (g )*rs_G + (k )*cs_G;
735 g34_k1 = buff_G + (g + 1)*rs_G + (k )*cs_G;
736 g12_k2 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
737 g23_k2 = buff_G + (g )*rs_G + (k + 1)*cs_G;
738 a1 = buff_A + (g - 1)*cs_A;
739 a2 = buff_A + (g )*cs_A;
740 a3 = buff_A + (g + 1)*cs_A;
741 a4 = buff_A + (g + 2)*cs_A;
743 gamma23_k1 = g23_k1->
real;
744 sigma23_k1 = g23_k1->
imag;
745 gamma34_k1 = g34_k1->
real;
746 sigma34_k1 = g34_k1->
imag;
747 gamma12_k2 = g12_k2->
real;
748 sigma12_k2 = g12_k2->
imag;
749 gamma23_k2 = g23_k2->
real;
750 sigma23_k2 = g23_k2->
imag;
752 is_ident23_k1 = ( gamma23_k1 == one && sigma23_k1 == zero );
753 is_ident34_k1 = ( gamma34_k1 == one && sigma34_k1 == zero );
754 is_ident12_k2 = ( gamma12_k2 == one && sigma12_k2 == zero );
755 is_ident23_k2 = ( gamma23_k2 == one && sigma23_k2 == zero );
756 has_ident = ( is_ident23_k1 || is_ident34_k1 ||
757 is_ident12_k2 || is_ident23_k2 );
763 if ( !is_ident23_k1 )
764 MAC_Apply_G_mx2_opd( m_A,
770 if ( !is_ident34_k1 )
771 MAC_Apply_G_mx2_opd( m_A,
777 if ( !is_ident12_k2 )
778 MAC_Apply_G_mx2_opd( m_A,
784 if ( !is_ident23_k2 )
785 MAC_Apply_G_mx2_opd( m_A,
795 MAC_Apply_G_mx4s_opd( m_A,
813 g23_k1 = buff_G + (g )*rs_G + (k )*cs_G;
814 g34_k1 = buff_G + (g + 1)*rs_G + (k )*cs_G;
815 a2 = buff_A + (g )*cs_A;
816 a3 = buff_A + (g + 1)*cs_A;
817 a4 = buff_A + (g + 2)*cs_A;
819 gamma23_k1 = g23_k1->
real;
820 sigma23_k1 = g23_k1->
imag;
821 gamma34_k1 = g34_k1->
real;
822 sigma34_k1 = g34_k1->
imag;
824 is_ident23_k1 = ( gamma23_k1 == one && sigma23_k1 == zero );
825 is_ident34_k1 = ( gamma34_k1 == one && sigma34_k1 == zero );
827 if ( !is_ident23_k1 && is_ident34_k1 )
829 MAC_Apply_G_mx2_opd( m_A,
835 else if ( is_ident23_k1 && !is_ident34_k1 )
837 MAC_Apply_G_mx2_opd( m_A,
845 MAC_Apply_G_mx3_opd( m_A,
859 for ( j = nG % n_fuse; j < k_G; j += n_fuse )
867 g23_k1 = buff_G + (g )*rs_G + (k )*cs_G;
868 a2 = buff_A + (g )*cs_A;
869 a3 = buff_A + (g + 1)*cs_A;
871 gamma23_k1 = g23_k1->
real;
872 sigma23_k1 = g23_k1->
imag;
874 is_ident23_k1 = ( gamma23_k1 == one && sigma23_k1 == zero );
876 if ( !is_ident23_k1 )
877 MAC_Apply_G_mx2_opd( m_A,
886 nG_app = k_minus_1 - j;
887 n_iter = nG_app / k_fuse;
888 n_left = nG_app % k_fuse;
890 for ( i = 0; i < n_iter; ++
i, k += k_fuse, g -= n_fuse )
892 g23_k1 = buff_G + (g )*rs_G + (k )*cs_G;
893 g34_k1 = buff_G + (g + 1)*rs_G + (k )*cs_G;
894 g12_k2 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
895 g23_k2 = buff_G + (g )*rs_G + (k + 1)*cs_G;
896 a1 = buff_A + (g - 1)*cs_A;
897 a2 = buff_A + (g )*cs_A;
898 a3 = buff_A + (g + 1)*cs_A;
899 a4 = buff_A + (g + 2)*cs_A;
901 gamma23_k1 = g23_k1->
real;
902 sigma23_k1 = g23_k1->
imag;
903 gamma34_k1 = g34_k1->
real;
904 sigma34_k1 = g34_k1->
imag;
905 gamma12_k2 = g12_k2->
real;
906 sigma12_k2 = g12_k2->
imag;
907 gamma23_k2 = g23_k2->
real;
908 sigma23_k2 = g23_k2->
imag;
910 is_ident23_k1 = ( gamma23_k1 == one && sigma23_k1 == zero );
911 is_ident34_k1 = ( gamma34_k1 == one && sigma34_k1 == zero );
912 is_ident12_k2 = ( gamma12_k2 == one && sigma12_k2 == zero );
913 is_ident23_k2 = ( gamma23_k2 == one && sigma23_k2 == zero );
914 has_ident = ( is_ident23_k1 || is_ident34_k1 ||
915 is_ident12_k2 || is_ident23_k2 );
921 if ( !is_ident23_k1 )
922 MAC_Apply_G_mx2_opd( m_A,
928 if ( !is_ident34_k1 )
929 MAC_Apply_G_mx2_opd( m_A,
935 if ( !is_ident12_k2 )
936 MAC_Apply_G_mx2_opd( m_A,
942 if ( !is_ident23_k2 )
943 MAC_Apply_G_mx2_opd( m_A,
953 MAC_Apply_G_mx4s_opd( m_A,
971 g23_k1 = buff_G + (g )*rs_G + (k )*cs_G;
972 g34_k1 = buff_G + (g + 1)*rs_G + (k )*cs_G;
973 a2 = buff_A + (g )*cs_A;
974 a3 = buff_A + (g + 1)*cs_A;
975 a4 = buff_A + (g + 2)*cs_A;
977 gamma23_k1 = g23_k1->
real;
978 sigma23_k1 = g23_k1->
imag;
979 gamma34_k1 = g34_k1->
real;
980 sigma34_k1 = g34_k1->
imag;
982 is_ident23_k1 = ( gamma23_k1 == one && sigma23_k1 == zero );
983 is_ident34_k1 = ( gamma34_k1 == one && sigma34_k1 == zero );
985 if ( !is_ident23_k1 && is_ident34_k1 )
987 MAC_Apply_G_mx2_opd( m_A,
993 else if ( is_ident23_k1 && !is_ident34_k1 )
995 MAC_Apply_G_mx2_opd( m_A,
1003 MAC_Apply_G_mx3_opd( m_A,
double imag
Definition: blis_type_defs.h:139
double bl1_d0(void)
Definition: bl1_constants.c:118
double real
Definition: blis_type_defs.h:139
int n_left
Definition: bl1_axmyv2.c:149
int i
Definition: bl1_axmyv2.c:145
double bl1_d1(void)
Definition: bl1_constants.c:54
Definition: blis_type_defs.h:137
FLA_Error FLA_Apply_G_rf_opd_var1(int k_G, int m_A, int n_A, dcomplex *buff_G, int rs_G, int cs_G, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Apply_G_rf_opt_var1.c:164