86{
87 double eps, safmin;
89 double bulge;
90 int ij_deflated;
92
93
94 ij_deflated = FLA_SUCCESS;
95
96
97 bulge = 0.0;
98
99
102
103
104 for (
i = 0;
i < m_A - 1; ++
i )
105 {
106 double* alpha00 = buff_d + (
i-1)*inc_d;
107 double* alpha10 = buff_e + (
i-1)*inc_e;
108 double* alpha20 = &bulge;
109
110 double* alpha11 = buff_d + (
i )*inc_d;
111 double* alpha21 = buff_e + (
i )*inc_e;
112 double* alpha22 = buff_d + (
i+1)*inc_d;
113
114 double* alpha31 = &bulge;
115 double* alpha32 = buff_e + (
i+1)*inc_e;
116
117 double* gamma1 = &(buff_g[(
i )*inc_g].
real);
118 double* sigma1 = &(buff_g[(
i )*inc_g].
imag);
119
120 double alpha10_new;
121
123 int m_ahead = m_A -
i - 2;
124
125
126
128 {
129
130
131 temp0 = *buff_d - *buff_shift;
133 alpha10 = &temp0;
135
136
137 MAC_Givens2_opd( alpha10,
138
139 alpha20,
140 gamma1,
141 sigma1,
142 &alpha10_new );
143
144
145
146 }
147 else
148 {
149
150 MAC_Givens2_opd( alpha10,
151
152 alpha20,
153 gamma1,
154 sigma1,
155 &alpha10_new );
156
157
158
159 *alpha10 = alpha10_new;
160 *alpha20 = 0.0;
161 }
162
163
164 MAC_Apply_GTG_opd( gamma1,
165 sigma1,
166 alpha11,
167 alpha21,
168 alpha22 );
169
170 if ( m_ahead > 0 )
171 {
172
173
174 MAC_Apply_G_1x2_opd( gamma1,
175 sigma1,
176 alpha31,
177 alpha32 );
178
179
180
181 if ( m_behind > 0 )
182 {
183
184
185
186 if ( MAC_Tevd_eigval_converged_opd( eps, safmin, *alpha00, *alpha10, *alpha11 ) )
187 {
189 }
190 }
191
192
193 if ( *alpha31 == 0.0 )
194 {
195 printf( "FLA_Tevd_francis_v_opt_var1: bulge disappeared!\n" );
196 if ( MAC_Tevd_eigval_converged_opd( eps, safmin, *alpha11, *alpha21, *alpha22 ) )
197 {
198 printf(
"FLA_Tevd_francis_v_opt_var1: deflation detected (col %d)\n",
i );
199 printf( "FLA_Tevd_francis_v_opt_var1: alpha11 = %23.19e\n", *alpha11 );
200 printf( "FLA_Tevd_francis_v_opt_var1: alpha21 alpha22 = %23.19e %23.19e\n", *alpha21, *alpha22 );
202 }
203 else
204 {
205 printf(
"FLA_Tevd_francis_v_opt_var1: but NO deflation detected! (col %d)\n",
i );
206 printf( "FLA_Tevd_francis_v_opt_var1: alpha11 = %23.19e\n", *alpha11 );
207 printf( "FLA_Tevd_francis_v_opt_var1: alpha21 alpha22 = %23.19e %23.19e\n", *alpha21, *alpha22 );
209 return FLA_FAILURE;
210 }
211 }
212 }
213
214
215 }
216
217
218
219 return ij_deflated;
220}
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
double real
Definition blis_type_defs.h:139
double imag
Definition blis_type_defs.h:139