522{
523 double* buff_1 = FLA_DOUBLE_PTR(
FLA_ONE );
524 double* buff_0 = FLA_DOUBLE_PTR(
FLA_ZERO );
526
527 double alpha12;
528 double minus_conj_alpha12;
529 double psi11_minus_alpha12;
530 double minus_inv_tau11;
531 double minus_upsilon11;
532 double minus_conj_nu11;
533 double minus_conj_psi11;
534 double minus_zeta11;
535 double beta;
537
538
539 int b_alg = m_TS;
540
541
542
543
544
545
546
547
548 double* buff_w = (
double* )
FLA_malloc( m_A *
sizeof( *buff_A ) );
549 double* buff_ap = (
double* )
FLA_malloc( n_A *
sizeof( *buff_A ) );
550 double* buff_u = (
double* )
FLA_malloc( m_A *
sizeof( *buff_A ) );
551 double* buff_up = (
double* )
FLA_malloc( m_A *
sizeof( *buff_A ) );
552 double* buff_v = (
double* )
FLA_malloc( n_A *
sizeof( *buff_A ) );
553 double* buff_y = (
double* )
FLA_malloc( n_A *
sizeof( *buff_A ) );
554 double* buff_z = (
double* )
FLA_malloc( m_A *
sizeof( *buff_A ) );
555 int inc_w = 1;
556 int inc_ap = 1;
557 int inc_u = 1;
558 int inc_up = 1;
559 int inc_v = 1;
560 int inc_y = 1;
561 int inc_z = 1;
562
563 for (
i = 0;
i < b_alg; ++
i )
564 {
565 double* a10t = buff_A + (0 )*cs_A + (
i )*rs_A;
566 double* A20 = buff_A + (0 )*cs_A + (
i+1)*rs_A;
567 double* alpha11 = buff_A + (
i )*cs_A + (
i )*rs_A;
568 double* a21 = buff_A + (
i )*cs_A + (
i+1)*rs_A;
569 double* A02 = buff_A + (
i+1)*cs_A + (0 )*rs_A;
570 double* a12t = buff_A + (
i+1)*cs_A + (
i )*rs_A;
571 double* A22 = buff_A + (
i+1)*cs_A + (
i+1)*rs_A;
572
573 double* t01 = buff_T + (
i )*cs_T + (0 )*rs_T;
574 double* tau11 = buff_T + (
i )*cs_T + (
i )*rs_T;
575
576 double* s01 = buff_S + (
i )*cs_S + (0 )*rs_S;
577 double* sigma11 = buff_S + (
i )*cs_S + (
i )*rs_S;
578
579 double* w21 = buff_w + (
i+1)*inc_w;
580
581 double* a12p = buff_ap + (
i+1)*inc_ap;
582
583 double* upsilon11 = buff_u + (
i )*inc_u;
584 double* u21 = buff_u + (
i+1)*inc_u;
585
586 double* u21p = buff_up + (
i+1)*inc_up;
587
588 double* nu11 = buff_v + (
i )*inc_v;
589 double* v21 = buff_v + (
i+1)*inc_v;
590
591 double* psi11 = buff_y + (
i )*inc_y;
592 double* y21 = buff_y + (
i+1)*inc_y;
593
594 double* zeta11 = buff_z + (
i )*inc_z;
595 double* z21 = buff_z + (
i+1)*inc_z;
596
597 double* a12p_t = a12p + (0 )*inc_ap;
598 double* a12p_b = a12p + (1 )*inc_ap;
599
600 double* v21_t = v21 + (0 )*inc_v;
601 double* v21_b = v21 + (1 )*inc_v;
602
603 double* a12t_l = a12t + (0 )*cs_A + (0 )*rs_A;
604 double* a12t_r = a12t + (1 )*cs_A + (0 )*rs_A;
605
606 double* A22_l = A22 + (0 )*cs_A + (0 )*rs_A;
607
608 int m_ahead = m_A -
i - 1;
609 int n_ahead = n_A -
i - 1;
612
613
614
615 if ( m_behind > 0 )
616 {
617
618
619 bl1_dmult3( buff_m1, upsilon11, &minus_upsilon11 );
620
621
622
623 bl1_dmult3( buff_m1, zeta11, &minus_zeta11 );
624
625
626
627 bl1_dcopyconj( psi11, &minus_conj_psi11 );
628 bl1_dscals( buff_m1, &minus_conj_psi11 );
629
630
631
632 bl1_dcopyconj( nu11, &minus_conj_nu11 );
633 bl1_dscals( buff_m1, &minus_conj_nu11 );
634
635
636
638 1,
639 &minus_conj_psi11,
640 upsilon11, 1,
641 alpha11, 1 );
643 1,
644 &minus_conj_nu11,
645 zeta11, 1,
646 alpha11, 1 );
647
648
649
651 m_ahead,
652 &minus_conj_psi11,
653 u21, inc_u,
654 a21, rs_A );
656 m_ahead,
657 &minus_conj_nu11,
658 z21, inc_z,
659 a21, rs_A );
660
661
662
664 n_ahead,
665 &minus_upsilon11,
666 y21, inc_y,
667 a12t, cs_A );
669 n_ahead,
670 &minus_zeta11,
671 v21, inc_v,
672 a12t, cs_A );
673 }
674
675
676
677
678
680 alpha11,
681 a21, rs_A,
682 tau11 );
684 m_ahead,
685 a21, rs_A,
686 u21p, inc_up );
687
688 if ( n_ahead > 0 )
689 {
690
691
692 bl1_ddiv3( buff_m1, tau11, &minus_inv_tau11 );
693
694
695
697 n_ahead,
698 a12t, cs_A,
699 a12p, inc_ap );
701 n_ahead,
702 &minus_inv_tau11,
703 a12t, cs_A,
704 a12p, inc_ap );
705 }
706
707 if ( m_behind > 0 && n_ahead > 0 )
708 {
709
710
711
712
713
715 n_ahead,
716 tau11,
717 buff_m1,
718 u21, inc_u,
719 y21, inc_y,
720 z21, inc_z,
721 v21, inc_v,
722 A22, rs_A, cs_A,
723 u21p, inc_up,
724 a12p, inc_ap,
725 w21, inc_w );
726
727
728 }
729 else if ( n_ahead > 0 )
730 {
731
732
733
735 n_ahead,
736 tau11,
737 buff_0,
738 A22, rs_A, cs_A,
739 u21p, inc_up,
740 a12p, inc_ap,
741 y21, inc_y,
742 w21, inc_w );
743 }
744
745 if ( n_ahead > 0 )
746 {
747
749 n_ahead,
750 buff_1,
751 a12t, cs_A,
752 y21, inc_y );
753
754
755
756
757
759 a12p_t,
760 a12p_b, inc_ap,
761 &alpha12,
762 &psi11_minus_alpha12,
763 sigma11 );
764
765
766
767
768
770 n_ahead,
771 a12p, inc_ap,
772 v21, inc_v );
773 bl1_dmult4( buff_m1, &alpha12, v21_t, v21_t );
775 n_ahead,
776 &psi11_minus_alpha12,
777 v21, inc_v );
779 v21_b, inc_v );
780
781
782
783 *a12t_l = alpha12;
785 n_ahead - 1,
786 v21_b, inc_v,
787 a12t_r, cs_A );
788 }
789
790
792 m_ahead,
793 u21p, inc_up,
794 u21, inc_u );
795
796 if ( n_ahead > 0 )
797 {
798
799
800
802 n_ahead,
803 y21, inc_y,
804 v21, inc_v,
805 &beta );
806 bl1_dscals( &minus_inv_tau11, &beta );
807
808
809
810 bl1_dcopyconj( &alpha12, &minus_conj_alpha12 );
811 bl1_dneg1( &minus_conj_alpha12 );
812
813
814
815
816
818 m_ahead,
819 w21, inc_w,
820 z21, inc_z );
822 m_ahead,
823 &minus_conj_alpha12,
824 A22_l, rs_A,
825 z21, inc_z );
827 m_ahead,
828 &psi11_minus_alpha12,
829 z21, inc_z );
831 m_ahead,
832 &beta,
833 u21, inc_u,
834 z21, inc_z );
835
836
837
839 n_ahead,
840 tau11,
841 y21, inc_y );
843 m_ahead,
844 sigma11,
845 z21, inc_z );
846
847
850 m_behind,
851 n_ahead,
852 buff_1,
853 A02, rs_A, cs_A,
854 v21, inc_v,
855 buff_0,
856 s01, rs_S );
857 }
858
859
860
862 n_behind,
863 a10t, cs_A,
864 t01, rs_T );
867 m_ahead,
868 n_behind,
869 buff_1,
870 A20, rs_A, cs_A,
871 u21, inc_u,
872 buff_1,
873 t01, rs_T );
874
875 if ( m_behind + 1 == b_alg && n_ahead > 0 )
876 {
877
878
881 m_ahead,
882 n_ahead,
883 buff_m1,
884 u21, inc_u,
885 y21, inc_y,
886 A22, rs_A, cs_A );
889 m_ahead,
890 n_ahead,
891 buff_m1,
892 z21, inc_z,
893 v21, inc_v,
894 A22, rs_A, cs_A );
895 }
896
897
898
899 }
900
901
902
903
904
905
906
907
915
916 return FLA_SUCCESS;
917}
FLA_Error FLA_Fused_Ahx_Axpy_Ax_opd_var1(int m_A, int n_A, double *buff_tau, double *buff_beta, double *buff_A, int rs_A, int cs_A, double *buff_u, int inc_u, double *buff_a, int inc_a, double *buff_y, int inc_y, double *buff_w, int inc_w)
Definition FLA_Fused_Ahx_Axpy_Ax_opt_var1.c:207
FLA_Error FLA_Fused_Gerc2_Ahx_Axpy_Ax_opd_var1(int m_A, int n_A, double *buff_tau, double *buff_alpha, double *buff_u, int inc_u, double *buff_y, int inc_y, double *buff_z, int inc_z, double *buff_v, int inc_v, double *buff_A, int rs_A, int cs_A, double *buff_up, int inc_up, double *buff_a, int inc_a, double *buff_w, int inc_w)
Definition FLA_Fused_Gerc2_Ahx_Axpy_Ax_opt_var1.c:267
FLA_Error FLA_Househ2_UT_l_opd(int m_x2, double *chi_1, double *x2, int inc_x2, double *tau)
Definition FLA_Househ2_UT.c:274
FLA_Error FLA_Househ2s_UT_r_opd(int m_x2, double *chi_1, double *x2, int inc_x2, double *alpha, double *chi_1_minus_alpha, double *tau)
Definition FLA_Househ2s_UT.c:572
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition bl1_axpyv.c:21
void bl1_dconjv(int m, double *x, int incx)
Definition bl1_conjv.c:18
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition bl1_copyv.c:42
void bl1_ddot(conj1_t conj, int n, double *x, int incx, double *y, int incy, double *rho)
Definition bl1_dot.c:26
void bl1_dgemv(trans1_t transa, conj1_t conjx, int m, int n, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_gemv.c:69
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_dinvscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_invscalv.c:26