@@ -724,19 +724,75 @@ inline ElSVDCtrl_d CReflect( const SVDCtrl<double>& ctrl )
724
724
return ctrlC;
725
725
}
726
726
727
- /* HessQRCtrl */
728
- inline ElHessQRCtrl CReflect ( const HessQRCtrl& ctrl )
729
- {
730
- ElHessQRCtrl ctrlC;
727
+ /* HessenbergSchurCtrl */
728
+ inline ElHessenbergSchurAlg CReflect ( const HessenbergSchurAlg& alg )
729
+ { return static_cast <ElHessenbergSchurAlg>(alg); }
730
+ inline HessenbergSchurAlg CReflect ( const ElHessenbergSchurAlg& alg )
731
+ { return static_cast <HessenbergSchurAlg>(alg); }
732
+
733
+ inline ElHessenbergSchurCtrl CReflect ( const HessenbergSchurCtrl& ctrl )
734
+ {
735
+ ElHessenbergSchurCtrl ctrlC;
736
+ ctrlC.winBeg = ctrl.winBeg ;
737
+ ctrlC.winEnd = ctrl.winEnd ;
738
+ ctrlC.fullTriangle = ctrl.fullTriangle ;
739
+ ctrlC.wantSchurVecs = ctrl.wantSchurVecs ;
740
+ ctrlC.demandConverged = ctrl.demandConverged ;
741
+
742
+ ctrlC.alg = CReflect (ctrl.alg );
743
+ ctrlC.recursiveAED = ctrl.recursiveAED ;
744
+ ctrlC.accumulateReflections = ctrl.accumulateReflections ;
745
+
746
+ ctrlC.progress = ctrl.progress ;
747
+
748
+ ctrlC.minMultiBulgeSize = ctrl.minMultiBulgeSize ;
749
+ auto numShiftsRes = ctrl.numShifts .target <ElInt (*)(ElInt,ElInt)>();
750
+ if ( numShiftsRes )
751
+ ctrlC.numShifts = *numShiftsRes;
752
+ else
753
+ RuntimeError (" Could not convert numShifts to C function pointer" );
754
+
755
+ auto deflationSizeRes =
756
+ ctrl.deflationSize .target <ElInt (*)(ElInt,ElInt,ElInt)>();
757
+ if ( deflationSizeRes )
758
+ ctrlC.deflationSize = *deflationSizeRes;
759
+ else
760
+ RuntimeError (" Could not convert deflationSize to C function pointer" );
761
+
762
+ auto sufficientDeflationRes =
763
+ ctrl.sufficientDeflation .target <ElInt (*)(ElInt)>();
764
+ if ( sufficientDeflationRes )
765
+ ctrlC.sufficientDeflation = *sufficientDeflationRes;
766
+ else
767
+ RuntimeError
768
+ (" Could not convert sufficientDeflation to C function pointer" );
769
+
731
770
ctrlC.distAED = ctrl.distAED ;
732
771
ctrlC.blockHeight = ctrl.blockHeight ;
733
772
ctrlC.blockWidth = ctrl.blockWidth ;
734
773
return ctrlC;
735
774
}
736
775
737
- inline HessQRCtrl CReflect ( const ElHessQRCtrl & ctrlC )
776
+ inline HessenbergSchurCtrl CReflect ( const ElHessenbergSchurCtrl & ctrlC )
738
777
{
739
- HessQRCtrl ctrl;
778
+ HessenbergSchurCtrl ctrl;
779
+ ctrl.winBeg = ctrlC.winBeg ;
780
+ ctrl.winEnd = ctrlC.winEnd ;
781
+ ctrl.fullTriangle = ctrlC.fullTriangle ;
782
+ ctrl.wantSchurVecs = ctrlC.wantSchurVecs ;
783
+ ctrl.demandConverged = ctrlC.demandConverged ;
784
+
785
+ ctrl.alg = CReflect (ctrlC.alg );
786
+ ctrl.recursiveAED = ctrlC.recursiveAED ;
787
+ ctrl.accumulateReflections = ctrlC.accumulateReflections ;
788
+
789
+ ctrl.progress = ctrlC.progress ;
790
+
791
+ ctrl.minMultiBulgeSize = ctrlC.minMultiBulgeSize ;
792
+ ctrl.numShifts = ctrlC.numShifts ;
793
+ ctrl.deflationSize = ctrlC.deflationSize ;
794
+ ctrl.sufficientDeflation = ctrlC.sufficientDeflation ;
795
+
740
796
ctrl.distAED = ctrlC.distAED ;
741
797
ctrl.blockHeight = ctrlC.blockHeight ;
742
798
ctrl.blockWidth = ctrlC.blockWidth ;
@@ -799,7 +855,7 @@ inline ElSchurCtrl_s CReflect( const SchurCtrl<float>& ctrl )
799
855
{
800
856
ElSchurCtrl_s ctrlC;
801
857
ctrlC.useSDC = ctrl.useSDC ;
802
- ctrlC.qrCtrl = CReflect ( ctrl.qrCtrl );
858
+ ctrlC.hessSchurCtrl = CReflect ( ctrl.hessSchurCtrl );
803
859
ctrlC.sdcCtrl = CReflect ( ctrl.sdcCtrl );
804
860
ctrlC.time = ctrl.time ;
805
861
return ctrlC;
@@ -808,7 +864,7 @@ inline ElSchurCtrl_d CReflect( const SchurCtrl<double>& ctrl )
808
864
{
809
865
ElSchurCtrl_d ctrlC;
810
866
ctrlC.useSDC = ctrl.useSDC ;
811
- ctrlC.qrCtrl = CReflect ( ctrl.qrCtrl );
867
+ ctrlC.hessSchurCtrl = CReflect ( ctrl.hessSchurCtrl );
812
868
ctrlC.sdcCtrl = CReflect ( ctrl.sdcCtrl );
813
869
ctrlC.time = ctrl.time ;
814
870
return ctrlC;
@@ -818,7 +874,7 @@ inline SchurCtrl<float> CReflect( const ElSchurCtrl_s& ctrlC )
818
874
{
819
875
SchurCtrl<float > ctrl;
820
876
ctrl.useSDC = ctrlC.useSDC ;
821
- ctrl.qrCtrl = CReflect ( ctrlC.qrCtrl );
877
+ ctrl.hessSchurCtrl = CReflect ( ctrlC.hessSchurCtrl );
822
878
ctrl.sdcCtrl = CReflect ( ctrlC.sdcCtrl );
823
879
ctrl.time = ctrlC.time ;
824
880
return ctrl;
@@ -827,7 +883,7 @@ inline SchurCtrl<double> CReflect( const ElSchurCtrl_d& ctrlC )
827
883
{
828
884
SchurCtrl<double > ctrl;
829
885
ctrl.useSDC = ctrlC.useSDC ;
830
- ctrl.qrCtrl = CReflect ( ctrlC.qrCtrl );
886
+ ctrl.hessSchurCtrl = CReflect ( ctrlC.hessSchurCtrl );
831
887
ctrl.sdcCtrl = CReflect ( ctrlC.sdcCtrl );
832
888
ctrl.time = ctrlC.time ;
833
889
return ctrl;
0 commit comments