inline SchurCtrl<double> CReflect( const ElSchurCtrl_d& ctrlC ) { SchurCtrl<double> ctrl; ctrl.useSdc = ctrlC.useSdc; ctrl.qrCtrl = CReflect( ctrlC.qrCtrl ); ctrl.sdcCtrl = CReflect( ctrlC.sdcCtrl ); return ctrl; }
inline SpectralBox<float> CReflect( const ElSpectralBox_s& boxC ) { SpectralBox<float> box; box.center = CReflect(boxC.center); box.realWidth = CReflect(boxC.realWidth); box.imagWidth = CReflect(boxC.imagWidth); return box; }
inline SchurCtrl<float> CReflect( const ElSchurCtrl_s& ctrlC ) { SchurCtrl<float> ctrl; ctrl.useSdc = ctrlC.useSdc; ctrl.qrCtrl = CReflect( ctrlC.qrCtrl ); ctrl.sdcCtrl = CReflect( ctrlC.sdcCtrl ); return ctrl; }
inline HermitianEigCtrl<double> CReflect( const ElHermitianEigCtrl_d& ctrlC ) { HermitianEigCtrl<double> ctrl; ctrl.tridiagCtrl = CReflect( ctrlC.tridiagCtrl ); ctrl.sdcCtrl = CReflect( ctrlC.sdcCtrl ); ctrl.useSdc = ctrlC.useSdc; return ctrl; }
/* SchurCtrl */ inline ElSchurCtrl_s CReflect( const SchurCtrl<float>& ctrl ) { ElSchurCtrl_s ctrlC; ctrlC.useSdc = ctrl.useSdc; ctrlC.qrCtrl = CReflect( ctrl.qrCtrl ); ctrlC.sdcCtrl = CReflect( ctrl.sdcCtrl ); return ctrlC; }
/* HermitianEigCtrl */ inline ElHermitianEigCtrl_s CReflect( const HermitianEigCtrl<float>& ctrl ) { ElHermitianEigCtrl_s ctrlC; ctrlC.tridiagCtrl = CReflect( ctrl.tridiagCtrl ); ctrlC.sdcCtrl = CReflect( ctrl.sdcCtrl ); ctrlC.useSdc = ctrl.useSdc; return ctrlC; }
inline ElHermitianEigCtrl_d CReflect( const HermitianEigCtrl<double>& ctrl ) { ElHermitianEigCtrl_d ctrlC; ctrlC.tridiagCtrl = CReflect( ctrl.tridiagCtrl ); ctrlC.sdcCtrl = CReflect( ctrl.sdcCtrl ); ctrlC.useSdc = ctrl.useSdc; return ctrlC; }
inline HermitianTridiagCtrl CReflect( const ElHermitianTridiagCtrl& ctrlC ) { HermitianTridiagCtrl ctrl; ctrl.approach = CReflect(ctrlC.approach); ctrl.order = CReflect(ctrlC.order); return ctrl; }
inline ElHermitianTridiagCtrl CReflect( const HermitianTridiagCtrl& ctrl ) { ElHermitianTridiagCtrl ctrlC; ctrlC.approach = CReflect(ctrl.approach); ctrlC.order = CReflect(ctrl.order); return ctrlC; }
inline SpectralBox<double> CReflect( const ElSpectralBox_d& boxC ) { SpectralBox<double> box; box.center = CReflect(boxC.center); box.realWidth = CReflect(boxC.realWidth); box.imagWidth = CReflect(boxC.imagWidth); return box; }
inline ElSchurCtrl_d CReflect( const SchurCtrl<double>& ctrl ) { ElSchurCtrl_d ctrlC; ctrlC.useSdc = ctrl.useSdc; ctrlC.qrCtrl = CReflect( ctrl.qrCtrl ); ctrlC.sdcCtrl = CReflect( ctrl.sdcCtrl ); return ctrlC; }
ElHermitianTridiagCtrl CReflect( const HermitianTridiagCtrl<Field>& ctrl ) { ElHermitianTridiagCtrl ctrlC; ctrlC.approach = CReflect(ctrl.approach); ctrlC.order = CReflect(ctrl.order); ctrlC.symvCtrl = CReflect(ctrl.symvCtrl); return ctrlC; }
inline HermitianEigCtrl<float> CReflect( const ElHermitianEigCtrl_s& ctrlC ) { HermitianEigCtrl<float> ctrl; ctrl.tridiagCtrl = CReflect<float>( ctrlC.tridiagCtrl ); ctrl.tridiagEigCtrl = CReflect( ctrlC.tridiagEigCtrl ); ctrl.sdcCtrl = CReflect( ctrlC.sdcCtrl ); ctrl.useSDC = ctrlC.useSDC; return ctrl; }
HermitianTridiagCtrl<Field> CReflect( const ElHermitianTridiagCtrl& ctrlC ) { HermitianTridiagCtrl<Field> ctrl; ctrl.approach = CReflect(ctrlC.approach); ctrl.order = CReflect(ctrlC.order); ctrl.symvCtrl = CReflect<Field>(ctrlC.symvCtrl); return ctrl; }
inline SchurCtrl<float> CReflect( const ElSchurCtrl_s& ctrlC ) { SchurCtrl<float> ctrl; ctrl.useSDC = ctrlC.useSDC; ctrl.qrCtrl = CReflect( ctrlC.qrCtrl ); ctrl.sdcCtrl = CReflect( ctrlC.sdcCtrl ); ctrl.time = ctrlC.time; return ctrl; }
inline ElHermitianEigCtrl_z CReflect( const HermitianEigCtrl<Complex<double>>& ctrl ) { ElHermitianEigCtrl_z ctrlC; ctrlC.tridiagCtrl = CReflect( ctrl.tridiagCtrl ); ctrlC.tridiagEigCtrl = CReflect( ctrl.tridiagEigCtrl ); ctrlC.sdcCtrl = CReflect( ctrl.sdcCtrl ); ctrlC.useSDC = ctrl.useSDC; return ctrlC; }
inline HermitianEigCtrl<Complex<double>> CReflect( const ElHermitianEigCtrl_z& ctrlC ) { HermitianEigCtrl<Complex<double>> ctrl; ctrl.tridiagCtrl = CReflect<Complex<double>>( ctrlC.tridiagCtrl ); ctrl.tridiagEigCtrl = CReflect( ctrlC.tridiagEigCtrl ); ctrl.sdcCtrl = CReflect( ctrlC.sdcCtrl ); ctrl.useSDC = ctrlC.useSDC; return ctrl; }
inline DistData CReflect( const ElDistData& distData ) { DistData data; data.colDist = CReflect(distData.colDist); data.rowDist = CReflect(distData.rowDist); data.colAlign = distData.colAlign; data.rowAlign = distData.rowAlign; data.root = distData.root; data.grid = CReflect(distData.grid); return data; }
inline ElDistData CReflect( const DistData& data ) { ElDistData distData; distData.colDist = CReflect(data.colDist); distData.rowDist = CReflect(data.rowDist); distData.colAlign = data.colAlign; distData.rowAlign = data.rowAlign; distData.root = data.root; distData.grid = CReflect(data.grid); return distData; }
inline SecularEVDCtrl<double> CReflect( const ElSecularEVDCtrl_d& ctrlC ) { SecularEVDCtrl<double> ctrl; ctrl.maxIterations = ctrlC.maxIterations; ctrl.sufficientDecay = ctrlC.sufficientDecay; ctrl.negativeFix = CReflect( ctrlC.negativeFix ); ctrl.penalizeDerivative = CReflect( ctrlC.penalizeDerivative ); ctrl.progress = ctrlC.progress; ctrl.cubicCtrl = CReflect( ctrlC.cubicCtrl ); return ctrl; }
/* Secular SVD */ inline ElSecularSVDCtrl_s CReflect( const SecularSVDCtrl<float>& ctrl ) { ElSecularSVDCtrl_s ctrlC; ctrlC.maxIterations = ctrl.maxIterations; ctrlC.sufficientDecay = ctrl.sufficientDecay; ctrlC.negativeFix = CReflect( ctrl.negativeFix ); ctrlC.penalizeDerivative = CReflect( ctrl.penalizeDerivative ); ctrlC.progress = ctrl.progress; ctrlC.cubicCtrl = CReflect( ctrl.cubicCtrl ); return ctrlC; }
inline HermitianTridiagEigCtrl<double> CReflect ( const ElHermitianTridiagEigCtrl_d& ctrlC ) { HermitianTridiagEigCtrl<double> ctrl; ctrl.wantEigVecs = ctrlC.wantEigVecs; ctrl.accumulateEigVecs = ctrlC.accumulateEigVecs; ctrl.sort = CReflect(ctrlC.sort); ctrl.subset = CReflect(ctrlC.subset); ctrl.progress = ctrlC.progress; ctrl.alg = CReflect(ctrlC.alg); ctrl.qrCtrl = CReflect(ctrlC.qrCtrl); ctrl.dcCtrl = CReflect(ctrlC.dcCtrl); return ctrl; }
/* HermitianTridiagEigCtrl */ inline ElHermitianTridiagEigCtrl_s CReflect ( const HermitianTridiagEigCtrl<float>& ctrl ) { ElHermitianTridiagEigCtrl_s ctrlC; ctrlC.wantEigVecs = ctrl.wantEigVecs; ctrlC.accumulateEigVecs = ctrl.accumulateEigVecs; ctrlC.sort = CReflect(ctrl.sort); ctrlC.subset = CReflect(ctrl.subset); ctrlC.progress = ctrl.progress; ctrlC.alg = CReflect(ctrl.alg); ctrlC.qrCtrl = CReflect(ctrl.qrCtrl); ctrlC.dcCtrl = CReflect(ctrl.dcCtrl); return ctrlC; }
inline ElBidiagSVDCtrl_d CReflect( const BidiagSVDCtrl<double>& ctrl ) { ElBidiagSVDCtrl_d ctrlC; ctrlC.wantU = ctrl.wantU; ctrlC.wantV = ctrl.wantV; ctrlC.accumulateU = ctrl.accumulateU; ctrlC.accumulateV = ctrl.accumulateV; ctrlC.tolType = CReflect(ctrl.tolType); ctrlC.tol = ctrl.tol; ctrlC.progress = ctrl.progress; ctrlC.useQR = CReflect(ctrl.useQR); ctrlC.qrCtrl = CReflect(ctrl.qrCtrl); ctrlC.dcCtrl = CReflect(ctrl.dcCtrl); return ctrlC; }
inline SafeProduct<Complex<double>> CReflect( const ElSafeProduct_z& prodC ) { SafeProduct<Complex<double>> prod( prodC.n ); prod.rho = CReflect(prodC.rho); prod.kappa = prodC.kappa; return prod; }
inline ElCubicSecularCtrl CReflect( const CubicSecularCtrl& ctrl ) { ElCubicSecularCtrl ctrlC; ctrlC.maxIterations = ctrl.maxIterations; ctrlC.negativeFix = CReflect( ctrl.negativeFix ); return ctrlC; }
inline CubicSecularCtrl CReflect( const ElCubicSecularCtrl& ctrlC ) { CubicSecularCtrl ctrl; ctrl.maxIterations = ctrlC.maxIterations; ctrl.negativeFix = CReflect( ctrlC.negativeFix ); return ctrl; }
inline BidiagSVDCtrl<double> CReflect( const ElBidiagSVDCtrl_d& ctrlC ) { BidiagSVDCtrl<double> ctrl; ctrl.wantU = ctrlC.wantU; ctrl.wantV = ctrlC.wantV; ctrl.accumulateU = ctrlC.accumulateU; ctrl.accumulateV = ctrlC.accumulateV; ctrl.approach = CReflect(ctrlC.approach); ctrl.tolType = CReflect(ctrlC.tolType); ctrl.tol = ctrlC.tol; ctrl.progress = ctrlC.progress; ctrl.useQR = CReflect(ctrlC.useQR); ctrl.qrCtrl = CReflect(ctrlC.qrCtrl); ctrl.dcCtrl = CReflect(ctrlC.dcCtrl); return ctrl; }
inline PolarCtrl CReflect( const ElPolarCtrl& ctrlC ) { PolarCtrl ctrl; ctrl.qdwh = ctrlC.qdwh; ctrl.qdwhCtrl = CReflect(ctrlC.qdwhCtrl); return ctrl; }
/* PolarCtrl */ inline ElPolarCtrl CReflect( const PolarCtrl& ctrl ) { ElPolarCtrl ctrlC; ctrlC.qdwh = ctrl.qdwh; ctrlC.qdwhCtrl = CReflect(ctrl.qdwhCtrl); return ctrlC; }