1 #include <blas_extended.h>
2 #include <blas_extended_private.h>
3 #include <blas_fpu.h>
BLAS_zhemv2_c_z_x(enum blas_order_type order,enum blas_uplo_type uplo,int n,const void * alpha,const void * a,int lda,const void * x_head,const void * x_tail,int incx,const void * beta,const void * y,int incy,enum blas_prec_type prec)4 void BLAS_zhemv2_c_z_x(enum blas_order_type order, enum blas_uplo_type uplo,
5 		       int n, const void *alpha, const void *a, int lda,
6 		       const void *x_head, const void *x_tail, int incx,
7 		       const void *beta, const void *y, int incy,
8 		       enum blas_prec_type prec)
9 
10 /*
11  * Purpose
12  * =======
13  *
14  * This routines computes the matrix product:
15  *
16  *     y  <-  alpha * A * (x_head + x_tail) + beta * y
17  *
18  * where A is a complex Hermitian matrix.
19  *
20  * Arguments
21  * =========
22  *
23  * order   (input) enum blas_order_type
24  *         Storage format of input symmetric matrix A.
25  *
26  * uplo    (input) enum blas_uplo_type
27  *         Determines which half of matrix A (upper or lower triangle)
28  *         is accessed.
29  *
30  * n       (input) int
31  *         Dimension of A and size of vectors x, y.
32  *
33  * alpha   (input) const void*
34  *
35  * a       (input) void*
36  *         Matrix A.
37  *
38  * lda     (input) int
39  *         Leading dimension of matrix A.
40  *
41  * x_head  (input) void*
42  *         Vector x_head
43  *
44  * x_tail  (input) void*
45  *         Vector x_tail
46  *
47  * incx    (input) int
48  *         Stride for vector x.
49  *
50  * beta    (input) const void*
51  *
52  * y       (input) void*
53  *         Vector y.
54  *
55  * incy    (input) int
56  *         Stride for vector y.
57  *
58  * prec   (input) enum blas_prec_type
59  *        Specifies the internal precision to be used.
60  *        = blas_prec_single: single precision.
61  *        = blas_prec_double: double precision.
62  *        = blas_prec_extra : anything at least 1.5 times as accurate
63  *                            than double, and wider than 80-bits.
64  *                            We use double-double in our implementation.
65  *
66  */
67 {
68   /* Routine name */
69   const char routine_name[] = "BLAS_zhemv2_c_z_x";
70   switch (prec) {
71 
72   case blas_prec_single:{
73 
74       int i, j;
75       int xi, yi, xi0, yi0;
76       int aij, ai;
77       int incai;
78       int incaij, incaij2;
79 
80       const float *a_i = (float *) a;
81       const double *x_head_i = (double *) x_head;
82       const double *x_tail_i = (double *) x_tail;
83       double *y_i = (double *) y;
84       double *alpha_i = (double *) alpha;
85       double *beta_i = (double *) beta;
86       float a_elem[2];
87       double x_elem[2];
88       double y_elem[2];
89       float diag_elem;
90       double prod1[2];
91       double prod2[2];
92       double sum1[2];
93       double sum2[2];
94       double tmp1[2];
95       double tmp2[2];
96       double tmp3[2];
97 
98 
99 
100       /* Test for no-op */
101       if (n <= 0) {
102 	return;
103       }
104       if (alpha_i[0] == 0.0 && alpha_i[1] == 0.0
105 	  && (beta_i[0] == 1.0 && beta_i[1] == 0.0)) {
106 	return;
107       }
108 
109       /* Check for error conditions. */
110       if (n < 0) {
111 	BLAS_error(routine_name, -3, n, NULL);
112       }
113       if (lda < n) {
114 	BLAS_error(routine_name, -6, n, NULL);
115       }
116       if (incx == 0) {
117 	BLAS_error(routine_name, -9, incx, NULL);
118       }
119       if (incy == 0) {
120 	BLAS_error(routine_name, -12, incy, NULL);
121       }
122 
123       if ((order == blas_colmajor && uplo == blas_upper) ||
124 	  (order == blas_rowmajor && uplo == blas_lower)) {
125 	incai = lda;
126 	incaij = 1;
127 	incaij2 = lda;
128       } else {
129 	incai = 1;
130 	incaij = lda;
131 	incaij2 = 1;
132       }
133 
134       incx *= 2;
135       incy *= 2;
136       incai *= 2;
137       incaij *= 2;
138       incaij2 *= 2;
139       xi0 = (incx > 0) ? 0 : ((-n + 1) * incx);
140       yi0 = (incy > 0) ? 0 : ((-n + 1) * incy);
141 
142 
143 
144       /* The most general form,   y <--- alpha * A * (x_head + x_tail) + beta * y   */
145       if (uplo == blas_lower) {
146 	for (i = 0, yi = yi0, ai = 0; i < n; i++, yi += incy, ai += incai) {
147 	  sum1[0] = sum1[1] = 0.0;
148 	  sum2[0] = sum2[1] = 0.0;
149 	  for (j = 0, aij = ai, xi = xi0; j < i;
150 	       j++, aij += incaij, xi += incx) {
151 	    a_elem[0] = a_i[aij];
152 	    a_elem[1] = a_i[aij + 1];
153 	    x_elem[0] = x_head_i[xi];
154 	    x_elem[1] = x_head_i[xi + 1];
155 	    {
156 	      prod1[0] =
157 		(double) a_elem[0] * x_elem[0] -
158 		(double) a_elem[1] * x_elem[1];
159 	      prod1[1] =
160 		(double) a_elem[0] * x_elem[1] +
161 		(double) a_elem[1] * x_elem[0];
162 	    }
163 	    sum1[0] = sum1[0] + prod1[0];
164 	    sum1[1] = sum1[1] + prod1[1];
165 	    x_elem[0] = x_tail_i[xi];
166 	    x_elem[1] = x_tail_i[xi + 1];
167 	    {
168 	      prod2[0] =
169 		(double) a_elem[0] * x_elem[0] -
170 		(double) a_elem[1] * x_elem[1];
171 	      prod2[1] =
172 		(double) a_elem[0] * x_elem[1] +
173 		(double) a_elem[1] * x_elem[0];
174 	    }
175 	    sum2[0] = sum2[0] + prod2[0];
176 	    sum2[1] = sum2[1] + prod2[1];
177 	  }
178 
179 	  diag_elem = a_i[aij];
180 	  x_elem[0] = x_head_i[xi];
181 	  x_elem[1] = x_head_i[xi + 1];
182 	  {
183 	    prod1[0] = x_elem[0] * diag_elem;
184 	    prod1[1] = x_elem[1] * diag_elem;
185 	  }
186 	  sum1[0] = sum1[0] + prod1[0];
187 	  sum1[1] = sum1[1] + prod1[1];
188 	  x_elem[0] = x_tail_i[xi];
189 	  x_elem[1] = x_tail_i[xi + 1];
190 	  {
191 	    prod2[0] = x_elem[0] * diag_elem;
192 	    prod2[1] = x_elem[1] * diag_elem;
193 	  }
194 	  sum2[0] = sum2[0] + prod2[0];
195 	  sum2[1] = sum2[1] + prod2[1];
196 	  j++;
197 	  aij += incaij2;
198 	  xi += incx;
199 
200 	  for (; j < n; j++, aij += incaij2, xi += incx) {
201 	    a_elem[0] = a_i[aij];
202 	    a_elem[1] = a_i[aij + 1];
203 	    a_elem[1] = -a_elem[1];
204 	    x_elem[0] = x_head_i[xi];
205 	    x_elem[1] = x_head_i[xi + 1];
206 	    {
207 	      prod1[0] =
208 		(double) a_elem[0] * x_elem[0] -
209 		(double) a_elem[1] * x_elem[1];
210 	      prod1[1] =
211 		(double) a_elem[0] * x_elem[1] +
212 		(double) a_elem[1] * x_elem[0];
213 	    }
214 	    sum1[0] = sum1[0] + prod1[0];
215 	    sum1[1] = sum1[1] + prod1[1];
216 	    x_elem[0] = x_tail_i[xi];
217 	    x_elem[1] = x_tail_i[xi + 1];
218 	    {
219 	      prod2[0] =
220 		(double) a_elem[0] * x_elem[0] -
221 		(double) a_elem[1] * x_elem[1];
222 	      prod2[1] =
223 		(double) a_elem[0] * x_elem[1] +
224 		(double) a_elem[1] * x_elem[0];
225 	    }
226 	    sum2[0] = sum2[0] + prod2[0];
227 	    sum2[1] = sum2[1] + prod2[1];
228 	  }
229 	  sum1[0] = sum1[0] + sum2[0];
230 	  sum1[1] = sum1[1] + sum2[1];
231 	  {
232 	    tmp1[0] =
233 	      (double) sum1[0] * alpha_i[0] - (double) sum1[1] * alpha_i[1];
234 	    tmp1[1] =
235 	      (double) sum1[0] * alpha_i[1] + (double) sum1[1] * alpha_i[0];
236 	  }
237 	  y_elem[0] = y_i[yi];
238 	  y_elem[1] = y_i[yi + 1];
239 	  {
240 	    tmp2[0] =
241 	      (double) y_elem[0] * beta_i[0] - (double) y_elem[1] * beta_i[1];
242 	    tmp2[1] =
243 	      (double) y_elem[0] * beta_i[1] + (double) y_elem[1] * beta_i[0];
244 	  }
245 	  tmp3[0] = tmp1[0] + tmp2[0];
246 	  tmp3[1] = tmp1[1] + tmp2[1];
247 	  y_i[yi] = tmp3[0];
248 	  y_i[yi + 1] = tmp3[1];
249 	}
250       } else {
251 	/* uplo == blas_upper */
252 	for (i = 0, yi = yi0, ai = 0; i < n; i++, yi += incy, ai += incai) {
253 	  sum1[0] = sum1[1] = 0.0;
254 	  sum2[0] = sum2[1] = 0.0;
255 
256 	  for (j = 0, aij = ai, xi = xi0; j < i;
257 	       j++, aij += incaij, xi += incx) {
258 	    a_elem[0] = a_i[aij];
259 	    a_elem[1] = a_i[aij + 1];
260 	    a_elem[1] = -a_elem[1];
261 	    x_elem[0] = x_head_i[xi];
262 	    x_elem[1] = x_head_i[xi + 1];
263 	    {
264 	      prod1[0] =
265 		(double) a_elem[0] * x_elem[0] -
266 		(double) a_elem[1] * x_elem[1];
267 	      prod1[1] =
268 		(double) a_elem[0] * x_elem[1] +
269 		(double) a_elem[1] * x_elem[0];
270 	    }
271 	    sum1[0] = sum1[0] + prod1[0];
272 	    sum1[1] = sum1[1] + prod1[1];
273 	    x_elem[0] = x_tail_i[xi];
274 	    x_elem[1] = x_tail_i[xi + 1];
275 	    {
276 	      prod2[0] =
277 		(double) a_elem[0] * x_elem[0] -
278 		(double) a_elem[1] * x_elem[1];
279 	      prod2[1] =
280 		(double) a_elem[0] * x_elem[1] +
281 		(double) a_elem[1] * x_elem[0];
282 	    }
283 	    sum2[0] = sum2[0] + prod2[0];
284 	    sum2[1] = sum2[1] + prod2[1];
285 	  }
286 
287 	  diag_elem = a_i[aij];
288 	  x_elem[0] = x_head_i[xi];
289 	  x_elem[1] = x_head_i[xi + 1];
290 	  {
291 	    prod1[0] = x_elem[0] * diag_elem;
292 	    prod1[1] = x_elem[1] * diag_elem;
293 	  }
294 	  sum1[0] = sum1[0] + prod1[0];
295 	  sum1[1] = sum1[1] + prod1[1];
296 	  x_elem[0] = x_tail_i[xi];
297 	  x_elem[1] = x_tail_i[xi + 1];
298 	  {
299 	    prod2[0] = x_elem[0] * diag_elem;
300 	    prod2[1] = x_elem[1] * diag_elem;
301 	  }
302 	  sum2[0] = sum2[0] + prod2[0];
303 	  sum2[1] = sum2[1] + prod2[1];
304 	  j++;
305 	  aij += incaij2;
306 	  xi += incx;
307 
308 	  for (; j < n; j++, aij += incaij2, xi += incx) {
309 	    a_elem[0] = a_i[aij];
310 	    a_elem[1] = a_i[aij + 1];
311 	    x_elem[0] = x_head_i[xi];
312 	    x_elem[1] = x_head_i[xi + 1];
313 	    {
314 	      prod1[0] =
315 		(double) a_elem[0] * x_elem[0] -
316 		(double) a_elem[1] * x_elem[1];
317 	      prod1[1] =
318 		(double) a_elem[0] * x_elem[1] +
319 		(double) a_elem[1] * x_elem[0];
320 	    }
321 	    sum1[0] = sum1[0] + prod1[0];
322 	    sum1[1] = sum1[1] + prod1[1];
323 	    x_elem[0] = x_tail_i[xi];
324 	    x_elem[1] = x_tail_i[xi + 1];
325 	    {
326 	      prod2[0] =
327 		(double) a_elem[0] * x_elem[0] -
328 		(double) a_elem[1] * x_elem[1];
329 	      prod2[1] =
330 		(double) a_elem[0] * x_elem[1] +
331 		(double) a_elem[1] * x_elem[0];
332 	    }
333 	    sum2[0] = sum2[0] + prod2[0];
334 	    sum2[1] = sum2[1] + prod2[1];
335 	  }
336 	  sum1[0] = sum1[0] + sum2[0];
337 	  sum1[1] = sum1[1] + sum2[1];
338 	  {
339 	    tmp1[0] =
340 	      (double) sum1[0] * alpha_i[0] - (double) sum1[1] * alpha_i[1];
341 	    tmp1[1] =
342 	      (double) sum1[0] * alpha_i[1] + (double) sum1[1] * alpha_i[0];
343 	  }
344 	  y_elem[0] = y_i[yi];
345 	  y_elem[1] = y_i[yi + 1];
346 	  {
347 	    tmp2[0] =
348 	      (double) y_elem[0] * beta_i[0] - (double) y_elem[1] * beta_i[1];
349 	    tmp2[1] =
350 	      (double) y_elem[0] * beta_i[1] + (double) y_elem[1] * beta_i[0];
351 	  }
352 	  tmp3[0] = tmp1[0] + tmp2[0];
353 	  tmp3[1] = tmp1[1] + tmp2[1];
354 	  y_i[yi] = tmp3[0];
355 	  y_i[yi + 1] = tmp3[1];
356 	}
357       }
358 
359 
360 
361       break;
362     }
363 
364   case blas_prec_double:
365   case blas_prec_indigenous:{
366 
367       int i, j;
368       int xi, yi, xi0, yi0;
369       int aij, ai;
370       int incai;
371       int incaij, incaij2;
372 
373       const float *a_i = (float *) a;
374       const double *x_head_i = (double *) x_head;
375       const double *x_tail_i = (double *) x_tail;
376       double *y_i = (double *) y;
377       double *alpha_i = (double *) alpha;
378       double *beta_i = (double *) beta;
379       float a_elem[2];
380       double x_elem[2];
381       double y_elem[2];
382       float diag_elem;
383       double prod1[2];
384       double prod2[2];
385       double sum1[2];
386       double sum2[2];
387       double tmp1[2];
388       double tmp2[2];
389       double tmp3[2];
390 
391 
392 
393       /* Test for no-op */
394       if (n <= 0) {
395 	return;
396       }
397       if (alpha_i[0] == 0.0 && alpha_i[1] == 0.0
398 	  && (beta_i[0] == 1.0 && beta_i[1] == 0.0)) {
399 	return;
400       }
401 
402       /* Check for error conditions. */
403       if (n < 0) {
404 	BLAS_error(routine_name, -3, n, NULL);
405       }
406       if (lda < n) {
407 	BLAS_error(routine_name, -6, n, NULL);
408       }
409       if (incx == 0) {
410 	BLAS_error(routine_name, -9, incx, NULL);
411       }
412       if (incy == 0) {
413 	BLAS_error(routine_name, -12, incy, NULL);
414       }
415 
416       if ((order == blas_colmajor && uplo == blas_upper) ||
417 	  (order == blas_rowmajor && uplo == blas_lower)) {
418 	incai = lda;
419 	incaij = 1;
420 	incaij2 = lda;
421       } else {
422 	incai = 1;
423 	incaij = lda;
424 	incaij2 = 1;
425       }
426 
427       incx *= 2;
428       incy *= 2;
429       incai *= 2;
430       incaij *= 2;
431       incaij2 *= 2;
432       xi0 = (incx > 0) ? 0 : ((-n + 1) * incx);
433       yi0 = (incy > 0) ? 0 : ((-n + 1) * incy);
434 
435 
436 
437       /* The most general form,   y <--- alpha * A * (x_head + x_tail) + beta * y   */
438       if (uplo == blas_lower) {
439 	for (i = 0, yi = yi0, ai = 0; i < n; i++, yi += incy, ai += incai) {
440 	  sum1[0] = sum1[1] = 0.0;
441 	  sum2[0] = sum2[1] = 0.0;
442 	  for (j = 0, aij = ai, xi = xi0; j < i;
443 	       j++, aij += incaij, xi += incx) {
444 	    a_elem[0] = a_i[aij];
445 	    a_elem[1] = a_i[aij + 1];
446 	    x_elem[0] = x_head_i[xi];
447 	    x_elem[1] = x_head_i[xi + 1];
448 	    {
449 	      prod1[0] =
450 		(double) a_elem[0] * x_elem[0] -
451 		(double) a_elem[1] * x_elem[1];
452 	      prod1[1] =
453 		(double) a_elem[0] * x_elem[1] +
454 		(double) a_elem[1] * x_elem[0];
455 	    }
456 	    sum1[0] = sum1[0] + prod1[0];
457 	    sum1[1] = sum1[1] + prod1[1];
458 	    x_elem[0] = x_tail_i[xi];
459 	    x_elem[1] = x_tail_i[xi + 1];
460 	    {
461 	      prod2[0] =
462 		(double) a_elem[0] * x_elem[0] -
463 		(double) a_elem[1] * x_elem[1];
464 	      prod2[1] =
465 		(double) a_elem[0] * x_elem[1] +
466 		(double) a_elem[1] * x_elem[0];
467 	    }
468 	    sum2[0] = sum2[0] + prod2[0];
469 	    sum2[1] = sum2[1] + prod2[1];
470 	  }
471 
472 	  diag_elem = a_i[aij];
473 	  x_elem[0] = x_head_i[xi];
474 	  x_elem[1] = x_head_i[xi + 1];
475 	  {
476 	    prod1[0] = x_elem[0] * diag_elem;
477 	    prod1[1] = x_elem[1] * diag_elem;
478 	  }
479 	  sum1[0] = sum1[0] + prod1[0];
480 	  sum1[1] = sum1[1] + prod1[1];
481 	  x_elem[0] = x_tail_i[xi];
482 	  x_elem[1] = x_tail_i[xi + 1];
483 	  {
484 	    prod2[0] = x_elem[0] * diag_elem;
485 	    prod2[1] = x_elem[1] * diag_elem;
486 	  }
487 	  sum2[0] = sum2[0] + prod2[0];
488 	  sum2[1] = sum2[1] + prod2[1];
489 	  j++;
490 	  aij += incaij2;
491 	  xi += incx;
492 
493 	  for (; j < n; j++, aij += incaij2, xi += incx) {
494 	    a_elem[0] = a_i[aij];
495 	    a_elem[1] = a_i[aij + 1];
496 	    a_elem[1] = -a_elem[1];
497 	    x_elem[0] = x_head_i[xi];
498 	    x_elem[1] = x_head_i[xi + 1];
499 	    {
500 	      prod1[0] =
501 		(double) a_elem[0] * x_elem[0] -
502 		(double) a_elem[1] * x_elem[1];
503 	      prod1[1] =
504 		(double) a_elem[0] * x_elem[1] +
505 		(double) a_elem[1] * x_elem[0];
506 	    }
507 	    sum1[0] = sum1[0] + prod1[0];
508 	    sum1[1] = sum1[1] + prod1[1];
509 	    x_elem[0] = x_tail_i[xi];
510 	    x_elem[1] = x_tail_i[xi + 1];
511 	    {
512 	      prod2[0] =
513 		(double) a_elem[0] * x_elem[0] -
514 		(double) a_elem[1] * x_elem[1];
515 	      prod2[1] =
516 		(double) a_elem[0] * x_elem[1] +
517 		(double) a_elem[1] * x_elem[0];
518 	    }
519 	    sum2[0] = sum2[0] + prod2[0];
520 	    sum2[1] = sum2[1] + prod2[1];
521 	  }
522 	  sum1[0] = sum1[0] + sum2[0];
523 	  sum1[1] = sum1[1] + sum2[1];
524 	  {
525 	    tmp1[0] =
526 	      (double) sum1[0] * alpha_i[0] - (double) sum1[1] * alpha_i[1];
527 	    tmp1[1] =
528 	      (double) sum1[0] * alpha_i[1] + (double) sum1[1] * alpha_i[0];
529 	  }
530 	  y_elem[0] = y_i[yi];
531 	  y_elem[1] = y_i[yi + 1];
532 	  {
533 	    tmp2[0] =
534 	      (double) y_elem[0] * beta_i[0] - (double) y_elem[1] * beta_i[1];
535 	    tmp2[1] =
536 	      (double) y_elem[0] * beta_i[1] + (double) y_elem[1] * beta_i[0];
537 	  }
538 	  tmp3[0] = tmp1[0] + tmp2[0];
539 	  tmp3[1] = tmp1[1] + tmp2[1];
540 	  y_i[yi] = tmp3[0];
541 	  y_i[yi + 1] = tmp3[1];
542 	}
543       } else {
544 	/* uplo == blas_upper */
545 	for (i = 0, yi = yi0, ai = 0; i < n; i++, yi += incy, ai += incai) {
546 	  sum1[0] = sum1[1] = 0.0;
547 	  sum2[0] = sum2[1] = 0.0;
548 
549 	  for (j = 0, aij = ai, xi = xi0; j < i;
550 	       j++, aij += incaij, xi += incx) {
551 	    a_elem[0] = a_i[aij];
552 	    a_elem[1] = a_i[aij + 1];
553 	    a_elem[1] = -a_elem[1];
554 	    x_elem[0] = x_head_i[xi];
555 	    x_elem[1] = x_head_i[xi + 1];
556 	    {
557 	      prod1[0] =
558 		(double) a_elem[0] * x_elem[0] -
559 		(double) a_elem[1] * x_elem[1];
560 	      prod1[1] =
561 		(double) a_elem[0] * x_elem[1] +
562 		(double) a_elem[1] * x_elem[0];
563 	    }
564 	    sum1[0] = sum1[0] + prod1[0];
565 	    sum1[1] = sum1[1] + prod1[1];
566 	    x_elem[0] = x_tail_i[xi];
567 	    x_elem[1] = x_tail_i[xi + 1];
568 	    {
569 	      prod2[0] =
570 		(double) a_elem[0] * x_elem[0] -
571 		(double) a_elem[1] * x_elem[1];
572 	      prod2[1] =
573 		(double) a_elem[0] * x_elem[1] +
574 		(double) a_elem[1] * x_elem[0];
575 	    }
576 	    sum2[0] = sum2[0] + prod2[0];
577 	    sum2[1] = sum2[1] + prod2[1];
578 	  }
579 
580 	  diag_elem = a_i[aij];
581 	  x_elem[0] = x_head_i[xi];
582 	  x_elem[1] = x_head_i[xi + 1];
583 	  {
584 	    prod1[0] = x_elem[0] * diag_elem;
585 	    prod1[1] = x_elem[1] * diag_elem;
586 	  }
587 	  sum1[0] = sum1[0] + prod1[0];
588 	  sum1[1] = sum1[1] + prod1[1];
589 	  x_elem[0] = x_tail_i[xi];
590 	  x_elem[1] = x_tail_i[xi + 1];
591 	  {
592 	    prod2[0] = x_elem[0] * diag_elem;
593 	    prod2[1] = x_elem[1] * diag_elem;
594 	  }
595 	  sum2[0] = sum2[0] + prod2[0];
596 	  sum2[1] = sum2[1] + prod2[1];
597 	  j++;
598 	  aij += incaij2;
599 	  xi += incx;
600 
601 	  for (; j < n; j++, aij += incaij2, xi += incx) {
602 	    a_elem[0] = a_i[aij];
603 	    a_elem[1] = a_i[aij + 1];
604 	    x_elem[0] = x_head_i[xi];
605 	    x_elem[1] = x_head_i[xi + 1];
606 	    {
607 	      prod1[0] =
608 		(double) a_elem[0] * x_elem[0] -
609 		(double) a_elem[1] * x_elem[1];
610 	      prod1[1] =
611 		(double) a_elem[0] * x_elem[1] +
612 		(double) a_elem[1] * x_elem[0];
613 	    }
614 	    sum1[0] = sum1[0] + prod1[0];
615 	    sum1[1] = sum1[1] + prod1[1];
616 	    x_elem[0] = x_tail_i[xi];
617 	    x_elem[1] = x_tail_i[xi + 1];
618 	    {
619 	      prod2[0] =
620 		(double) a_elem[0] * x_elem[0] -
621 		(double) a_elem[1] * x_elem[1];
622 	      prod2[1] =
623 		(double) a_elem[0] * x_elem[1] +
624 		(double) a_elem[1] * x_elem[0];
625 	    }
626 	    sum2[0] = sum2[0] + prod2[0];
627 	    sum2[1] = sum2[1] + prod2[1];
628 	  }
629 	  sum1[0] = sum1[0] + sum2[0];
630 	  sum1[1] = sum1[1] + sum2[1];
631 	  {
632 	    tmp1[0] =
633 	      (double) sum1[0] * alpha_i[0] - (double) sum1[1] * alpha_i[1];
634 	    tmp1[1] =
635 	      (double) sum1[0] * alpha_i[1] + (double) sum1[1] * alpha_i[0];
636 	  }
637 	  y_elem[0] = y_i[yi];
638 	  y_elem[1] = y_i[yi + 1];
639 	  {
640 	    tmp2[0] =
641 	      (double) y_elem[0] * beta_i[0] - (double) y_elem[1] * beta_i[1];
642 	    tmp2[1] =
643 	      (double) y_elem[0] * beta_i[1] + (double) y_elem[1] * beta_i[0];
644 	  }
645 	  tmp3[0] = tmp1[0] + tmp2[0];
646 	  tmp3[1] = tmp1[1] + tmp2[1];
647 	  y_i[yi] = tmp3[0];
648 	  y_i[yi + 1] = tmp3[1];
649 	}
650       }
651 
652 
653 
654       break;
655     }
656 
657   case blas_prec_extra:{
658 
659       int i, j;
660       int xi, yi, xi0, yi0;
661       int aij, ai;
662       int incai;
663       int incaij, incaij2;
664 
665       const float *a_i = (float *) a;
666       const double *x_head_i = (double *) x_head;
667       const double *x_tail_i = (double *) x_tail;
668       double *y_i = (double *) y;
669       double *alpha_i = (double *) alpha;
670       double *beta_i = (double *) beta;
671       float a_elem[2];
672       double x_elem[2];
673       double y_elem[2];
674       float diag_elem;
675       double head_prod1[2], tail_prod1[2];
676       double head_prod2[2], tail_prod2[2];
677       double head_sum1[2], tail_sum1[2];
678       double head_sum2[2], tail_sum2[2];
679       double head_tmp1[2], tail_tmp1[2];
680       double head_tmp2[2], tail_tmp2[2];
681       double head_tmp3[2], tail_tmp3[2];
682 
683       FPU_FIX_DECL;
684 
685       /* Test for no-op */
686       if (n <= 0) {
687 	return;
688       }
689       if (alpha_i[0] == 0.0 && alpha_i[1] == 0.0
690 	  && (beta_i[0] == 1.0 && beta_i[1] == 0.0)) {
691 	return;
692       }
693 
694       /* Check for error conditions. */
695       if (n < 0) {
696 	BLAS_error(routine_name, -3, n, NULL);
697       }
698       if (lda < n) {
699 	BLAS_error(routine_name, -6, n, NULL);
700       }
701       if (incx == 0) {
702 	BLAS_error(routine_name, -9, incx, NULL);
703       }
704       if (incy == 0) {
705 	BLAS_error(routine_name, -12, incy, NULL);
706       }
707 
708       if ((order == blas_colmajor && uplo == blas_upper) ||
709 	  (order == blas_rowmajor && uplo == blas_lower)) {
710 	incai = lda;
711 	incaij = 1;
712 	incaij2 = lda;
713       } else {
714 	incai = 1;
715 	incaij = lda;
716 	incaij2 = 1;
717       }
718 
719       incx *= 2;
720       incy *= 2;
721       incai *= 2;
722       incaij *= 2;
723       incaij2 *= 2;
724       xi0 = (incx > 0) ? 0 : ((-n + 1) * incx);
725       yi0 = (incy > 0) ? 0 : ((-n + 1) * incy);
726 
727       FPU_FIX_START;
728 
729       /* The most general form,   y <--- alpha * A * (x_head + x_tail) + beta * y   */
730       if (uplo == blas_lower) {
731 	for (i = 0, yi = yi0, ai = 0; i < n; i++, yi += incy, ai += incai) {
732 	  head_sum1[0] = head_sum1[1] = tail_sum1[0] = tail_sum1[1] = 0.0;
733 	  head_sum2[0] = head_sum2[1] = tail_sum2[0] = tail_sum2[1] = 0.0;
734 	  for (j = 0, aij = ai, xi = xi0; j < i;
735 	       j++, aij += incaij, xi += incx) {
736 	    a_elem[0] = a_i[aij];
737 	    a_elem[1] = a_i[aij + 1];
738 	    x_elem[0] = x_head_i[xi];
739 	    x_elem[1] = x_head_i[xi + 1];
740 	    {
741 	      double cd[2];
742 	      cd[0] = (double) a_elem[0];
743 	      cd[1] = (double) a_elem[1];
744 	      {
745 		/* Compute complex-extra = complex-double * complex-double. */
746 		double head_t1, tail_t1;
747 		double head_t2, tail_t2;
748 		/* Real part */
749 		{
750 		  /* Compute double_double = double * double. */
751 		  double a1, a2, b1, b2, con;
752 
753 		  con = x_elem[0] * split;
754 		  a1 = con - x_elem[0];
755 		  a1 = con - a1;
756 		  a2 = x_elem[0] - a1;
757 		  con = cd[0] * split;
758 		  b1 = con - cd[0];
759 		  b1 = con - b1;
760 		  b2 = cd[0] - b1;
761 
762 		  head_t1 = x_elem[0] * cd[0];
763 		  tail_t1 =
764 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
765 		}
766 		{
767 		  /* Compute double_double = double * double. */
768 		  double a1, a2, b1, b2, con;
769 
770 		  con = x_elem[1] * split;
771 		  a1 = con - x_elem[1];
772 		  a1 = con - a1;
773 		  a2 = x_elem[1] - a1;
774 		  con = cd[1] * split;
775 		  b1 = con - cd[1];
776 		  b1 = con - b1;
777 		  b2 = cd[1] - b1;
778 
779 		  head_t2 = x_elem[1] * cd[1];
780 		  tail_t2 =
781 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
782 		}
783 		head_t2 = -head_t2;
784 		tail_t2 = -tail_t2;
785 		{
786 		  /* Compute double-double = double-double + double-double. */
787 		  double bv;
788 		  double s1, s2, t1, t2;
789 
790 		  /* Add two hi words. */
791 		  s1 = head_t1 + head_t2;
792 		  bv = s1 - head_t1;
793 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
794 
795 		  /* Add two lo words. */
796 		  t1 = tail_t1 + tail_t2;
797 		  bv = t1 - tail_t1;
798 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
799 
800 		  s2 += t1;
801 
802 		  /* Renormalize (s1, s2)  to  (t1, s2) */
803 		  t1 = s1 + s2;
804 		  s2 = s2 - (t1 - s1);
805 
806 		  t2 += s2;
807 
808 		  /* Renormalize (t1, t2)  */
809 		  head_t1 = t1 + t2;
810 		  tail_t1 = t2 - (head_t1 - t1);
811 		}
812 		head_prod1[0] = head_t1;
813 		tail_prod1[0] = tail_t1;
814 		/* Imaginary part */
815 		{
816 		  /* Compute double_double = double * double. */
817 		  double a1, a2, b1, b2, con;
818 
819 		  con = x_elem[1] * split;
820 		  a1 = con - x_elem[1];
821 		  a1 = con - a1;
822 		  a2 = x_elem[1] - a1;
823 		  con = cd[0] * split;
824 		  b1 = con - cd[0];
825 		  b1 = con - b1;
826 		  b2 = cd[0] - b1;
827 
828 		  head_t1 = x_elem[1] * cd[0];
829 		  tail_t1 =
830 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
831 		}
832 		{
833 		  /* Compute double_double = double * double. */
834 		  double a1, a2, b1, b2, con;
835 
836 		  con = x_elem[0] * split;
837 		  a1 = con - x_elem[0];
838 		  a1 = con - a1;
839 		  a2 = x_elem[0] - a1;
840 		  con = cd[1] * split;
841 		  b1 = con - cd[1];
842 		  b1 = con - b1;
843 		  b2 = cd[1] - b1;
844 
845 		  head_t2 = x_elem[0] * cd[1];
846 		  tail_t2 =
847 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
848 		}
849 		{
850 		  /* Compute double-double = double-double + double-double. */
851 		  double bv;
852 		  double s1, s2, t1, t2;
853 
854 		  /* Add two hi words. */
855 		  s1 = head_t1 + head_t2;
856 		  bv = s1 - head_t1;
857 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
858 
859 		  /* Add two lo words. */
860 		  t1 = tail_t1 + tail_t2;
861 		  bv = t1 - tail_t1;
862 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
863 
864 		  s2 += t1;
865 
866 		  /* Renormalize (s1, s2)  to  (t1, s2) */
867 		  t1 = s1 + s2;
868 		  s2 = s2 - (t1 - s1);
869 
870 		  t2 += s2;
871 
872 		  /* Renormalize (t1, t2)  */
873 		  head_t1 = t1 + t2;
874 		  tail_t1 = t2 - (head_t1 - t1);
875 		}
876 		head_prod1[1] = head_t1;
877 		tail_prod1[1] = tail_t1;
878 	      }
879 	    }
880 	    {
881 	      double head_t, tail_t;
882 	      double head_a, tail_a;
883 	      double head_b, tail_b;
884 	      /* Real part */
885 	      head_a = head_sum1[0];
886 	      tail_a = tail_sum1[0];
887 	      head_b = head_prod1[0];
888 	      tail_b = tail_prod1[0];
889 	      {
890 		/* Compute double-double = double-double + double-double. */
891 		double bv;
892 		double s1, s2, t1, t2;
893 
894 		/* Add two hi words. */
895 		s1 = head_a + head_b;
896 		bv = s1 - head_a;
897 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
898 
899 		/* Add two lo words. */
900 		t1 = tail_a + tail_b;
901 		bv = t1 - tail_a;
902 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
903 
904 		s2 += t1;
905 
906 		/* Renormalize (s1, s2)  to  (t1, s2) */
907 		t1 = s1 + s2;
908 		s2 = s2 - (t1 - s1);
909 
910 		t2 += s2;
911 
912 		/* Renormalize (t1, t2)  */
913 		head_t = t1 + t2;
914 		tail_t = t2 - (head_t - t1);
915 	      }
916 	      head_sum1[0] = head_t;
917 	      tail_sum1[0] = tail_t;
918 	      /* Imaginary part */
919 	      head_a = head_sum1[1];
920 	      tail_a = tail_sum1[1];
921 	      head_b = head_prod1[1];
922 	      tail_b = tail_prod1[1];
923 	      {
924 		/* Compute double-double = double-double + double-double. */
925 		double bv;
926 		double s1, s2, t1, t2;
927 
928 		/* Add two hi words. */
929 		s1 = head_a + head_b;
930 		bv = s1 - head_a;
931 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
932 
933 		/* Add two lo words. */
934 		t1 = tail_a + tail_b;
935 		bv = t1 - tail_a;
936 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
937 
938 		s2 += t1;
939 
940 		/* Renormalize (s1, s2)  to  (t1, s2) */
941 		t1 = s1 + s2;
942 		s2 = s2 - (t1 - s1);
943 
944 		t2 += s2;
945 
946 		/* Renormalize (t1, t2)  */
947 		head_t = t1 + t2;
948 		tail_t = t2 - (head_t - t1);
949 	      }
950 	      head_sum1[1] = head_t;
951 	      tail_sum1[1] = tail_t;
952 	    }
953 	    x_elem[0] = x_tail_i[xi];
954 	    x_elem[1] = x_tail_i[xi + 1];
955 	    {
956 	      double cd[2];
957 	      cd[0] = (double) a_elem[0];
958 	      cd[1] = (double) a_elem[1];
959 	      {
960 		/* Compute complex-extra = complex-double * complex-double. */
961 		double head_t1, tail_t1;
962 		double head_t2, tail_t2;
963 		/* Real part */
964 		{
965 		  /* Compute double_double = double * double. */
966 		  double a1, a2, b1, b2, con;
967 
968 		  con = x_elem[0] * split;
969 		  a1 = con - x_elem[0];
970 		  a1 = con - a1;
971 		  a2 = x_elem[0] - a1;
972 		  con = cd[0] * split;
973 		  b1 = con - cd[0];
974 		  b1 = con - b1;
975 		  b2 = cd[0] - b1;
976 
977 		  head_t1 = x_elem[0] * cd[0];
978 		  tail_t1 =
979 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
980 		}
981 		{
982 		  /* Compute double_double = double * double. */
983 		  double a1, a2, b1, b2, con;
984 
985 		  con = x_elem[1] * split;
986 		  a1 = con - x_elem[1];
987 		  a1 = con - a1;
988 		  a2 = x_elem[1] - a1;
989 		  con = cd[1] * split;
990 		  b1 = con - cd[1];
991 		  b1 = con - b1;
992 		  b2 = cd[1] - b1;
993 
994 		  head_t2 = x_elem[1] * cd[1];
995 		  tail_t2 =
996 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
997 		}
998 		head_t2 = -head_t2;
999 		tail_t2 = -tail_t2;
1000 		{
1001 		  /* Compute double-double = double-double + double-double. */
1002 		  double bv;
1003 		  double s1, s2, t1, t2;
1004 
1005 		  /* Add two hi words. */
1006 		  s1 = head_t1 + head_t2;
1007 		  bv = s1 - head_t1;
1008 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
1009 
1010 		  /* Add two lo words. */
1011 		  t1 = tail_t1 + tail_t2;
1012 		  bv = t1 - tail_t1;
1013 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
1014 
1015 		  s2 += t1;
1016 
1017 		  /* Renormalize (s1, s2)  to  (t1, s2) */
1018 		  t1 = s1 + s2;
1019 		  s2 = s2 - (t1 - s1);
1020 
1021 		  t2 += s2;
1022 
1023 		  /* Renormalize (t1, t2)  */
1024 		  head_t1 = t1 + t2;
1025 		  tail_t1 = t2 - (head_t1 - t1);
1026 		}
1027 		head_prod2[0] = head_t1;
1028 		tail_prod2[0] = tail_t1;
1029 		/* Imaginary part */
1030 		{
1031 		  /* Compute double_double = double * double. */
1032 		  double a1, a2, b1, b2, con;
1033 
1034 		  con = x_elem[1] * split;
1035 		  a1 = con - x_elem[1];
1036 		  a1 = con - a1;
1037 		  a2 = x_elem[1] - a1;
1038 		  con = cd[0] * split;
1039 		  b1 = con - cd[0];
1040 		  b1 = con - b1;
1041 		  b2 = cd[0] - b1;
1042 
1043 		  head_t1 = x_elem[1] * cd[0];
1044 		  tail_t1 =
1045 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
1046 		}
1047 		{
1048 		  /* Compute double_double = double * double. */
1049 		  double a1, a2, b1, b2, con;
1050 
1051 		  con = x_elem[0] * split;
1052 		  a1 = con - x_elem[0];
1053 		  a1 = con - a1;
1054 		  a2 = x_elem[0] - a1;
1055 		  con = cd[1] * split;
1056 		  b1 = con - cd[1];
1057 		  b1 = con - b1;
1058 		  b2 = cd[1] - b1;
1059 
1060 		  head_t2 = x_elem[0] * cd[1];
1061 		  tail_t2 =
1062 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
1063 		}
1064 		{
1065 		  /* Compute double-double = double-double + double-double. */
1066 		  double bv;
1067 		  double s1, s2, t1, t2;
1068 
1069 		  /* Add two hi words. */
1070 		  s1 = head_t1 + head_t2;
1071 		  bv = s1 - head_t1;
1072 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
1073 
1074 		  /* Add two lo words. */
1075 		  t1 = tail_t1 + tail_t2;
1076 		  bv = t1 - tail_t1;
1077 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
1078 
1079 		  s2 += t1;
1080 
1081 		  /* Renormalize (s1, s2)  to  (t1, s2) */
1082 		  t1 = s1 + s2;
1083 		  s2 = s2 - (t1 - s1);
1084 
1085 		  t2 += s2;
1086 
1087 		  /* Renormalize (t1, t2)  */
1088 		  head_t1 = t1 + t2;
1089 		  tail_t1 = t2 - (head_t1 - t1);
1090 		}
1091 		head_prod2[1] = head_t1;
1092 		tail_prod2[1] = tail_t1;
1093 	      }
1094 	    }
1095 	    {
1096 	      double head_t, tail_t;
1097 	      double head_a, tail_a;
1098 	      double head_b, tail_b;
1099 	      /* Real part */
1100 	      head_a = head_sum2[0];
1101 	      tail_a = tail_sum2[0];
1102 	      head_b = head_prod2[0];
1103 	      tail_b = tail_prod2[0];
1104 	      {
1105 		/* Compute double-double = double-double + double-double. */
1106 		double bv;
1107 		double s1, s2, t1, t2;
1108 
1109 		/* Add two hi words. */
1110 		s1 = head_a + head_b;
1111 		bv = s1 - head_a;
1112 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1113 
1114 		/* Add two lo words. */
1115 		t1 = tail_a + tail_b;
1116 		bv = t1 - tail_a;
1117 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1118 
1119 		s2 += t1;
1120 
1121 		/* Renormalize (s1, s2)  to  (t1, s2) */
1122 		t1 = s1 + s2;
1123 		s2 = s2 - (t1 - s1);
1124 
1125 		t2 += s2;
1126 
1127 		/* Renormalize (t1, t2)  */
1128 		head_t = t1 + t2;
1129 		tail_t = t2 - (head_t - t1);
1130 	      }
1131 	      head_sum2[0] = head_t;
1132 	      tail_sum2[0] = tail_t;
1133 	      /* Imaginary part */
1134 	      head_a = head_sum2[1];
1135 	      tail_a = tail_sum2[1];
1136 	      head_b = head_prod2[1];
1137 	      tail_b = tail_prod2[1];
1138 	      {
1139 		/* Compute double-double = double-double + double-double. */
1140 		double bv;
1141 		double s1, s2, t1, t2;
1142 
1143 		/* Add two hi words. */
1144 		s1 = head_a + head_b;
1145 		bv = s1 - head_a;
1146 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1147 
1148 		/* Add two lo words. */
1149 		t1 = tail_a + tail_b;
1150 		bv = t1 - tail_a;
1151 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1152 
1153 		s2 += t1;
1154 
1155 		/* Renormalize (s1, s2)  to  (t1, s2) */
1156 		t1 = s1 + s2;
1157 		s2 = s2 - (t1 - s1);
1158 
1159 		t2 += s2;
1160 
1161 		/* Renormalize (t1, t2)  */
1162 		head_t = t1 + t2;
1163 		tail_t = t2 - (head_t - t1);
1164 	      }
1165 	      head_sum2[1] = head_t;
1166 	      tail_sum2[1] = tail_t;
1167 	    }
1168 	  }
1169 
1170 	  diag_elem = a_i[aij];
1171 	  x_elem[0] = x_head_i[xi];
1172 	  x_elem[1] = x_head_i[xi + 1];
1173 	  {
1174 	    double dt = (double) diag_elem;
1175 	    {
1176 	      /* Compute complex-extra = complex-double * real. */
1177 	      double head_t, tail_t;
1178 	      {
1179 		/* Compute double_double = double * double. */
1180 		double a1, a2, b1, b2, con;
1181 
1182 		con = dt * split;
1183 		a1 = con - dt;
1184 		a1 = con - a1;
1185 		a2 = dt - a1;
1186 		con = x_elem[0] * split;
1187 		b1 = con - x_elem[0];
1188 		b1 = con - b1;
1189 		b2 = x_elem[0] - b1;
1190 
1191 		head_t = dt * x_elem[0];
1192 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
1193 	      }
1194 	      head_prod1[0] = head_t;
1195 	      tail_prod1[0] = tail_t;
1196 	      {
1197 		/* Compute double_double = double * double. */
1198 		double a1, a2, b1, b2, con;
1199 
1200 		con = dt * split;
1201 		a1 = con - dt;
1202 		a1 = con - a1;
1203 		a2 = dt - a1;
1204 		con = x_elem[1] * split;
1205 		b1 = con - x_elem[1];
1206 		b1 = con - b1;
1207 		b2 = x_elem[1] - b1;
1208 
1209 		head_t = dt * x_elem[1];
1210 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
1211 	      }
1212 	      head_prod1[1] = head_t;
1213 	      tail_prod1[1] = tail_t;
1214 	    }
1215 	  }
1216 	  {
1217 	    double head_t, tail_t;
1218 	    double head_a, tail_a;
1219 	    double head_b, tail_b;
1220 	    /* Real part */
1221 	    head_a = head_sum1[0];
1222 	    tail_a = tail_sum1[0];
1223 	    head_b = head_prod1[0];
1224 	    tail_b = tail_prod1[0];
1225 	    {
1226 	      /* Compute double-double = double-double + double-double. */
1227 	      double bv;
1228 	      double s1, s2, t1, t2;
1229 
1230 	      /* Add two hi words. */
1231 	      s1 = head_a + head_b;
1232 	      bv = s1 - head_a;
1233 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1234 
1235 	      /* Add two lo words. */
1236 	      t1 = tail_a + tail_b;
1237 	      bv = t1 - tail_a;
1238 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1239 
1240 	      s2 += t1;
1241 
1242 	      /* Renormalize (s1, s2)  to  (t1, s2) */
1243 	      t1 = s1 + s2;
1244 	      s2 = s2 - (t1 - s1);
1245 
1246 	      t2 += s2;
1247 
1248 	      /* Renormalize (t1, t2)  */
1249 	      head_t = t1 + t2;
1250 	      tail_t = t2 - (head_t - t1);
1251 	    }
1252 	    head_sum1[0] = head_t;
1253 	    tail_sum1[0] = tail_t;
1254 	    /* Imaginary part */
1255 	    head_a = head_sum1[1];
1256 	    tail_a = tail_sum1[1];
1257 	    head_b = head_prod1[1];
1258 	    tail_b = tail_prod1[1];
1259 	    {
1260 	      /* Compute double-double = double-double + double-double. */
1261 	      double bv;
1262 	      double s1, s2, t1, t2;
1263 
1264 	      /* Add two hi words. */
1265 	      s1 = head_a + head_b;
1266 	      bv = s1 - head_a;
1267 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1268 
1269 	      /* Add two lo words. */
1270 	      t1 = tail_a + tail_b;
1271 	      bv = t1 - tail_a;
1272 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1273 
1274 	      s2 += t1;
1275 
1276 	      /* Renormalize (s1, s2)  to  (t1, s2) */
1277 	      t1 = s1 + s2;
1278 	      s2 = s2 - (t1 - s1);
1279 
1280 	      t2 += s2;
1281 
1282 	      /* Renormalize (t1, t2)  */
1283 	      head_t = t1 + t2;
1284 	      tail_t = t2 - (head_t - t1);
1285 	    }
1286 	    head_sum1[1] = head_t;
1287 	    tail_sum1[1] = tail_t;
1288 	  }
1289 	  x_elem[0] = x_tail_i[xi];
1290 	  x_elem[1] = x_tail_i[xi + 1];
1291 	  {
1292 	    double dt = (double) diag_elem;
1293 	    {
1294 	      /* Compute complex-extra = complex-double * real. */
1295 	      double head_t, tail_t;
1296 	      {
1297 		/* Compute double_double = double * double. */
1298 		double a1, a2, b1, b2, con;
1299 
1300 		con = dt * split;
1301 		a1 = con - dt;
1302 		a1 = con - a1;
1303 		a2 = dt - a1;
1304 		con = x_elem[0] * split;
1305 		b1 = con - x_elem[0];
1306 		b1 = con - b1;
1307 		b2 = x_elem[0] - b1;
1308 
1309 		head_t = dt * x_elem[0];
1310 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
1311 	      }
1312 	      head_prod2[0] = head_t;
1313 	      tail_prod2[0] = tail_t;
1314 	      {
1315 		/* Compute double_double = double * double. */
1316 		double a1, a2, b1, b2, con;
1317 
1318 		con = dt * split;
1319 		a1 = con - dt;
1320 		a1 = con - a1;
1321 		a2 = dt - a1;
1322 		con = x_elem[1] * split;
1323 		b1 = con - x_elem[1];
1324 		b1 = con - b1;
1325 		b2 = x_elem[1] - b1;
1326 
1327 		head_t = dt * x_elem[1];
1328 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
1329 	      }
1330 	      head_prod2[1] = head_t;
1331 	      tail_prod2[1] = tail_t;
1332 	    }
1333 	  }
1334 	  {
1335 	    double head_t, tail_t;
1336 	    double head_a, tail_a;
1337 	    double head_b, tail_b;
1338 	    /* Real part */
1339 	    head_a = head_sum2[0];
1340 	    tail_a = tail_sum2[0];
1341 	    head_b = head_prod2[0];
1342 	    tail_b = tail_prod2[0];
1343 	    {
1344 	      /* Compute double-double = double-double + double-double. */
1345 	      double bv;
1346 	      double s1, s2, t1, t2;
1347 
1348 	      /* Add two hi words. */
1349 	      s1 = head_a + head_b;
1350 	      bv = s1 - head_a;
1351 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1352 
1353 	      /* Add two lo words. */
1354 	      t1 = tail_a + tail_b;
1355 	      bv = t1 - tail_a;
1356 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1357 
1358 	      s2 += t1;
1359 
1360 	      /* Renormalize (s1, s2)  to  (t1, s2) */
1361 	      t1 = s1 + s2;
1362 	      s2 = s2 - (t1 - s1);
1363 
1364 	      t2 += s2;
1365 
1366 	      /* Renormalize (t1, t2)  */
1367 	      head_t = t1 + t2;
1368 	      tail_t = t2 - (head_t - t1);
1369 	    }
1370 	    head_sum2[0] = head_t;
1371 	    tail_sum2[0] = tail_t;
1372 	    /* Imaginary part */
1373 	    head_a = head_sum2[1];
1374 	    tail_a = tail_sum2[1];
1375 	    head_b = head_prod2[1];
1376 	    tail_b = tail_prod2[1];
1377 	    {
1378 	      /* Compute double-double = double-double + double-double. */
1379 	      double bv;
1380 	      double s1, s2, t1, t2;
1381 
1382 	      /* Add two hi words. */
1383 	      s1 = head_a + head_b;
1384 	      bv = s1 - head_a;
1385 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1386 
1387 	      /* Add two lo words. */
1388 	      t1 = tail_a + tail_b;
1389 	      bv = t1 - tail_a;
1390 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1391 
1392 	      s2 += t1;
1393 
1394 	      /* Renormalize (s1, s2)  to  (t1, s2) */
1395 	      t1 = s1 + s2;
1396 	      s2 = s2 - (t1 - s1);
1397 
1398 	      t2 += s2;
1399 
1400 	      /* Renormalize (t1, t2)  */
1401 	      head_t = t1 + t2;
1402 	      tail_t = t2 - (head_t - t1);
1403 	    }
1404 	    head_sum2[1] = head_t;
1405 	    tail_sum2[1] = tail_t;
1406 	  }
1407 	  j++;
1408 	  aij += incaij2;
1409 	  xi += incx;
1410 
1411 	  for (; j < n; j++, aij += incaij2, xi += incx) {
1412 	    a_elem[0] = a_i[aij];
1413 	    a_elem[1] = a_i[aij + 1];
1414 	    a_elem[1] = -a_elem[1];
1415 	    x_elem[0] = x_head_i[xi];
1416 	    x_elem[1] = x_head_i[xi + 1];
1417 	    {
1418 	      double cd[2];
1419 	      cd[0] = (double) a_elem[0];
1420 	      cd[1] = (double) a_elem[1];
1421 	      {
1422 		/* Compute complex-extra = complex-double * complex-double. */
1423 		double head_t1, tail_t1;
1424 		double head_t2, tail_t2;
1425 		/* Real part */
1426 		{
1427 		  /* Compute double_double = double * double. */
1428 		  double a1, a2, b1, b2, con;
1429 
1430 		  con = x_elem[0] * split;
1431 		  a1 = con - x_elem[0];
1432 		  a1 = con - a1;
1433 		  a2 = x_elem[0] - a1;
1434 		  con = cd[0] * split;
1435 		  b1 = con - cd[0];
1436 		  b1 = con - b1;
1437 		  b2 = cd[0] - b1;
1438 
1439 		  head_t1 = x_elem[0] * cd[0];
1440 		  tail_t1 =
1441 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
1442 		}
1443 		{
1444 		  /* Compute double_double = double * double. */
1445 		  double a1, a2, b1, b2, con;
1446 
1447 		  con = x_elem[1] * split;
1448 		  a1 = con - x_elem[1];
1449 		  a1 = con - a1;
1450 		  a2 = x_elem[1] - a1;
1451 		  con = cd[1] * split;
1452 		  b1 = con - cd[1];
1453 		  b1 = con - b1;
1454 		  b2 = cd[1] - b1;
1455 
1456 		  head_t2 = x_elem[1] * cd[1];
1457 		  tail_t2 =
1458 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
1459 		}
1460 		head_t2 = -head_t2;
1461 		tail_t2 = -tail_t2;
1462 		{
1463 		  /* Compute double-double = double-double + double-double. */
1464 		  double bv;
1465 		  double s1, s2, t1, t2;
1466 
1467 		  /* Add two hi words. */
1468 		  s1 = head_t1 + head_t2;
1469 		  bv = s1 - head_t1;
1470 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
1471 
1472 		  /* Add two lo words. */
1473 		  t1 = tail_t1 + tail_t2;
1474 		  bv = t1 - tail_t1;
1475 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
1476 
1477 		  s2 += t1;
1478 
1479 		  /* Renormalize (s1, s2)  to  (t1, s2) */
1480 		  t1 = s1 + s2;
1481 		  s2 = s2 - (t1 - s1);
1482 
1483 		  t2 += s2;
1484 
1485 		  /* Renormalize (t1, t2)  */
1486 		  head_t1 = t1 + t2;
1487 		  tail_t1 = t2 - (head_t1 - t1);
1488 		}
1489 		head_prod1[0] = head_t1;
1490 		tail_prod1[0] = tail_t1;
1491 		/* Imaginary part */
1492 		{
1493 		  /* Compute double_double = double * double. */
1494 		  double a1, a2, b1, b2, con;
1495 
1496 		  con = x_elem[1] * split;
1497 		  a1 = con - x_elem[1];
1498 		  a1 = con - a1;
1499 		  a2 = x_elem[1] - a1;
1500 		  con = cd[0] * split;
1501 		  b1 = con - cd[0];
1502 		  b1 = con - b1;
1503 		  b2 = cd[0] - b1;
1504 
1505 		  head_t1 = x_elem[1] * cd[0];
1506 		  tail_t1 =
1507 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
1508 		}
1509 		{
1510 		  /* Compute double_double = double * double. */
1511 		  double a1, a2, b1, b2, con;
1512 
1513 		  con = x_elem[0] * split;
1514 		  a1 = con - x_elem[0];
1515 		  a1 = con - a1;
1516 		  a2 = x_elem[0] - a1;
1517 		  con = cd[1] * split;
1518 		  b1 = con - cd[1];
1519 		  b1 = con - b1;
1520 		  b2 = cd[1] - b1;
1521 
1522 		  head_t2 = x_elem[0] * cd[1];
1523 		  tail_t2 =
1524 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
1525 		}
1526 		{
1527 		  /* Compute double-double = double-double + double-double. */
1528 		  double bv;
1529 		  double s1, s2, t1, t2;
1530 
1531 		  /* Add two hi words. */
1532 		  s1 = head_t1 + head_t2;
1533 		  bv = s1 - head_t1;
1534 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
1535 
1536 		  /* Add two lo words. */
1537 		  t1 = tail_t1 + tail_t2;
1538 		  bv = t1 - tail_t1;
1539 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
1540 
1541 		  s2 += t1;
1542 
1543 		  /* Renormalize (s1, s2)  to  (t1, s2) */
1544 		  t1 = s1 + s2;
1545 		  s2 = s2 - (t1 - s1);
1546 
1547 		  t2 += s2;
1548 
1549 		  /* Renormalize (t1, t2)  */
1550 		  head_t1 = t1 + t2;
1551 		  tail_t1 = t2 - (head_t1 - t1);
1552 		}
1553 		head_prod1[1] = head_t1;
1554 		tail_prod1[1] = tail_t1;
1555 	      }
1556 	    }
1557 	    {
1558 	      double head_t, tail_t;
1559 	      double head_a, tail_a;
1560 	      double head_b, tail_b;
1561 	      /* Real part */
1562 	      head_a = head_sum1[0];
1563 	      tail_a = tail_sum1[0];
1564 	      head_b = head_prod1[0];
1565 	      tail_b = tail_prod1[0];
1566 	      {
1567 		/* Compute double-double = double-double + double-double. */
1568 		double bv;
1569 		double s1, s2, t1, t2;
1570 
1571 		/* Add two hi words. */
1572 		s1 = head_a + head_b;
1573 		bv = s1 - head_a;
1574 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1575 
1576 		/* Add two lo words. */
1577 		t1 = tail_a + tail_b;
1578 		bv = t1 - tail_a;
1579 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1580 
1581 		s2 += t1;
1582 
1583 		/* Renormalize (s1, s2)  to  (t1, s2) */
1584 		t1 = s1 + s2;
1585 		s2 = s2 - (t1 - s1);
1586 
1587 		t2 += s2;
1588 
1589 		/* Renormalize (t1, t2)  */
1590 		head_t = t1 + t2;
1591 		tail_t = t2 - (head_t - t1);
1592 	      }
1593 	      head_sum1[0] = head_t;
1594 	      tail_sum1[0] = tail_t;
1595 	      /* Imaginary part */
1596 	      head_a = head_sum1[1];
1597 	      tail_a = tail_sum1[1];
1598 	      head_b = head_prod1[1];
1599 	      tail_b = tail_prod1[1];
1600 	      {
1601 		/* Compute double-double = double-double + double-double. */
1602 		double bv;
1603 		double s1, s2, t1, t2;
1604 
1605 		/* Add two hi words. */
1606 		s1 = head_a + head_b;
1607 		bv = s1 - head_a;
1608 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1609 
1610 		/* Add two lo words. */
1611 		t1 = tail_a + tail_b;
1612 		bv = t1 - tail_a;
1613 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1614 
1615 		s2 += t1;
1616 
1617 		/* Renormalize (s1, s2)  to  (t1, s2) */
1618 		t1 = s1 + s2;
1619 		s2 = s2 - (t1 - s1);
1620 
1621 		t2 += s2;
1622 
1623 		/* Renormalize (t1, t2)  */
1624 		head_t = t1 + t2;
1625 		tail_t = t2 - (head_t - t1);
1626 	      }
1627 	      head_sum1[1] = head_t;
1628 	      tail_sum1[1] = tail_t;
1629 	    }
1630 	    x_elem[0] = x_tail_i[xi];
1631 	    x_elem[1] = x_tail_i[xi + 1];
1632 	    {
1633 	      double cd[2];
1634 	      cd[0] = (double) a_elem[0];
1635 	      cd[1] = (double) a_elem[1];
1636 	      {
1637 		/* Compute complex-extra = complex-double * complex-double. */
1638 		double head_t1, tail_t1;
1639 		double head_t2, tail_t2;
1640 		/* Real part */
1641 		{
1642 		  /* Compute double_double = double * double. */
1643 		  double a1, a2, b1, b2, con;
1644 
1645 		  con = x_elem[0] * split;
1646 		  a1 = con - x_elem[0];
1647 		  a1 = con - a1;
1648 		  a2 = x_elem[0] - a1;
1649 		  con = cd[0] * split;
1650 		  b1 = con - cd[0];
1651 		  b1 = con - b1;
1652 		  b2 = cd[0] - b1;
1653 
1654 		  head_t1 = x_elem[0] * cd[0];
1655 		  tail_t1 =
1656 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
1657 		}
1658 		{
1659 		  /* Compute double_double = double * double. */
1660 		  double a1, a2, b1, b2, con;
1661 
1662 		  con = x_elem[1] * split;
1663 		  a1 = con - x_elem[1];
1664 		  a1 = con - a1;
1665 		  a2 = x_elem[1] - a1;
1666 		  con = cd[1] * split;
1667 		  b1 = con - cd[1];
1668 		  b1 = con - b1;
1669 		  b2 = cd[1] - b1;
1670 
1671 		  head_t2 = x_elem[1] * cd[1];
1672 		  tail_t2 =
1673 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
1674 		}
1675 		head_t2 = -head_t2;
1676 		tail_t2 = -tail_t2;
1677 		{
1678 		  /* Compute double-double = double-double + double-double. */
1679 		  double bv;
1680 		  double s1, s2, t1, t2;
1681 
1682 		  /* Add two hi words. */
1683 		  s1 = head_t1 + head_t2;
1684 		  bv = s1 - head_t1;
1685 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
1686 
1687 		  /* Add two lo words. */
1688 		  t1 = tail_t1 + tail_t2;
1689 		  bv = t1 - tail_t1;
1690 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
1691 
1692 		  s2 += t1;
1693 
1694 		  /* Renormalize (s1, s2)  to  (t1, s2) */
1695 		  t1 = s1 + s2;
1696 		  s2 = s2 - (t1 - s1);
1697 
1698 		  t2 += s2;
1699 
1700 		  /* Renormalize (t1, t2)  */
1701 		  head_t1 = t1 + t2;
1702 		  tail_t1 = t2 - (head_t1 - t1);
1703 		}
1704 		head_prod2[0] = head_t1;
1705 		tail_prod2[0] = tail_t1;
1706 		/* Imaginary part */
1707 		{
1708 		  /* Compute double_double = double * double. */
1709 		  double a1, a2, b1, b2, con;
1710 
1711 		  con = x_elem[1] * split;
1712 		  a1 = con - x_elem[1];
1713 		  a1 = con - a1;
1714 		  a2 = x_elem[1] - a1;
1715 		  con = cd[0] * split;
1716 		  b1 = con - cd[0];
1717 		  b1 = con - b1;
1718 		  b2 = cd[0] - b1;
1719 
1720 		  head_t1 = x_elem[1] * cd[0];
1721 		  tail_t1 =
1722 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
1723 		}
1724 		{
1725 		  /* Compute double_double = double * double. */
1726 		  double a1, a2, b1, b2, con;
1727 
1728 		  con = x_elem[0] * split;
1729 		  a1 = con - x_elem[0];
1730 		  a1 = con - a1;
1731 		  a2 = x_elem[0] - a1;
1732 		  con = cd[1] * split;
1733 		  b1 = con - cd[1];
1734 		  b1 = con - b1;
1735 		  b2 = cd[1] - b1;
1736 
1737 		  head_t2 = x_elem[0] * cd[1];
1738 		  tail_t2 =
1739 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
1740 		}
1741 		{
1742 		  /* Compute double-double = double-double + double-double. */
1743 		  double bv;
1744 		  double s1, s2, t1, t2;
1745 
1746 		  /* Add two hi words. */
1747 		  s1 = head_t1 + head_t2;
1748 		  bv = s1 - head_t1;
1749 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
1750 
1751 		  /* Add two lo words. */
1752 		  t1 = tail_t1 + tail_t2;
1753 		  bv = t1 - tail_t1;
1754 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
1755 
1756 		  s2 += t1;
1757 
1758 		  /* Renormalize (s1, s2)  to  (t1, s2) */
1759 		  t1 = s1 + s2;
1760 		  s2 = s2 - (t1 - s1);
1761 
1762 		  t2 += s2;
1763 
1764 		  /* Renormalize (t1, t2)  */
1765 		  head_t1 = t1 + t2;
1766 		  tail_t1 = t2 - (head_t1 - t1);
1767 		}
1768 		head_prod2[1] = head_t1;
1769 		tail_prod2[1] = tail_t1;
1770 	      }
1771 	    }
1772 	    {
1773 	      double head_t, tail_t;
1774 	      double head_a, tail_a;
1775 	      double head_b, tail_b;
1776 	      /* Real part */
1777 	      head_a = head_sum2[0];
1778 	      tail_a = tail_sum2[0];
1779 	      head_b = head_prod2[0];
1780 	      tail_b = tail_prod2[0];
1781 	      {
1782 		/* Compute double-double = double-double + double-double. */
1783 		double bv;
1784 		double s1, s2, t1, t2;
1785 
1786 		/* Add two hi words. */
1787 		s1 = head_a + head_b;
1788 		bv = s1 - head_a;
1789 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1790 
1791 		/* Add two lo words. */
1792 		t1 = tail_a + tail_b;
1793 		bv = t1 - tail_a;
1794 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1795 
1796 		s2 += t1;
1797 
1798 		/* Renormalize (s1, s2)  to  (t1, s2) */
1799 		t1 = s1 + s2;
1800 		s2 = s2 - (t1 - s1);
1801 
1802 		t2 += s2;
1803 
1804 		/* Renormalize (t1, t2)  */
1805 		head_t = t1 + t2;
1806 		tail_t = t2 - (head_t - t1);
1807 	      }
1808 	      head_sum2[0] = head_t;
1809 	      tail_sum2[0] = tail_t;
1810 	      /* Imaginary part */
1811 	      head_a = head_sum2[1];
1812 	      tail_a = tail_sum2[1];
1813 	      head_b = head_prod2[1];
1814 	      tail_b = tail_prod2[1];
1815 	      {
1816 		/* Compute double-double = double-double + double-double. */
1817 		double bv;
1818 		double s1, s2, t1, t2;
1819 
1820 		/* Add two hi words. */
1821 		s1 = head_a + head_b;
1822 		bv = s1 - head_a;
1823 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1824 
1825 		/* Add two lo words. */
1826 		t1 = tail_a + tail_b;
1827 		bv = t1 - tail_a;
1828 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1829 
1830 		s2 += t1;
1831 
1832 		/* Renormalize (s1, s2)  to  (t1, s2) */
1833 		t1 = s1 + s2;
1834 		s2 = s2 - (t1 - s1);
1835 
1836 		t2 += s2;
1837 
1838 		/* Renormalize (t1, t2)  */
1839 		head_t = t1 + t2;
1840 		tail_t = t2 - (head_t - t1);
1841 	      }
1842 	      head_sum2[1] = head_t;
1843 	      tail_sum2[1] = tail_t;
1844 	    }
1845 	  }
1846 	  {
1847 	    double head_t, tail_t;
1848 	    double head_a, tail_a;
1849 	    double head_b, tail_b;
1850 	    /* Real part */
1851 	    head_a = head_sum1[0];
1852 	    tail_a = tail_sum1[0];
1853 	    head_b = head_sum2[0];
1854 	    tail_b = tail_sum2[0];
1855 	    {
1856 	      /* Compute double-double = double-double + double-double. */
1857 	      double bv;
1858 	      double s1, s2, t1, t2;
1859 
1860 	      /* Add two hi words. */
1861 	      s1 = head_a + head_b;
1862 	      bv = s1 - head_a;
1863 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1864 
1865 	      /* Add two lo words. */
1866 	      t1 = tail_a + tail_b;
1867 	      bv = t1 - tail_a;
1868 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1869 
1870 	      s2 += t1;
1871 
1872 	      /* Renormalize (s1, s2)  to  (t1, s2) */
1873 	      t1 = s1 + s2;
1874 	      s2 = s2 - (t1 - s1);
1875 
1876 	      t2 += s2;
1877 
1878 	      /* Renormalize (t1, t2)  */
1879 	      head_t = t1 + t2;
1880 	      tail_t = t2 - (head_t - t1);
1881 	    }
1882 	    head_sum1[0] = head_t;
1883 	    tail_sum1[0] = tail_t;
1884 	    /* Imaginary part */
1885 	    head_a = head_sum1[1];
1886 	    tail_a = tail_sum1[1];
1887 	    head_b = head_sum2[1];
1888 	    tail_b = tail_sum2[1];
1889 	    {
1890 	      /* Compute double-double = double-double + double-double. */
1891 	      double bv;
1892 	      double s1, s2, t1, t2;
1893 
1894 	      /* Add two hi words. */
1895 	      s1 = head_a + head_b;
1896 	      bv = s1 - head_a;
1897 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
1898 
1899 	      /* Add two lo words. */
1900 	      t1 = tail_a + tail_b;
1901 	      bv = t1 - tail_a;
1902 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
1903 
1904 	      s2 += t1;
1905 
1906 	      /* Renormalize (s1, s2)  to  (t1, s2) */
1907 	      t1 = s1 + s2;
1908 	      s2 = s2 - (t1 - s1);
1909 
1910 	      t2 += s2;
1911 
1912 	      /* Renormalize (t1, t2)  */
1913 	      head_t = t1 + t2;
1914 	      tail_t = t2 - (head_t - t1);
1915 	    }
1916 	    head_sum1[1] = head_t;
1917 	    tail_sum1[1] = tail_t;
1918 	  }
1919 	  {
1920 	    /* Compute complex-extra = complex-extra * complex-double. */
1921 	    double head_a0, tail_a0;
1922 	    double head_a1, tail_a1;
1923 	    double head_t1, tail_t1;
1924 	    double head_t2, tail_t2;
1925 	    head_a0 = head_sum1[0];
1926 	    tail_a0 = tail_sum1[0];
1927 	    head_a1 = head_sum1[1];
1928 	    tail_a1 = tail_sum1[1];
1929 	    /* real part */
1930 	    {
1931 	      /* Compute double-double = double-double * double. */
1932 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
1933 
1934 	      con = head_a0 * split;
1935 	      a11 = con - head_a0;
1936 	      a11 = con - a11;
1937 	      a21 = head_a0 - a11;
1938 	      con = alpha_i[0] * split;
1939 	      b1 = con - alpha_i[0];
1940 	      b1 = con - b1;
1941 	      b2 = alpha_i[0] - b1;
1942 
1943 	      c11 = head_a0 * alpha_i[0];
1944 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
1945 
1946 	      c2 = tail_a0 * alpha_i[0];
1947 	      t1 = c11 + c2;
1948 	      t2 = (c2 - (t1 - c11)) + c21;
1949 
1950 	      head_t1 = t1 + t2;
1951 	      tail_t1 = t2 - (head_t1 - t1);
1952 	    }
1953 	    {
1954 	      /* Compute double-double = double-double * double. */
1955 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
1956 
1957 	      con = head_a1 * split;
1958 	      a11 = con - head_a1;
1959 	      a11 = con - a11;
1960 	      a21 = head_a1 - a11;
1961 	      con = alpha_i[1] * split;
1962 	      b1 = con - alpha_i[1];
1963 	      b1 = con - b1;
1964 	      b2 = alpha_i[1] - b1;
1965 
1966 	      c11 = head_a1 * alpha_i[1];
1967 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
1968 
1969 	      c2 = tail_a1 * alpha_i[1];
1970 	      t1 = c11 + c2;
1971 	      t2 = (c2 - (t1 - c11)) + c21;
1972 
1973 	      head_t2 = t1 + t2;
1974 	      tail_t2 = t2 - (head_t2 - t1);
1975 	    }
1976 	    head_t2 = -head_t2;
1977 	    tail_t2 = -tail_t2;
1978 	    {
1979 	      /* Compute double-double = double-double + double-double. */
1980 	      double bv;
1981 	      double s1, s2, t1, t2;
1982 
1983 	      /* Add two hi words. */
1984 	      s1 = head_t1 + head_t2;
1985 	      bv = s1 - head_t1;
1986 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
1987 
1988 	      /* Add two lo words. */
1989 	      t1 = tail_t1 + tail_t2;
1990 	      bv = t1 - tail_t1;
1991 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
1992 
1993 	      s2 += t1;
1994 
1995 	      /* Renormalize (s1, s2)  to  (t1, s2) */
1996 	      t1 = s1 + s2;
1997 	      s2 = s2 - (t1 - s1);
1998 
1999 	      t2 += s2;
2000 
2001 	      /* Renormalize (t1, t2)  */
2002 	      head_t1 = t1 + t2;
2003 	      tail_t1 = t2 - (head_t1 - t1);
2004 	    }
2005 	    head_tmp1[0] = head_t1;
2006 	    tail_tmp1[0] = tail_t1;
2007 	    /* imaginary part */
2008 	    {
2009 	      /* Compute double-double = double-double * double. */
2010 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
2011 
2012 	      con = head_a1 * split;
2013 	      a11 = con - head_a1;
2014 	      a11 = con - a11;
2015 	      a21 = head_a1 - a11;
2016 	      con = alpha_i[0] * split;
2017 	      b1 = con - alpha_i[0];
2018 	      b1 = con - b1;
2019 	      b2 = alpha_i[0] - b1;
2020 
2021 	      c11 = head_a1 * alpha_i[0];
2022 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
2023 
2024 	      c2 = tail_a1 * alpha_i[0];
2025 	      t1 = c11 + c2;
2026 	      t2 = (c2 - (t1 - c11)) + c21;
2027 
2028 	      head_t1 = t1 + t2;
2029 	      tail_t1 = t2 - (head_t1 - t1);
2030 	    }
2031 	    {
2032 	      /* Compute double-double = double-double * double. */
2033 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
2034 
2035 	      con = head_a0 * split;
2036 	      a11 = con - head_a0;
2037 	      a11 = con - a11;
2038 	      a21 = head_a0 - a11;
2039 	      con = alpha_i[1] * split;
2040 	      b1 = con - alpha_i[1];
2041 	      b1 = con - b1;
2042 	      b2 = alpha_i[1] - b1;
2043 
2044 	      c11 = head_a0 * alpha_i[1];
2045 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
2046 
2047 	      c2 = tail_a0 * alpha_i[1];
2048 	      t1 = c11 + c2;
2049 	      t2 = (c2 - (t1 - c11)) + c21;
2050 
2051 	      head_t2 = t1 + t2;
2052 	      tail_t2 = t2 - (head_t2 - t1);
2053 	    }
2054 	    {
2055 	      /* Compute double-double = double-double + double-double. */
2056 	      double bv;
2057 	      double s1, s2, t1, t2;
2058 
2059 	      /* Add two hi words. */
2060 	      s1 = head_t1 + head_t2;
2061 	      bv = s1 - head_t1;
2062 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
2063 
2064 	      /* Add two lo words. */
2065 	      t1 = tail_t1 + tail_t2;
2066 	      bv = t1 - tail_t1;
2067 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
2068 
2069 	      s2 += t1;
2070 
2071 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2072 	      t1 = s1 + s2;
2073 	      s2 = s2 - (t1 - s1);
2074 
2075 	      t2 += s2;
2076 
2077 	      /* Renormalize (t1, t2)  */
2078 	      head_t1 = t1 + t2;
2079 	      tail_t1 = t2 - (head_t1 - t1);
2080 	    }
2081 	    head_tmp1[1] = head_t1;
2082 	    tail_tmp1[1] = tail_t1;
2083 	  }
2084 
2085 	  y_elem[0] = y_i[yi];
2086 	  y_elem[1] = y_i[yi + 1];
2087 	  {
2088 	    /* Compute complex-extra = complex-double * complex-double. */
2089 	    double head_t1, tail_t1;
2090 	    double head_t2, tail_t2;
2091 	    /* Real part */
2092 	    {
2093 	      /* Compute double_double = double * double. */
2094 	      double a1, a2, b1, b2, con;
2095 
2096 	      con = y_elem[0] * split;
2097 	      a1 = con - y_elem[0];
2098 	      a1 = con - a1;
2099 	      a2 = y_elem[0] - a1;
2100 	      con = beta_i[0] * split;
2101 	      b1 = con - beta_i[0];
2102 	      b1 = con - b1;
2103 	      b2 = beta_i[0] - b1;
2104 
2105 	      head_t1 = y_elem[0] * beta_i[0];
2106 	      tail_t1 = (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
2107 	    }
2108 	    {
2109 	      /* Compute double_double = double * double. */
2110 	      double a1, a2, b1, b2, con;
2111 
2112 	      con = y_elem[1] * split;
2113 	      a1 = con - y_elem[1];
2114 	      a1 = con - a1;
2115 	      a2 = y_elem[1] - a1;
2116 	      con = beta_i[1] * split;
2117 	      b1 = con - beta_i[1];
2118 	      b1 = con - b1;
2119 	      b2 = beta_i[1] - b1;
2120 
2121 	      head_t2 = y_elem[1] * beta_i[1];
2122 	      tail_t2 = (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
2123 	    }
2124 	    head_t2 = -head_t2;
2125 	    tail_t2 = -tail_t2;
2126 	    {
2127 	      /* Compute double-double = double-double + double-double. */
2128 	      double bv;
2129 	      double s1, s2, t1, t2;
2130 
2131 	      /* Add two hi words. */
2132 	      s1 = head_t1 + head_t2;
2133 	      bv = s1 - head_t1;
2134 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
2135 
2136 	      /* Add two lo words. */
2137 	      t1 = tail_t1 + tail_t2;
2138 	      bv = t1 - tail_t1;
2139 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
2140 
2141 	      s2 += t1;
2142 
2143 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2144 	      t1 = s1 + s2;
2145 	      s2 = s2 - (t1 - s1);
2146 
2147 	      t2 += s2;
2148 
2149 	      /* Renormalize (t1, t2)  */
2150 	      head_t1 = t1 + t2;
2151 	      tail_t1 = t2 - (head_t1 - t1);
2152 	    }
2153 	    head_tmp2[0] = head_t1;
2154 	    tail_tmp2[0] = tail_t1;
2155 	    /* Imaginary part */
2156 	    {
2157 	      /* Compute double_double = double * double. */
2158 	      double a1, a2, b1, b2, con;
2159 
2160 	      con = y_elem[1] * split;
2161 	      a1 = con - y_elem[1];
2162 	      a1 = con - a1;
2163 	      a2 = y_elem[1] - a1;
2164 	      con = beta_i[0] * split;
2165 	      b1 = con - beta_i[0];
2166 	      b1 = con - b1;
2167 	      b2 = beta_i[0] - b1;
2168 
2169 	      head_t1 = y_elem[1] * beta_i[0];
2170 	      tail_t1 = (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
2171 	    }
2172 	    {
2173 	      /* Compute double_double = double * double. */
2174 	      double a1, a2, b1, b2, con;
2175 
2176 	      con = y_elem[0] * split;
2177 	      a1 = con - y_elem[0];
2178 	      a1 = con - a1;
2179 	      a2 = y_elem[0] - a1;
2180 	      con = beta_i[1] * split;
2181 	      b1 = con - beta_i[1];
2182 	      b1 = con - b1;
2183 	      b2 = beta_i[1] - b1;
2184 
2185 	      head_t2 = y_elem[0] * beta_i[1];
2186 	      tail_t2 = (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
2187 	    }
2188 	    {
2189 	      /* Compute double-double = double-double + double-double. */
2190 	      double bv;
2191 	      double s1, s2, t1, t2;
2192 
2193 	      /* Add two hi words. */
2194 	      s1 = head_t1 + head_t2;
2195 	      bv = s1 - head_t1;
2196 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
2197 
2198 	      /* Add two lo words. */
2199 	      t1 = tail_t1 + tail_t2;
2200 	      bv = t1 - tail_t1;
2201 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
2202 
2203 	      s2 += t1;
2204 
2205 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2206 	      t1 = s1 + s2;
2207 	      s2 = s2 - (t1 - s1);
2208 
2209 	      t2 += s2;
2210 
2211 	      /* Renormalize (t1, t2)  */
2212 	      head_t1 = t1 + t2;
2213 	      tail_t1 = t2 - (head_t1 - t1);
2214 	    }
2215 	    head_tmp2[1] = head_t1;
2216 	    tail_tmp2[1] = tail_t1;
2217 	  }
2218 	  {
2219 	    double head_t, tail_t;
2220 	    double head_a, tail_a;
2221 	    double head_b, tail_b;
2222 	    /* Real part */
2223 	    head_a = head_tmp1[0];
2224 	    tail_a = tail_tmp1[0];
2225 	    head_b = head_tmp2[0];
2226 	    tail_b = tail_tmp2[0];
2227 	    {
2228 	      /* Compute double-double = double-double + double-double. */
2229 	      double bv;
2230 	      double s1, s2, t1, t2;
2231 
2232 	      /* Add two hi words. */
2233 	      s1 = head_a + head_b;
2234 	      bv = s1 - head_a;
2235 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2236 
2237 	      /* Add two lo words. */
2238 	      t1 = tail_a + tail_b;
2239 	      bv = t1 - tail_a;
2240 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2241 
2242 	      s2 += t1;
2243 
2244 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2245 	      t1 = s1 + s2;
2246 	      s2 = s2 - (t1 - s1);
2247 
2248 	      t2 += s2;
2249 
2250 	      /* Renormalize (t1, t2)  */
2251 	      head_t = t1 + t2;
2252 	      tail_t = t2 - (head_t - t1);
2253 	    }
2254 	    head_tmp3[0] = head_t;
2255 	    tail_tmp3[0] = tail_t;
2256 	    /* Imaginary part */
2257 	    head_a = head_tmp1[1];
2258 	    tail_a = tail_tmp1[1];
2259 	    head_b = head_tmp2[1];
2260 	    tail_b = tail_tmp2[1];
2261 	    {
2262 	      /* Compute double-double = double-double + double-double. */
2263 	      double bv;
2264 	      double s1, s2, t1, t2;
2265 
2266 	      /* Add two hi words. */
2267 	      s1 = head_a + head_b;
2268 	      bv = s1 - head_a;
2269 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2270 
2271 	      /* Add two lo words. */
2272 	      t1 = tail_a + tail_b;
2273 	      bv = t1 - tail_a;
2274 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2275 
2276 	      s2 += t1;
2277 
2278 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2279 	      t1 = s1 + s2;
2280 	      s2 = s2 - (t1 - s1);
2281 
2282 	      t2 += s2;
2283 
2284 	      /* Renormalize (t1, t2)  */
2285 	      head_t = t1 + t2;
2286 	      tail_t = t2 - (head_t - t1);
2287 	    }
2288 	    head_tmp3[1] = head_t;
2289 	    tail_tmp3[1] = tail_t;
2290 	  }
2291 	  y_i[yi] = head_tmp3[0];
2292 	  y_i[yi + 1] = head_tmp3[1];
2293 	}
2294       } else {
2295 	/* uplo == blas_upper */
2296 	for (i = 0, yi = yi0, ai = 0; i < n; i++, yi += incy, ai += incai) {
2297 	  head_sum1[0] = head_sum1[1] = tail_sum1[0] = tail_sum1[1] = 0.0;
2298 	  head_sum2[0] = head_sum2[1] = tail_sum2[0] = tail_sum2[1] = 0.0;
2299 
2300 	  for (j = 0, aij = ai, xi = xi0; j < i;
2301 	       j++, aij += incaij, xi += incx) {
2302 	    a_elem[0] = a_i[aij];
2303 	    a_elem[1] = a_i[aij + 1];
2304 	    a_elem[1] = -a_elem[1];
2305 	    x_elem[0] = x_head_i[xi];
2306 	    x_elem[1] = x_head_i[xi + 1];
2307 	    {
2308 	      double cd[2];
2309 	      cd[0] = (double) a_elem[0];
2310 	      cd[1] = (double) a_elem[1];
2311 	      {
2312 		/* Compute complex-extra = complex-double * complex-double. */
2313 		double head_t1, tail_t1;
2314 		double head_t2, tail_t2;
2315 		/* Real part */
2316 		{
2317 		  /* Compute double_double = double * double. */
2318 		  double a1, a2, b1, b2, con;
2319 
2320 		  con = x_elem[0] * split;
2321 		  a1 = con - x_elem[0];
2322 		  a1 = con - a1;
2323 		  a2 = x_elem[0] - a1;
2324 		  con = cd[0] * split;
2325 		  b1 = con - cd[0];
2326 		  b1 = con - b1;
2327 		  b2 = cd[0] - b1;
2328 
2329 		  head_t1 = x_elem[0] * cd[0];
2330 		  tail_t1 =
2331 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
2332 		}
2333 		{
2334 		  /* Compute double_double = double * double. */
2335 		  double a1, a2, b1, b2, con;
2336 
2337 		  con = x_elem[1] * split;
2338 		  a1 = con - x_elem[1];
2339 		  a1 = con - a1;
2340 		  a2 = x_elem[1] - a1;
2341 		  con = cd[1] * split;
2342 		  b1 = con - cd[1];
2343 		  b1 = con - b1;
2344 		  b2 = cd[1] - b1;
2345 
2346 		  head_t2 = x_elem[1] * cd[1];
2347 		  tail_t2 =
2348 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
2349 		}
2350 		head_t2 = -head_t2;
2351 		tail_t2 = -tail_t2;
2352 		{
2353 		  /* Compute double-double = double-double + double-double. */
2354 		  double bv;
2355 		  double s1, s2, t1, t2;
2356 
2357 		  /* Add two hi words. */
2358 		  s1 = head_t1 + head_t2;
2359 		  bv = s1 - head_t1;
2360 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
2361 
2362 		  /* Add two lo words. */
2363 		  t1 = tail_t1 + tail_t2;
2364 		  bv = t1 - tail_t1;
2365 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
2366 
2367 		  s2 += t1;
2368 
2369 		  /* Renormalize (s1, s2)  to  (t1, s2) */
2370 		  t1 = s1 + s2;
2371 		  s2 = s2 - (t1 - s1);
2372 
2373 		  t2 += s2;
2374 
2375 		  /* Renormalize (t1, t2)  */
2376 		  head_t1 = t1 + t2;
2377 		  tail_t1 = t2 - (head_t1 - t1);
2378 		}
2379 		head_prod1[0] = head_t1;
2380 		tail_prod1[0] = tail_t1;
2381 		/* Imaginary part */
2382 		{
2383 		  /* Compute double_double = double * double. */
2384 		  double a1, a2, b1, b2, con;
2385 
2386 		  con = x_elem[1] * split;
2387 		  a1 = con - x_elem[1];
2388 		  a1 = con - a1;
2389 		  a2 = x_elem[1] - a1;
2390 		  con = cd[0] * split;
2391 		  b1 = con - cd[0];
2392 		  b1 = con - b1;
2393 		  b2 = cd[0] - b1;
2394 
2395 		  head_t1 = x_elem[1] * cd[0];
2396 		  tail_t1 =
2397 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
2398 		}
2399 		{
2400 		  /* Compute double_double = double * double. */
2401 		  double a1, a2, b1, b2, con;
2402 
2403 		  con = x_elem[0] * split;
2404 		  a1 = con - x_elem[0];
2405 		  a1 = con - a1;
2406 		  a2 = x_elem[0] - a1;
2407 		  con = cd[1] * split;
2408 		  b1 = con - cd[1];
2409 		  b1 = con - b1;
2410 		  b2 = cd[1] - b1;
2411 
2412 		  head_t2 = x_elem[0] * cd[1];
2413 		  tail_t2 =
2414 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
2415 		}
2416 		{
2417 		  /* Compute double-double = double-double + double-double. */
2418 		  double bv;
2419 		  double s1, s2, t1, t2;
2420 
2421 		  /* Add two hi words. */
2422 		  s1 = head_t1 + head_t2;
2423 		  bv = s1 - head_t1;
2424 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
2425 
2426 		  /* Add two lo words. */
2427 		  t1 = tail_t1 + tail_t2;
2428 		  bv = t1 - tail_t1;
2429 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
2430 
2431 		  s2 += t1;
2432 
2433 		  /* Renormalize (s1, s2)  to  (t1, s2) */
2434 		  t1 = s1 + s2;
2435 		  s2 = s2 - (t1 - s1);
2436 
2437 		  t2 += s2;
2438 
2439 		  /* Renormalize (t1, t2)  */
2440 		  head_t1 = t1 + t2;
2441 		  tail_t1 = t2 - (head_t1 - t1);
2442 		}
2443 		head_prod1[1] = head_t1;
2444 		tail_prod1[1] = tail_t1;
2445 	      }
2446 	    }
2447 	    {
2448 	      double head_t, tail_t;
2449 	      double head_a, tail_a;
2450 	      double head_b, tail_b;
2451 	      /* Real part */
2452 	      head_a = head_sum1[0];
2453 	      tail_a = tail_sum1[0];
2454 	      head_b = head_prod1[0];
2455 	      tail_b = tail_prod1[0];
2456 	      {
2457 		/* Compute double-double = double-double + double-double. */
2458 		double bv;
2459 		double s1, s2, t1, t2;
2460 
2461 		/* Add two hi words. */
2462 		s1 = head_a + head_b;
2463 		bv = s1 - head_a;
2464 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2465 
2466 		/* Add two lo words. */
2467 		t1 = tail_a + tail_b;
2468 		bv = t1 - tail_a;
2469 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2470 
2471 		s2 += t1;
2472 
2473 		/* Renormalize (s1, s2)  to  (t1, s2) */
2474 		t1 = s1 + s2;
2475 		s2 = s2 - (t1 - s1);
2476 
2477 		t2 += s2;
2478 
2479 		/* Renormalize (t1, t2)  */
2480 		head_t = t1 + t2;
2481 		tail_t = t2 - (head_t - t1);
2482 	      }
2483 	      head_sum1[0] = head_t;
2484 	      tail_sum1[0] = tail_t;
2485 	      /* Imaginary part */
2486 	      head_a = head_sum1[1];
2487 	      tail_a = tail_sum1[1];
2488 	      head_b = head_prod1[1];
2489 	      tail_b = tail_prod1[1];
2490 	      {
2491 		/* Compute double-double = double-double + double-double. */
2492 		double bv;
2493 		double s1, s2, t1, t2;
2494 
2495 		/* Add two hi words. */
2496 		s1 = head_a + head_b;
2497 		bv = s1 - head_a;
2498 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2499 
2500 		/* Add two lo words. */
2501 		t1 = tail_a + tail_b;
2502 		bv = t1 - tail_a;
2503 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2504 
2505 		s2 += t1;
2506 
2507 		/* Renormalize (s1, s2)  to  (t1, s2) */
2508 		t1 = s1 + s2;
2509 		s2 = s2 - (t1 - s1);
2510 
2511 		t2 += s2;
2512 
2513 		/* Renormalize (t1, t2)  */
2514 		head_t = t1 + t2;
2515 		tail_t = t2 - (head_t - t1);
2516 	      }
2517 	      head_sum1[1] = head_t;
2518 	      tail_sum1[1] = tail_t;
2519 	    }
2520 	    x_elem[0] = x_tail_i[xi];
2521 	    x_elem[1] = x_tail_i[xi + 1];
2522 	    {
2523 	      double cd[2];
2524 	      cd[0] = (double) a_elem[0];
2525 	      cd[1] = (double) a_elem[1];
2526 	      {
2527 		/* Compute complex-extra = complex-double * complex-double. */
2528 		double head_t1, tail_t1;
2529 		double head_t2, tail_t2;
2530 		/* Real part */
2531 		{
2532 		  /* Compute double_double = double * double. */
2533 		  double a1, a2, b1, b2, con;
2534 
2535 		  con = x_elem[0] * split;
2536 		  a1 = con - x_elem[0];
2537 		  a1 = con - a1;
2538 		  a2 = x_elem[0] - a1;
2539 		  con = cd[0] * split;
2540 		  b1 = con - cd[0];
2541 		  b1 = con - b1;
2542 		  b2 = cd[0] - b1;
2543 
2544 		  head_t1 = x_elem[0] * cd[0];
2545 		  tail_t1 =
2546 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
2547 		}
2548 		{
2549 		  /* Compute double_double = double * double. */
2550 		  double a1, a2, b1, b2, con;
2551 
2552 		  con = x_elem[1] * split;
2553 		  a1 = con - x_elem[1];
2554 		  a1 = con - a1;
2555 		  a2 = x_elem[1] - a1;
2556 		  con = cd[1] * split;
2557 		  b1 = con - cd[1];
2558 		  b1 = con - b1;
2559 		  b2 = cd[1] - b1;
2560 
2561 		  head_t2 = x_elem[1] * cd[1];
2562 		  tail_t2 =
2563 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
2564 		}
2565 		head_t2 = -head_t2;
2566 		tail_t2 = -tail_t2;
2567 		{
2568 		  /* Compute double-double = double-double + double-double. */
2569 		  double bv;
2570 		  double s1, s2, t1, t2;
2571 
2572 		  /* Add two hi words. */
2573 		  s1 = head_t1 + head_t2;
2574 		  bv = s1 - head_t1;
2575 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
2576 
2577 		  /* Add two lo words. */
2578 		  t1 = tail_t1 + tail_t2;
2579 		  bv = t1 - tail_t1;
2580 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
2581 
2582 		  s2 += t1;
2583 
2584 		  /* Renormalize (s1, s2)  to  (t1, s2) */
2585 		  t1 = s1 + s2;
2586 		  s2 = s2 - (t1 - s1);
2587 
2588 		  t2 += s2;
2589 
2590 		  /* Renormalize (t1, t2)  */
2591 		  head_t1 = t1 + t2;
2592 		  tail_t1 = t2 - (head_t1 - t1);
2593 		}
2594 		head_prod2[0] = head_t1;
2595 		tail_prod2[0] = tail_t1;
2596 		/* Imaginary part */
2597 		{
2598 		  /* Compute double_double = double * double. */
2599 		  double a1, a2, b1, b2, con;
2600 
2601 		  con = x_elem[1] * split;
2602 		  a1 = con - x_elem[1];
2603 		  a1 = con - a1;
2604 		  a2 = x_elem[1] - a1;
2605 		  con = cd[0] * split;
2606 		  b1 = con - cd[0];
2607 		  b1 = con - b1;
2608 		  b2 = cd[0] - b1;
2609 
2610 		  head_t1 = x_elem[1] * cd[0];
2611 		  tail_t1 =
2612 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
2613 		}
2614 		{
2615 		  /* Compute double_double = double * double. */
2616 		  double a1, a2, b1, b2, con;
2617 
2618 		  con = x_elem[0] * split;
2619 		  a1 = con - x_elem[0];
2620 		  a1 = con - a1;
2621 		  a2 = x_elem[0] - a1;
2622 		  con = cd[1] * split;
2623 		  b1 = con - cd[1];
2624 		  b1 = con - b1;
2625 		  b2 = cd[1] - b1;
2626 
2627 		  head_t2 = x_elem[0] * cd[1];
2628 		  tail_t2 =
2629 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
2630 		}
2631 		{
2632 		  /* Compute double-double = double-double + double-double. */
2633 		  double bv;
2634 		  double s1, s2, t1, t2;
2635 
2636 		  /* Add two hi words. */
2637 		  s1 = head_t1 + head_t2;
2638 		  bv = s1 - head_t1;
2639 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
2640 
2641 		  /* Add two lo words. */
2642 		  t1 = tail_t1 + tail_t2;
2643 		  bv = t1 - tail_t1;
2644 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
2645 
2646 		  s2 += t1;
2647 
2648 		  /* Renormalize (s1, s2)  to  (t1, s2) */
2649 		  t1 = s1 + s2;
2650 		  s2 = s2 - (t1 - s1);
2651 
2652 		  t2 += s2;
2653 
2654 		  /* Renormalize (t1, t2)  */
2655 		  head_t1 = t1 + t2;
2656 		  tail_t1 = t2 - (head_t1 - t1);
2657 		}
2658 		head_prod2[1] = head_t1;
2659 		tail_prod2[1] = tail_t1;
2660 	      }
2661 	    }
2662 	    {
2663 	      double head_t, tail_t;
2664 	      double head_a, tail_a;
2665 	      double head_b, tail_b;
2666 	      /* Real part */
2667 	      head_a = head_sum2[0];
2668 	      tail_a = tail_sum2[0];
2669 	      head_b = head_prod2[0];
2670 	      tail_b = tail_prod2[0];
2671 	      {
2672 		/* Compute double-double = double-double + double-double. */
2673 		double bv;
2674 		double s1, s2, t1, t2;
2675 
2676 		/* Add two hi words. */
2677 		s1 = head_a + head_b;
2678 		bv = s1 - head_a;
2679 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2680 
2681 		/* Add two lo words. */
2682 		t1 = tail_a + tail_b;
2683 		bv = t1 - tail_a;
2684 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2685 
2686 		s2 += t1;
2687 
2688 		/* Renormalize (s1, s2)  to  (t1, s2) */
2689 		t1 = s1 + s2;
2690 		s2 = s2 - (t1 - s1);
2691 
2692 		t2 += s2;
2693 
2694 		/* Renormalize (t1, t2)  */
2695 		head_t = t1 + t2;
2696 		tail_t = t2 - (head_t - t1);
2697 	      }
2698 	      head_sum2[0] = head_t;
2699 	      tail_sum2[0] = tail_t;
2700 	      /* Imaginary part */
2701 	      head_a = head_sum2[1];
2702 	      tail_a = tail_sum2[1];
2703 	      head_b = head_prod2[1];
2704 	      tail_b = tail_prod2[1];
2705 	      {
2706 		/* Compute double-double = double-double + double-double. */
2707 		double bv;
2708 		double s1, s2, t1, t2;
2709 
2710 		/* Add two hi words. */
2711 		s1 = head_a + head_b;
2712 		bv = s1 - head_a;
2713 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2714 
2715 		/* Add two lo words. */
2716 		t1 = tail_a + tail_b;
2717 		bv = t1 - tail_a;
2718 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2719 
2720 		s2 += t1;
2721 
2722 		/* Renormalize (s1, s2)  to  (t1, s2) */
2723 		t1 = s1 + s2;
2724 		s2 = s2 - (t1 - s1);
2725 
2726 		t2 += s2;
2727 
2728 		/* Renormalize (t1, t2)  */
2729 		head_t = t1 + t2;
2730 		tail_t = t2 - (head_t - t1);
2731 	      }
2732 	      head_sum2[1] = head_t;
2733 	      tail_sum2[1] = tail_t;
2734 	    }
2735 	  }
2736 
2737 	  diag_elem = a_i[aij];
2738 	  x_elem[0] = x_head_i[xi];
2739 	  x_elem[1] = x_head_i[xi + 1];
2740 	  {
2741 	    double dt = (double) diag_elem;
2742 	    {
2743 	      /* Compute complex-extra = complex-double * real. */
2744 	      double head_t, tail_t;
2745 	      {
2746 		/* Compute double_double = double * double. */
2747 		double a1, a2, b1, b2, con;
2748 
2749 		con = dt * split;
2750 		a1 = con - dt;
2751 		a1 = con - a1;
2752 		a2 = dt - a1;
2753 		con = x_elem[0] * split;
2754 		b1 = con - x_elem[0];
2755 		b1 = con - b1;
2756 		b2 = x_elem[0] - b1;
2757 
2758 		head_t = dt * x_elem[0];
2759 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
2760 	      }
2761 	      head_prod1[0] = head_t;
2762 	      tail_prod1[0] = tail_t;
2763 	      {
2764 		/* Compute double_double = double * double. */
2765 		double a1, a2, b1, b2, con;
2766 
2767 		con = dt * split;
2768 		a1 = con - dt;
2769 		a1 = con - a1;
2770 		a2 = dt - a1;
2771 		con = x_elem[1] * split;
2772 		b1 = con - x_elem[1];
2773 		b1 = con - b1;
2774 		b2 = x_elem[1] - b1;
2775 
2776 		head_t = dt * x_elem[1];
2777 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
2778 	      }
2779 	      head_prod1[1] = head_t;
2780 	      tail_prod1[1] = tail_t;
2781 	    }
2782 	  }
2783 	  {
2784 	    double head_t, tail_t;
2785 	    double head_a, tail_a;
2786 	    double head_b, tail_b;
2787 	    /* Real part */
2788 	    head_a = head_sum1[0];
2789 	    tail_a = tail_sum1[0];
2790 	    head_b = head_prod1[0];
2791 	    tail_b = tail_prod1[0];
2792 	    {
2793 	      /* Compute double-double = double-double + double-double. */
2794 	      double bv;
2795 	      double s1, s2, t1, t2;
2796 
2797 	      /* Add two hi words. */
2798 	      s1 = head_a + head_b;
2799 	      bv = s1 - head_a;
2800 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2801 
2802 	      /* Add two lo words. */
2803 	      t1 = tail_a + tail_b;
2804 	      bv = t1 - tail_a;
2805 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2806 
2807 	      s2 += t1;
2808 
2809 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2810 	      t1 = s1 + s2;
2811 	      s2 = s2 - (t1 - s1);
2812 
2813 	      t2 += s2;
2814 
2815 	      /* Renormalize (t1, t2)  */
2816 	      head_t = t1 + t2;
2817 	      tail_t = t2 - (head_t - t1);
2818 	    }
2819 	    head_sum1[0] = head_t;
2820 	    tail_sum1[0] = tail_t;
2821 	    /* Imaginary part */
2822 	    head_a = head_sum1[1];
2823 	    tail_a = tail_sum1[1];
2824 	    head_b = head_prod1[1];
2825 	    tail_b = tail_prod1[1];
2826 	    {
2827 	      /* Compute double-double = double-double + double-double. */
2828 	      double bv;
2829 	      double s1, s2, t1, t2;
2830 
2831 	      /* Add two hi words. */
2832 	      s1 = head_a + head_b;
2833 	      bv = s1 - head_a;
2834 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2835 
2836 	      /* Add two lo words. */
2837 	      t1 = tail_a + tail_b;
2838 	      bv = t1 - tail_a;
2839 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2840 
2841 	      s2 += t1;
2842 
2843 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2844 	      t1 = s1 + s2;
2845 	      s2 = s2 - (t1 - s1);
2846 
2847 	      t2 += s2;
2848 
2849 	      /* Renormalize (t1, t2)  */
2850 	      head_t = t1 + t2;
2851 	      tail_t = t2 - (head_t - t1);
2852 	    }
2853 	    head_sum1[1] = head_t;
2854 	    tail_sum1[1] = tail_t;
2855 	  }
2856 	  x_elem[0] = x_tail_i[xi];
2857 	  x_elem[1] = x_tail_i[xi + 1];
2858 	  {
2859 	    double dt = (double) diag_elem;
2860 	    {
2861 	      /* Compute complex-extra = complex-double * real. */
2862 	      double head_t, tail_t;
2863 	      {
2864 		/* Compute double_double = double * double. */
2865 		double a1, a2, b1, b2, con;
2866 
2867 		con = dt * split;
2868 		a1 = con - dt;
2869 		a1 = con - a1;
2870 		a2 = dt - a1;
2871 		con = x_elem[0] * split;
2872 		b1 = con - x_elem[0];
2873 		b1 = con - b1;
2874 		b2 = x_elem[0] - b1;
2875 
2876 		head_t = dt * x_elem[0];
2877 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
2878 	      }
2879 	      head_prod2[0] = head_t;
2880 	      tail_prod2[0] = tail_t;
2881 	      {
2882 		/* Compute double_double = double * double. */
2883 		double a1, a2, b1, b2, con;
2884 
2885 		con = dt * split;
2886 		a1 = con - dt;
2887 		a1 = con - a1;
2888 		a2 = dt - a1;
2889 		con = x_elem[1] * split;
2890 		b1 = con - x_elem[1];
2891 		b1 = con - b1;
2892 		b2 = x_elem[1] - b1;
2893 
2894 		head_t = dt * x_elem[1];
2895 		tail_t = (((a1 * b1 - head_t) + a1 * b2) + a2 * b1) + a2 * b2;
2896 	      }
2897 	      head_prod2[1] = head_t;
2898 	      tail_prod2[1] = tail_t;
2899 	    }
2900 	  }
2901 	  {
2902 	    double head_t, tail_t;
2903 	    double head_a, tail_a;
2904 	    double head_b, tail_b;
2905 	    /* Real part */
2906 	    head_a = head_sum2[0];
2907 	    tail_a = tail_sum2[0];
2908 	    head_b = head_prod2[0];
2909 	    tail_b = tail_prod2[0];
2910 	    {
2911 	      /* Compute double-double = double-double + double-double. */
2912 	      double bv;
2913 	      double s1, s2, t1, t2;
2914 
2915 	      /* Add two hi words. */
2916 	      s1 = head_a + head_b;
2917 	      bv = s1 - head_a;
2918 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2919 
2920 	      /* Add two lo words. */
2921 	      t1 = tail_a + tail_b;
2922 	      bv = t1 - tail_a;
2923 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2924 
2925 	      s2 += t1;
2926 
2927 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2928 	      t1 = s1 + s2;
2929 	      s2 = s2 - (t1 - s1);
2930 
2931 	      t2 += s2;
2932 
2933 	      /* Renormalize (t1, t2)  */
2934 	      head_t = t1 + t2;
2935 	      tail_t = t2 - (head_t - t1);
2936 	    }
2937 	    head_sum2[0] = head_t;
2938 	    tail_sum2[0] = tail_t;
2939 	    /* Imaginary part */
2940 	    head_a = head_sum2[1];
2941 	    tail_a = tail_sum2[1];
2942 	    head_b = head_prod2[1];
2943 	    tail_b = tail_prod2[1];
2944 	    {
2945 	      /* Compute double-double = double-double + double-double. */
2946 	      double bv;
2947 	      double s1, s2, t1, t2;
2948 
2949 	      /* Add two hi words. */
2950 	      s1 = head_a + head_b;
2951 	      bv = s1 - head_a;
2952 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
2953 
2954 	      /* Add two lo words. */
2955 	      t1 = tail_a + tail_b;
2956 	      bv = t1 - tail_a;
2957 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
2958 
2959 	      s2 += t1;
2960 
2961 	      /* Renormalize (s1, s2)  to  (t1, s2) */
2962 	      t1 = s1 + s2;
2963 	      s2 = s2 - (t1 - s1);
2964 
2965 	      t2 += s2;
2966 
2967 	      /* Renormalize (t1, t2)  */
2968 	      head_t = t1 + t2;
2969 	      tail_t = t2 - (head_t - t1);
2970 	    }
2971 	    head_sum2[1] = head_t;
2972 	    tail_sum2[1] = tail_t;
2973 	  }
2974 	  j++;
2975 	  aij += incaij2;
2976 	  xi += incx;
2977 
2978 	  for (; j < n; j++, aij += incaij2, xi += incx) {
2979 	    a_elem[0] = a_i[aij];
2980 	    a_elem[1] = a_i[aij + 1];
2981 	    x_elem[0] = x_head_i[xi];
2982 	    x_elem[1] = x_head_i[xi + 1];
2983 	    {
2984 	      double cd[2];
2985 	      cd[0] = (double) a_elem[0];
2986 	      cd[1] = (double) a_elem[1];
2987 	      {
2988 		/* Compute complex-extra = complex-double * complex-double. */
2989 		double head_t1, tail_t1;
2990 		double head_t2, tail_t2;
2991 		/* Real part */
2992 		{
2993 		  /* Compute double_double = double * double. */
2994 		  double a1, a2, b1, b2, con;
2995 
2996 		  con = x_elem[0] * split;
2997 		  a1 = con - x_elem[0];
2998 		  a1 = con - a1;
2999 		  a2 = x_elem[0] - a1;
3000 		  con = cd[0] * split;
3001 		  b1 = con - cd[0];
3002 		  b1 = con - b1;
3003 		  b2 = cd[0] - b1;
3004 
3005 		  head_t1 = x_elem[0] * cd[0];
3006 		  tail_t1 =
3007 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
3008 		}
3009 		{
3010 		  /* Compute double_double = double * double. */
3011 		  double a1, a2, b1, b2, con;
3012 
3013 		  con = x_elem[1] * split;
3014 		  a1 = con - x_elem[1];
3015 		  a1 = con - a1;
3016 		  a2 = x_elem[1] - a1;
3017 		  con = cd[1] * split;
3018 		  b1 = con - cd[1];
3019 		  b1 = con - b1;
3020 		  b2 = cd[1] - b1;
3021 
3022 		  head_t2 = x_elem[1] * cd[1];
3023 		  tail_t2 =
3024 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
3025 		}
3026 		head_t2 = -head_t2;
3027 		tail_t2 = -tail_t2;
3028 		{
3029 		  /* Compute double-double = double-double + double-double. */
3030 		  double bv;
3031 		  double s1, s2, t1, t2;
3032 
3033 		  /* Add two hi words. */
3034 		  s1 = head_t1 + head_t2;
3035 		  bv = s1 - head_t1;
3036 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3037 
3038 		  /* Add two lo words. */
3039 		  t1 = tail_t1 + tail_t2;
3040 		  bv = t1 - tail_t1;
3041 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3042 
3043 		  s2 += t1;
3044 
3045 		  /* Renormalize (s1, s2)  to  (t1, s2) */
3046 		  t1 = s1 + s2;
3047 		  s2 = s2 - (t1 - s1);
3048 
3049 		  t2 += s2;
3050 
3051 		  /* Renormalize (t1, t2)  */
3052 		  head_t1 = t1 + t2;
3053 		  tail_t1 = t2 - (head_t1 - t1);
3054 		}
3055 		head_prod1[0] = head_t1;
3056 		tail_prod1[0] = tail_t1;
3057 		/* Imaginary part */
3058 		{
3059 		  /* Compute double_double = double * double. */
3060 		  double a1, a2, b1, b2, con;
3061 
3062 		  con = x_elem[1] * split;
3063 		  a1 = con - x_elem[1];
3064 		  a1 = con - a1;
3065 		  a2 = x_elem[1] - a1;
3066 		  con = cd[0] * split;
3067 		  b1 = con - cd[0];
3068 		  b1 = con - b1;
3069 		  b2 = cd[0] - b1;
3070 
3071 		  head_t1 = x_elem[1] * cd[0];
3072 		  tail_t1 =
3073 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
3074 		}
3075 		{
3076 		  /* Compute double_double = double * double. */
3077 		  double a1, a2, b1, b2, con;
3078 
3079 		  con = x_elem[0] * split;
3080 		  a1 = con - x_elem[0];
3081 		  a1 = con - a1;
3082 		  a2 = x_elem[0] - a1;
3083 		  con = cd[1] * split;
3084 		  b1 = con - cd[1];
3085 		  b1 = con - b1;
3086 		  b2 = cd[1] - b1;
3087 
3088 		  head_t2 = x_elem[0] * cd[1];
3089 		  tail_t2 =
3090 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
3091 		}
3092 		{
3093 		  /* Compute double-double = double-double + double-double. */
3094 		  double bv;
3095 		  double s1, s2, t1, t2;
3096 
3097 		  /* Add two hi words. */
3098 		  s1 = head_t1 + head_t2;
3099 		  bv = s1 - head_t1;
3100 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3101 
3102 		  /* Add two lo words. */
3103 		  t1 = tail_t1 + tail_t2;
3104 		  bv = t1 - tail_t1;
3105 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3106 
3107 		  s2 += t1;
3108 
3109 		  /* Renormalize (s1, s2)  to  (t1, s2) */
3110 		  t1 = s1 + s2;
3111 		  s2 = s2 - (t1 - s1);
3112 
3113 		  t2 += s2;
3114 
3115 		  /* Renormalize (t1, t2)  */
3116 		  head_t1 = t1 + t2;
3117 		  tail_t1 = t2 - (head_t1 - t1);
3118 		}
3119 		head_prod1[1] = head_t1;
3120 		tail_prod1[1] = tail_t1;
3121 	      }
3122 	    }
3123 	    {
3124 	      double head_t, tail_t;
3125 	      double head_a, tail_a;
3126 	      double head_b, tail_b;
3127 	      /* Real part */
3128 	      head_a = head_sum1[0];
3129 	      tail_a = tail_sum1[0];
3130 	      head_b = head_prod1[0];
3131 	      tail_b = tail_prod1[0];
3132 	      {
3133 		/* Compute double-double = double-double + double-double. */
3134 		double bv;
3135 		double s1, s2, t1, t2;
3136 
3137 		/* Add two hi words. */
3138 		s1 = head_a + head_b;
3139 		bv = s1 - head_a;
3140 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3141 
3142 		/* Add two lo words. */
3143 		t1 = tail_a + tail_b;
3144 		bv = t1 - tail_a;
3145 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3146 
3147 		s2 += t1;
3148 
3149 		/* Renormalize (s1, s2)  to  (t1, s2) */
3150 		t1 = s1 + s2;
3151 		s2 = s2 - (t1 - s1);
3152 
3153 		t2 += s2;
3154 
3155 		/* Renormalize (t1, t2)  */
3156 		head_t = t1 + t2;
3157 		tail_t = t2 - (head_t - t1);
3158 	      }
3159 	      head_sum1[0] = head_t;
3160 	      tail_sum1[0] = tail_t;
3161 	      /* Imaginary part */
3162 	      head_a = head_sum1[1];
3163 	      tail_a = tail_sum1[1];
3164 	      head_b = head_prod1[1];
3165 	      tail_b = tail_prod1[1];
3166 	      {
3167 		/* Compute double-double = double-double + double-double. */
3168 		double bv;
3169 		double s1, s2, t1, t2;
3170 
3171 		/* Add two hi words. */
3172 		s1 = head_a + head_b;
3173 		bv = s1 - head_a;
3174 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3175 
3176 		/* Add two lo words. */
3177 		t1 = tail_a + tail_b;
3178 		bv = t1 - tail_a;
3179 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3180 
3181 		s2 += t1;
3182 
3183 		/* Renormalize (s1, s2)  to  (t1, s2) */
3184 		t1 = s1 + s2;
3185 		s2 = s2 - (t1 - s1);
3186 
3187 		t2 += s2;
3188 
3189 		/* Renormalize (t1, t2)  */
3190 		head_t = t1 + t2;
3191 		tail_t = t2 - (head_t - t1);
3192 	      }
3193 	      head_sum1[1] = head_t;
3194 	      tail_sum1[1] = tail_t;
3195 	    }
3196 	    x_elem[0] = x_tail_i[xi];
3197 	    x_elem[1] = x_tail_i[xi + 1];
3198 	    {
3199 	      double cd[2];
3200 	      cd[0] = (double) a_elem[0];
3201 	      cd[1] = (double) a_elem[1];
3202 	      {
3203 		/* Compute complex-extra = complex-double * complex-double. */
3204 		double head_t1, tail_t1;
3205 		double head_t2, tail_t2;
3206 		/* Real part */
3207 		{
3208 		  /* Compute double_double = double * double. */
3209 		  double a1, a2, b1, b2, con;
3210 
3211 		  con = x_elem[0] * split;
3212 		  a1 = con - x_elem[0];
3213 		  a1 = con - a1;
3214 		  a2 = x_elem[0] - a1;
3215 		  con = cd[0] * split;
3216 		  b1 = con - cd[0];
3217 		  b1 = con - b1;
3218 		  b2 = cd[0] - b1;
3219 
3220 		  head_t1 = x_elem[0] * cd[0];
3221 		  tail_t1 =
3222 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
3223 		}
3224 		{
3225 		  /* Compute double_double = double * double. */
3226 		  double a1, a2, b1, b2, con;
3227 
3228 		  con = x_elem[1] * split;
3229 		  a1 = con - x_elem[1];
3230 		  a1 = con - a1;
3231 		  a2 = x_elem[1] - a1;
3232 		  con = cd[1] * split;
3233 		  b1 = con - cd[1];
3234 		  b1 = con - b1;
3235 		  b2 = cd[1] - b1;
3236 
3237 		  head_t2 = x_elem[1] * cd[1];
3238 		  tail_t2 =
3239 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
3240 		}
3241 		head_t2 = -head_t2;
3242 		tail_t2 = -tail_t2;
3243 		{
3244 		  /* Compute double-double = double-double + double-double. */
3245 		  double bv;
3246 		  double s1, s2, t1, t2;
3247 
3248 		  /* Add two hi words. */
3249 		  s1 = head_t1 + head_t2;
3250 		  bv = s1 - head_t1;
3251 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3252 
3253 		  /* Add two lo words. */
3254 		  t1 = tail_t1 + tail_t2;
3255 		  bv = t1 - tail_t1;
3256 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3257 
3258 		  s2 += t1;
3259 
3260 		  /* Renormalize (s1, s2)  to  (t1, s2) */
3261 		  t1 = s1 + s2;
3262 		  s2 = s2 - (t1 - s1);
3263 
3264 		  t2 += s2;
3265 
3266 		  /* Renormalize (t1, t2)  */
3267 		  head_t1 = t1 + t2;
3268 		  tail_t1 = t2 - (head_t1 - t1);
3269 		}
3270 		head_prod2[0] = head_t1;
3271 		tail_prod2[0] = tail_t1;
3272 		/* Imaginary part */
3273 		{
3274 		  /* Compute double_double = double * double. */
3275 		  double a1, a2, b1, b2, con;
3276 
3277 		  con = x_elem[1] * split;
3278 		  a1 = con - x_elem[1];
3279 		  a1 = con - a1;
3280 		  a2 = x_elem[1] - a1;
3281 		  con = cd[0] * split;
3282 		  b1 = con - cd[0];
3283 		  b1 = con - b1;
3284 		  b2 = cd[0] - b1;
3285 
3286 		  head_t1 = x_elem[1] * cd[0];
3287 		  tail_t1 =
3288 		    (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
3289 		}
3290 		{
3291 		  /* Compute double_double = double * double. */
3292 		  double a1, a2, b1, b2, con;
3293 
3294 		  con = x_elem[0] * split;
3295 		  a1 = con - x_elem[0];
3296 		  a1 = con - a1;
3297 		  a2 = x_elem[0] - a1;
3298 		  con = cd[1] * split;
3299 		  b1 = con - cd[1];
3300 		  b1 = con - b1;
3301 		  b2 = cd[1] - b1;
3302 
3303 		  head_t2 = x_elem[0] * cd[1];
3304 		  tail_t2 =
3305 		    (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
3306 		}
3307 		{
3308 		  /* Compute double-double = double-double + double-double. */
3309 		  double bv;
3310 		  double s1, s2, t1, t2;
3311 
3312 		  /* Add two hi words. */
3313 		  s1 = head_t1 + head_t2;
3314 		  bv = s1 - head_t1;
3315 		  s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3316 
3317 		  /* Add two lo words. */
3318 		  t1 = tail_t1 + tail_t2;
3319 		  bv = t1 - tail_t1;
3320 		  t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3321 
3322 		  s2 += t1;
3323 
3324 		  /* Renormalize (s1, s2)  to  (t1, s2) */
3325 		  t1 = s1 + s2;
3326 		  s2 = s2 - (t1 - s1);
3327 
3328 		  t2 += s2;
3329 
3330 		  /* Renormalize (t1, t2)  */
3331 		  head_t1 = t1 + t2;
3332 		  tail_t1 = t2 - (head_t1 - t1);
3333 		}
3334 		head_prod2[1] = head_t1;
3335 		tail_prod2[1] = tail_t1;
3336 	      }
3337 	    }
3338 	    {
3339 	      double head_t, tail_t;
3340 	      double head_a, tail_a;
3341 	      double head_b, tail_b;
3342 	      /* Real part */
3343 	      head_a = head_sum2[0];
3344 	      tail_a = tail_sum2[0];
3345 	      head_b = head_prod2[0];
3346 	      tail_b = tail_prod2[0];
3347 	      {
3348 		/* Compute double-double = double-double + double-double. */
3349 		double bv;
3350 		double s1, s2, t1, t2;
3351 
3352 		/* Add two hi words. */
3353 		s1 = head_a + head_b;
3354 		bv = s1 - head_a;
3355 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3356 
3357 		/* Add two lo words. */
3358 		t1 = tail_a + tail_b;
3359 		bv = t1 - tail_a;
3360 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3361 
3362 		s2 += t1;
3363 
3364 		/* Renormalize (s1, s2)  to  (t1, s2) */
3365 		t1 = s1 + s2;
3366 		s2 = s2 - (t1 - s1);
3367 
3368 		t2 += s2;
3369 
3370 		/* Renormalize (t1, t2)  */
3371 		head_t = t1 + t2;
3372 		tail_t = t2 - (head_t - t1);
3373 	      }
3374 	      head_sum2[0] = head_t;
3375 	      tail_sum2[0] = tail_t;
3376 	      /* Imaginary part */
3377 	      head_a = head_sum2[1];
3378 	      tail_a = tail_sum2[1];
3379 	      head_b = head_prod2[1];
3380 	      tail_b = tail_prod2[1];
3381 	      {
3382 		/* Compute double-double = double-double + double-double. */
3383 		double bv;
3384 		double s1, s2, t1, t2;
3385 
3386 		/* Add two hi words. */
3387 		s1 = head_a + head_b;
3388 		bv = s1 - head_a;
3389 		s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3390 
3391 		/* Add two lo words. */
3392 		t1 = tail_a + tail_b;
3393 		bv = t1 - tail_a;
3394 		t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3395 
3396 		s2 += t1;
3397 
3398 		/* Renormalize (s1, s2)  to  (t1, s2) */
3399 		t1 = s1 + s2;
3400 		s2 = s2 - (t1 - s1);
3401 
3402 		t2 += s2;
3403 
3404 		/* Renormalize (t1, t2)  */
3405 		head_t = t1 + t2;
3406 		tail_t = t2 - (head_t - t1);
3407 	      }
3408 	      head_sum2[1] = head_t;
3409 	      tail_sum2[1] = tail_t;
3410 	    }
3411 	  }
3412 	  {
3413 	    double head_t, tail_t;
3414 	    double head_a, tail_a;
3415 	    double head_b, tail_b;
3416 	    /* Real part */
3417 	    head_a = head_sum1[0];
3418 	    tail_a = tail_sum1[0];
3419 	    head_b = head_sum2[0];
3420 	    tail_b = tail_sum2[0];
3421 	    {
3422 	      /* Compute double-double = double-double + double-double. */
3423 	      double bv;
3424 	      double s1, s2, t1, t2;
3425 
3426 	      /* Add two hi words. */
3427 	      s1 = head_a + head_b;
3428 	      bv = s1 - head_a;
3429 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3430 
3431 	      /* Add two lo words. */
3432 	      t1 = tail_a + tail_b;
3433 	      bv = t1 - tail_a;
3434 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3435 
3436 	      s2 += t1;
3437 
3438 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3439 	      t1 = s1 + s2;
3440 	      s2 = s2 - (t1 - s1);
3441 
3442 	      t2 += s2;
3443 
3444 	      /* Renormalize (t1, t2)  */
3445 	      head_t = t1 + t2;
3446 	      tail_t = t2 - (head_t - t1);
3447 	    }
3448 	    head_sum1[0] = head_t;
3449 	    tail_sum1[0] = tail_t;
3450 	    /* Imaginary part */
3451 	    head_a = head_sum1[1];
3452 	    tail_a = tail_sum1[1];
3453 	    head_b = head_sum2[1];
3454 	    tail_b = tail_sum2[1];
3455 	    {
3456 	      /* Compute double-double = double-double + double-double. */
3457 	      double bv;
3458 	      double s1, s2, t1, t2;
3459 
3460 	      /* Add two hi words. */
3461 	      s1 = head_a + head_b;
3462 	      bv = s1 - head_a;
3463 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3464 
3465 	      /* Add two lo words. */
3466 	      t1 = tail_a + tail_b;
3467 	      bv = t1 - tail_a;
3468 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3469 
3470 	      s2 += t1;
3471 
3472 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3473 	      t1 = s1 + s2;
3474 	      s2 = s2 - (t1 - s1);
3475 
3476 	      t2 += s2;
3477 
3478 	      /* Renormalize (t1, t2)  */
3479 	      head_t = t1 + t2;
3480 	      tail_t = t2 - (head_t - t1);
3481 	    }
3482 	    head_sum1[1] = head_t;
3483 	    tail_sum1[1] = tail_t;
3484 	  }
3485 	  {
3486 	    /* Compute complex-extra = complex-extra * complex-double. */
3487 	    double head_a0, tail_a0;
3488 	    double head_a1, tail_a1;
3489 	    double head_t1, tail_t1;
3490 	    double head_t2, tail_t2;
3491 	    head_a0 = head_sum1[0];
3492 	    tail_a0 = tail_sum1[0];
3493 	    head_a1 = head_sum1[1];
3494 	    tail_a1 = tail_sum1[1];
3495 	    /* real part */
3496 	    {
3497 	      /* Compute double-double = double-double * double. */
3498 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
3499 
3500 	      con = head_a0 * split;
3501 	      a11 = con - head_a0;
3502 	      a11 = con - a11;
3503 	      a21 = head_a0 - a11;
3504 	      con = alpha_i[0] * split;
3505 	      b1 = con - alpha_i[0];
3506 	      b1 = con - b1;
3507 	      b2 = alpha_i[0] - b1;
3508 
3509 	      c11 = head_a0 * alpha_i[0];
3510 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
3511 
3512 	      c2 = tail_a0 * alpha_i[0];
3513 	      t1 = c11 + c2;
3514 	      t2 = (c2 - (t1 - c11)) + c21;
3515 
3516 	      head_t1 = t1 + t2;
3517 	      tail_t1 = t2 - (head_t1 - t1);
3518 	    }
3519 	    {
3520 	      /* Compute double-double = double-double * double. */
3521 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
3522 
3523 	      con = head_a1 * split;
3524 	      a11 = con - head_a1;
3525 	      a11 = con - a11;
3526 	      a21 = head_a1 - a11;
3527 	      con = alpha_i[1] * split;
3528 	      b1 = con - alpha_i[1];
3529 	      b1 = con - b1;
3530 	      b2 = alpha_i[1] - b1;
3531 
3532 	      c11 = head_a1 * alpha_i[1];
3533 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
3534 
3535 	      c2 = tail_a1 * alpha_i[1];
3536 	      t1 = c11 + c2;
3537 	      t2 = (c2 - (t1 - c11)) + c21;
3538 
3539 	      head_t2 = t1 + t2;
3540 	      tail_t2 = t2 - (head_t2 - t1);
3541 	    }
3542 	    head_t2 = -head_t2;
3543 	    tail_t2 = -tail_t2;
3544 	    {
3545 	      /* Compute double-double = double-double + double-double. */
3546 	      double bv;
3547 	      double s1, s2, t1, t2;
3548 
3549 	      /* Add two hi words. */
3550 	      s1 = head_t1 + head_t2;
3551 	      bv = s1 - head_t1;
3552 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3553 
3554 	      /* Add two lo words. */
3555 	      t1 = tail_t1 + tail_t2;
3556 	      bv = t1 - tail_t1;
3557 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3558 
3559 	      s2 += t1;
3560 
3561 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3562 	      t1 = s1 + s2;
3563 	      s2 = s2 - (t1 - s1);
3564 
3565 	      t2 += s2;
3566 
3567 	      /* Renormalize (t1, t2)  */
3568 	      head_t1 = t1 + t2;
3569 	      tail_t1 = t2 - (head_t1 - t1);
3570 	    }
3571 	    head_tmp1[0] = head_t1;
3572 	    tail_tmp1[0] = tail_t1;
3573 	    /* imaginary part */
3574 	    {
3575 	      /* Compute double-double = double-double * double. */
3576 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
3577 
3578 	      con = head_a1 * split;
3579 	      a11 = con - head_a1;
3580 	      a11 = con - a11;
3581 	      a21 = head_a1 - a11;
3582 	      con = alpha_i[0] * split;
3583 	      b1 = con - alpha_i[0];
3584 	      b1 = con - b1;
3585 	      b2 = alpha_i[0] - b1;
3586 
3587 	      c11 = head_a1 * alpha_i[0];
3588 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
3589 
3590 	      c2 = tail_a1 * alpha_i[0];
3591 	      t1 = c11 + c2;
3592 	      t2 = (c2 - (t1 - c11)) + c21;
3593 
3594 	      head_t1 = t1 + t2;
3595 	      tail_t1 = t2 - (head_t1 - t1);
3596 	    }
3597 	    {
3598 	      /* Compute double-double = double-double * double. */
3599 	      double a11, a21, b1, b2, c11, c21, c2, con, t1, t2;
3600 
3601 	      con = head_a0 * split;
3602 	      a11 = con - head_a0;
3603 	      a11 = con - a11;
3604 	      a21 = head_a0 - a11;
3605 	      con = alpha_i[1] * split;
3606 	      b1 = con - alpha_i[1];
3607 	      b1 = con - b1;
3608 	      b2 = alpha_i[1] - b1;
3609 
3610 	      c11 = head_a0 * alpha_i[1];
3611 	      c21 = (((a11 * b1 - c11) + a11 * b2) + a21 * b1) + a21 * b2;
3612 
3613 	      c2 = tail_a0 * alpha_i[1];
3614 	      t1 = c11 + c2;
3615 	      t2 = (c2 - (t1 - c11)) + c21;
3616 
3617 	      head_t2 = t1 + t2;
3618 	      tail_t2 = t2 - (head_t2 - t1);
3619 	    }
3620 	    {
3621 	      /* Compute double-double = double-double + double-double. */
3622 	      double bv;
3623 	      double s1, s2, t1, t2;
3624 
3625 	      /* Add two hi words. */
3626 	      s1 = head_t1 + head_t2;
3627 	      bv = s1 - head_t1;
3628 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3629 
3630 	      /* Add two lo words. */
3631 	      t1 = tail_t1 + tail_t2;
3632 	      bv = t1 - tail_t1;
3633 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3634 
3635 	      s2 += t1;
3636 
3637 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3638 	      t1 = s1 + s2;
3639 	      s2 = s2 - (t1 - s1);
3640 
3641 	      t2 += s2;
3642 
3643 	      /* Renormalize (t1, t2)  */
3644 	      head_t1 = t1 + t2;
3645 	      tail_t1 = t2 - (head_t1 - t1);
3646 	    }
3647 	    head_tmp1[1] = head_t1;
3648 	    tail_tmp1[1] = tail_t1;
3649 	  }
3650 
3651 	  y_elem[0] = y_i[yi];
3652 	  y_elem[1] = y_i[yi + 1];
3653 	  {
3654 	    /* Compute complex-extra = complex-double * complex-double. */
3655 	    double head_t1, tail_t1;
3656 	    double head_t2, tail_t2;
3657 	    /* Real part */
3658 	    {
3659 	      /* Compute double_double = double * double. */
3660 	      double a1, a2, b1, b2, con;
3661 
3662 	      con = y_elem[0] * split;
3663 	      a1 = con - y_elem[0];
3664 	      a1 = con - a1;
3665 	      a2 = y_elem[0] - a1;
3666 	      con = beta_i[0] * split;
3667 	      b1 = con - beta_i[0];
3668 	      b1 = con - b1;
3669 	      b2 = beta_i[0] - b1;
3670 
3671 	      head_t1 = y_elem[0] * beta_i[0];
3672 	      tail_t1 = (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
3673 	    }
3674 	    {
3675 	      /* Compute double_double = double * double. */
3676 	      double a1, a2, b1, b2, con;
3677 
3678 	      con = y_elem[1] * split;
3679 	      a1 = con - y_elem[1];
3680 	      a1 = con - a1;
3681 	      a2 = y_elem[1] - a1;
3682 	      con = beta_i[1] * split;
3683 	      b1 = con - beta_i[1];
3684 	      b1 = con - b1;
3685 	      b2 = beta_i[1] - b1;
3686 
3687 	      head_t2 = y_elem[1] * beta_i[1];
3688 	      tail_t2 = (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
3689 	    }
3690 	    head_t2 = -head_t2;
3691 	    tail_t2 = -tail_t2;
3692 	    {
3693 	      /* Compute double-double = double-double + double-double. */
3694 	      double bv;
3695 	      double s1, s2, t1, t2;
3696 
3697 	      /* Add two hi words. */
3698 	      s1 = head_t1 + head_t2;
3699 	      bv = s1 - head_t1;
3700 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3701 
3702 	      /* Add two lo words. */
3703 	      t1 = tail_t1 + tail_t2;
3704 	      bv = t1 - tail_t1;
3705 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3706 
3707 	      s2 += t1;
3708 
3709 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3710 	      t1 = s1 + s2;
3711 	      s2 = s2 - (t1 - s1);
3712 
3713 	      t2 += s2;
3714 
3715 	      /* Renormalize (t1, t2)  */
3716 	      head_t1 = t1 + t2;
3717 	      tail_t1 = t2 - (head_t1 - t1);
3718 	    }
3719 	    head_tmp2[0] = head_t1;
3720 	    tail_tmp2[0] = tail_t1;
3721 	    /* Imaginary part */
3722 	    {
3723 	      /* Compute double_double = double * double. */
3724 	      double a1, a2, b1, b2, con;
3725 
3726 	      con = y_elem[1] * split;
3727 	      a1 = con - y_elem[1];
3728 	      a1 = con - a1;
3729 	      a2 = y_elem[1] - a1;
3730 	      con = beta_i[0] * split;
3731 	      b1 = con - beta_i[0];
3732 	      b1 = con - b1;
3733 	      b2 = beta_i[0] - b1;
3734 
3735 	      head_t1 = y_elem[1] * beta_i[0];
3736 	      tail_t1 = (((a1 * b1 - head_t1) + a1 * b2) + a2 * b1) + a2 * b2;
3737 	    }
3738 	    {
3739 	      /* Compute double_double = double * double. */
3740 	      double a1, a2, b1, b2, con;
3741 
3742 	      con = y_elem[0] * split;
3743 	      a1 = con - y_elem[0];
3744 	      a1 = con - a1;
3745 	      a2 = y_elem[0] - a1;
3746 	      con = beta_i[1] * split;
3747 	      b1 = con - beta_i[1];
3748 	      b1 = con - b1;
3749 	      b2 = beta_i[1] - b1;
3750 
3751 	      head_t2 = y_elem[0] * beta_i[1];
3752 	      tail_t2 = (((a1 * b1 - head_t2) + a1 * b2) + a2 * b1) + a2 * b2;
3753 	    }
3754 	    {
3755 	      /* Compute double-double = double-double + double-double. */
3756 	      double bv;
3757 	      double s1, s2, t1, t2;
3758 
3759 	      /* Add two hi words. */
3760 	      s1 = head_t1 + head_t2;
3761 	      bv = s1 - head_t1;
3762 	      s2 = ((head_t2 - bv) + (head_t1 - (s1 - bv)));
3763 
3764 	      /* Add two lo words. */
3765 	      t1 = tail_t1 + tail_t2;
3766 	      bv = t1 - tail_t1;
3767 	      t2 = ((tail_t2 - bv) + (tail_t1 - (t1 - bv)));
3768 
3769 	      s2 += t1;
3770 
3771 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3772 	      t1 = s1 + s2;
3773 	      s2 = s2 - (t1 - s1);
3774 
3775 	      t2 += s2;
3776 
3777 	      /* Renormalize (t1, t2)  */
3778 	      head_t1 = t1 + t2;
3779 	      tail_t1 = t2 - (head_t1 - t1);
3780 	    }
3781 	    head_tmp2[1] = head_t1;
3782 	    tail_tmp2[1] = tail_t1;
3783 	  }
3784 	  {
3785 	    double head_t, tail_t;
3786 	    double head_a, tail_a;
3787 	    double head_b, tail_b;
3788 	    /* Real part */
3789 	    head_a = head_tmp1[0];
3790 	    tail_a = tail_tmp1[0];
3791 	    head_b = head_tmp2[0];
3792 	    tail_b = tail_tmp2[0];
3793 	    {
3794 	      /* Compute double-double = double-double + double-double. */
3795 	      double bv;
3796 	      double s1, s2, t1, t2;
3797 
3798 	      /* Add two hi words. */
3799 	      s1 = head_a + head_b;
3800 	      bv = s1 - head_a;
3801 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3802 
3803 	      /* Add two lo words. */
3804 	      t1 = tail_a + tail_b;
3805 	      bv = t1 - tail_a;
3806 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3807 
3808 	      s2 += t1;
3809 
3810 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3811 	      t1 = s1 + s2;
3812 	      s2 = s2 - (t1 - s1);
3813 
3814 	      t2 += s2;
3815 
3816 	      /* Renormalize (t1, t2)  */
3817 	      head_t = t1 + t2;
3818 	      tail_t = t2 - (head_t - t1);
3819 	    }
3820 	    head_tmp3[0] = head_t;
3821 	    tail_tmp3[0] = tail_t;
3822 	    /* Imaginary part */
3823 	    head_a = head_tmp1[1];
3824 	    tail_a = tail_tmp1[1];
3825 	    head_b = head_tmp2[1];
3826 	    tail_b = tail_tmp2[1];
3827 	    {
3828 	      /* Compute double-double = double-double + double-double. */
3829 	      double bv;
3830 	      double s1, s2, t1, t2;
3831 
3832 	      /* Add two hi words. */
3833 	      s1 = head_a + head_b;
3834 	      bv = s1 - head_a;
3835 	      s2 = ((head_b - bv) + (head_a - (s1 - bv)));
3836 
3837 	      /* Add two lo words. */
3838 	      t1 = tail_a + tail_b;
3839 	      bv = t1 - tail_a;
3840 	      t2 = ((tail_b - bv) + (tail_a - (t1 - bv)));
3841 
3842 	      s2 += t1;
3843 
3844 	      /* Renormalize (s1, s2)  to  (t1, s2) */
3845 	      t1 = s1 + s2;
3846 	      s2 = s2 - (t1 - s1);
3847 
3848 	      t2 += s2;
3849 
3850 	      /* Renormalize (t1, t2)  */
3851 	      head_t = t1 + t2;
3852 	      tail_t = t2 - (head_t - t1);
3853 	    }
3854 	    head_tmp3[1] = head_t;
3855 	    tail_tmp3[1] = tail_t;
3856 	  }
3857 	  y_i[yi] = head_tmp3[0];
3858 	  y_i[yi + 1] = head_tmp3[1];
3859 	}
3860       }
3861 
3862       FPU_FIX_STOP;
3863 
3864       break;
3865     }
3866   }
3867 }				/* end BLAS_zhemv2_c_z_x */
3868