78{
79 double eps2, safmin;
81 double bulge;
82 double gamma, sigma;
83 int ij_deflated;
85
86
87 ij_deflated = FLA_SUCCESS;
88
89
90 bulge = 0.0;
91
92
95
96
97 for (
i = 0;
i < m_A - 1; ++
i )
98 {
99 double* alpha00 = buff_d + (
i-1)*inc_d;
100 double* alpha10 = buff_e + (
i-1)*inc_e;
101 double* alpha20 = &bulge;
102
103 double* alpha11 = buff_d + (
i )*inc_d;
104 double* alpha21 = buff_e + (
i )*inc_e;
105 double* alpha22 = buff_d + (
i+1)*inc_d;
106
107 double* alpha31 = &bulge;
108 double* alpha32 = buff_e + (
i+1)*inc_e;
109
110 double* gamma1 = γ
111 double* sigma1 = σ
112
113 double alpha10_new;
114
116 int m_ahead = m_A -
i - 2;
117
118
119
121 {
122
123
124 temp0 = *buff_d - *buff_shift;
126 alpha10 = &temp0;
128
129
130 MAC_Givens2_opd( alpha10,
131 alpha20,
132 gamma1,
133 sigma1,
134 &alpha10_new );
135
136
137
138 }
139 else
140 {
141
142 MAC_Givens2_opd( alpha10,
143 alpha20,
144 gamma1,
145 sigma1,
146 &alpha10_new );
147
148
149
150 *alpha10 = alpha10_new;
151 *alpha20 = 0.0;
152 }
153
154
155 MAC_Apply_GTG_opd( gamma1,
156 sigma1,
157 alpha11,
158 alpha21,
159 alpha22 );
160
161 if ( m_ahead > 0 )
162 {
163
164
165 MAC_Apply_G_1x2_opd( gamma1,
166 sigma1,
167 alpha31,
168 alpha32 );
169
170
171
172 if ( m_behind > 0 )
173 {
174
175
176
177 if ( MAC_Tevd_eigval_converged2_opd( eps2, safmin, *alpha00, *alpha10, *alpha11 ) )
178 {
180 }
181 }
182
183
184 if ( *alpha31 == 0.0 )
185 {
186 printf( "FLA_Tevd_francis_n_opt_var1: bulge disappeared!\n" );
187 if ( MAC_Tevd_eigval_converged2_opd( eps2, safmin, *alpha11, *alpha21, *alpha22 ) )
188 {
189 printf(
"FLA_Tevd_francis_n_opt_var1: deflation detected (col %d)\n",
i );
190 printf( "FLA_Tevd_francis_n_opt_var1: alpha11 = %23.19e\n", *alpha11 );
191 printf( "FLA_Tevd_francis_n_opt_var1: alpha21 alpha22 = %23.19e %23.19e\n", *alpha21, *alpha22 );
193 }
194 else
195 {
196 printf(
"FLA_Tevd_francis_n_opt_var1: but NO deflation detected! (col %d)\n",
i );
197 printf( "FLA_Tevd_francis_n_opt_var1: alpha11 = %23.19e\n", *alpha11 );
198 printf( "FLA_Tevd_francis_n_opt_var1: alpha21 alpha22 = %23.19e %23.19e\n", *alpha21, *alpha22 );
200 return FLA_FAILURE;
201 }
202 }
203 }
204
205
206 }
207
208
209
210 return ij_deflated;
211}
void FLA_Abort(void)
Definition FLA_Error.c:248
double FLA_Mach_params_opd(FLA_Machval machval)
Definition FLA_Mach_params.c:74
int i
Definition bl1_axmyv2.c:145
double temp1
Definition bl1_axpyv2b.c:146