679{
682 float gamma12;
683 float sigma12;
684 float gamma23;
685 float sigma23;
692 int nG, nG_app;
693 int n_iter;
695 int k_minus_1;
696 int n_fuse;
697 int is_ident12, is_ident23;
698
699 k_minus_1 = k_G - 1;
700 nG = n_A - 1;
701 n_fuse = 2;
702
703
704 if ( nG < k_minus_1 || k_G == 1 )
705 {
707 m_A,
708 n_A,
709 buff_G, rs_G, cs_G,
710 buff_A, rs_A, cs_A );
711 return FLA_SUCCESS;
712 }
713
714
715
716
717 for ( j = 0; j < k_minus_1; ++j )
718 {
719 nG_app = j + 1;
720 n_iter = nG_app / n_fuse;
722
723 for (
i = 0, k = 0, g = nG_app - 1;
i < n_iter; ++
i, k += n_fuse, g -= n_fuse )
724 {
725 g12 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
726 g23 = buff_G + (g )*rs_G + (k )*cs_G;
727 a1 = buff_A + (g - 1)*cs_A;
728 a2 = buff_A + (g )*cs_A;
729 a3 = buff_A + (g + 1)*cs_A;
730
735
736 is_ident12 = ( gamma12 == one && sigma12 == zero );
737 is_ident23 = ( gamma23 == one && sigma23 == zero );
738
739 if ( !is_ident12 && is_ident23 )
740 {
741
742
743 MAC_Apply_G_mx2_opc( m_A,
744 &gamma12,
745 &sigma12,
746 a1, rs_A,
747 a2, rs_A );
748 }
749 else if ( is_ident12 && !is_ident23 )
750 {
751
752
753 MAC_Apply_G_mx2_opc( m_A,
754 &gamma23,
755 &sigma23,
756 a2, rs_A,
757 a3, rs_A );
758 }
759 else if ( !is_ident12 && !is_ident23 )
760 {
761
762
763 MAC_Apply_G_mx3b_opc( m_A,
764 &gamma12,
765 &sigma12,
766 &gamma23,
767 &sigma23,
768 a1, rs_A,
769 a2, rs_A,
770 a3, rs_A );
771 }
772 }
773
775 {
776 g23 = buff_G + (g )*rs_G + (k )*cs_G;
777 a2 = buff_A + (g )*cs_A;
778 a3 = buff_A + (g + 1)*cs_A;
779
782
783 is_ident23 = ( gamma23 == one && sigma23 == zero );
784
785 if ( !is_ident23 )
786 MAC_Apply_G_mx2_opc( m_A,
787 &gamma23,
788 &sigma23,
789 a2, rs_A,
790 a3, rs_A );
791 }
792 }
793
794
795
796 for ( j = k_minus_1; j < nG; ++j )
797 {
798 nG_app = k_G;
799 n_iter = nG_app / n_fuse;
801
802 for (
i = 0, k = 0, g = j;
i < n_iter; ++
i, k += n_fuse, g -= n_fuse )
803 {
804 g12 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
805 g23 = buff_G + (g )*rs_G + (k )*cs_G;
806 a1 = buff_A + (g - 1)*cs_A;
807 a2 = buff_A + (g )*cs_A;
808 a3 = buff_A + (g + 1)*cs_A;
809
814
815 is_ident12 = ( gamma12 == one && sigma12 == zero );
816 is_ident23 = ( gamma23 == one && sigma23 == zero );
817
818 if ( !is_ident12 && is_ident23 )
819 {
820
821
822 MAC_Apply_G_mx2_opc( m_A,
823 &gamma12,
824 &sigma12,
825 a1, rs_A,
826 a2, rs_A );
827 }
828 else if ( is_ident12 && !is_ident23 )
829 {
830
831
832 MAC_Apply_G_mx2_opc( m_A,
833 &gamma23,
834 &sigma23,
835 a2, rs_A,
836 a3, rs_A );
837 }
838 else if ( !is_ident12 && !is_ident23 )
839 {
840
841
842 MAC_Apply_G_mx3b_opc( m_A,
843 &gamma12,
844 &sigma12,
845 &gamma23,
846 &sigma23,
847 a1, rs_A,
848 a2, rs_A,
849 a3, rs_A );
850 }
851 }
852
854 {
855 g23 = buff_G + (g )*rs_G + (k )*cs_G;
856 a2 = buff_A + (g )*cs_A;
857 a3 = buff_A + (g + 1)*cs_A;
858
861
862 is_ident23 = ( gamma23 == one && sigma23 == zero );
863
864 if ( !is_ident23 )
865 MAC_Apply_G_mx2_opc( m_A,
866 &gamma23,
867 &sigma23,
868 a2, rs_A,
869 a3, rs_A );
870 }
871 }
872
873
874
875 for ( j = 1; j < k_G; ++j )
876 {
877 nG_app = k_G - j;
878 n_iter = nG_app / n_fuse;
880
881 for (
i = 0, k = j, g = nG - 1;
i < n_iter; ++
i, k += n_fuse, g -= n_fuse )
882 {
883 g12 = buff_G + (g - 1)*rs_G + (k + 1)*cs_G;
884 g23 = buff_G + (g )*rs_G + (k )*cs_G;
885 a1 = buff_A + (g - 1)*cs_A;
886 a2 = buff_A + (g )*cs_A;
887 a3 = buff_A + (g + 1)*cs_A;
888
893
894 is_ident12 = ( gamma12 == one && sigma12 == zero );
895 is_ident23 = ( gamma23 == one && sigma23 == zero );
896
897 if ( !is_ident12 && is_ident23 )
898 {
899
900
901 MAC_Apply_G_mx2_opc( m_A,
902 &gamma12,
903 &sigma12,
904 a1, rs_A,
905 a2, rs_A );
906 }
907 else if ( is_ident12 && !is_ident23 )
908 {
909
910
911 MAC_Apply_G_mx2_opc( m_A,
912 &gamma23,
913 &sigma23,
914 a2, rs_A,
915 a3, rs_A );
916 }
917 else if ( !is_ident12 && !is_ident23 )
918 {
919
920
921 MAC_Apply_G_mx3b_opc( m_A,
922 &gamma12,
923 &sigma12,
924 &gamma23,
925 &sigma23,
926 a1, rs_A,
927 a2, rs_A,
928 a3, rs_A );
929 }
930 }
931
933 {
934 g23 = buff_G + (g )*rs_G + (k )*cs_G;
935 a2 = buff_A + (g )*cs_A;
936 a3 = buff_A + (g + 1)*cs_A;
937
940
941 is_ident23 = ( gamma23 == one && sigma23 == zero );
942
943 if ( !is_ident23 )
944 MAC_Apply_G_mx2_opc( m_A,
945 &gamma23,
946 &sigma23,
947 a2, rs_A,
948 a3, rs_A );
949 }
950 }
951
952 return FLA_SUCCESS;
953}
FLA_Error FLA_Apply_G_rf_opc_var1(int k_G, int m_A, int n_A, scomplex *buff_G, int rs_G, int cs_G, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Apply_G_rf_opt_var1.c:215
int n_left
Definition bl1_axmyv2.c:149
int i
Definition bl1_axmyv2.c:145
float bl1_s0(void)
Definition bl1_constants.c:111
float bl1_s1(void)
Definition bl1_constants.c:47
Definition blis_type_defs.h:133
float imag
Definition blis_type_defs.h:134
float real
Definition blis_type_defs.h:134