156 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
| #include "common.h"
 | |
| #ifdef FUNCTION_PROFILE
 | |
| #include "functable.h"
 | |
| #endif
 | |
| 
 | |
| #ifndef CBLAS
 | |
| 
 | |
| void NAME(blasint *N, FLOAT *dx, blasint *INCX, FLOAT *dy, blasint *INCY, FLOAT *dparam){
 | |
| 
 | |
|   blasint n = *N;
 | |
|   blasint incx = *INCX;
 | |
|   blasint incy = *INCY;
 | |
| 
 | |
| #else
 | |
| 
 | |
| void CNAME(blasint n, FLOAT *dx, blasint incx, FLOAT *dy, blasint incy, FLOAT *dparam){
 | |
| 
 | |
| #endif
 | |
| 
 | |
|   blasint i__1, i__2;
 | |
|   
 | |
|   blasint i__;
 | |
|   FLOAT w, z__;
 | |
|   blasint kx, ky;
 | |
|   FLOAT dh11, dh12, dh22, dh21, dflag;
 | |
|   blasint nsteps;
 | |
|   
 | |
| #ifndef CBLAS
 | |
|   PRINT_DEBUG_CNAME;
 | |
| #else
 | |
|   PRINT_DEBUG_CNAME;
 | |
| #endif
 | |
| 
 | |
|   --dparam;
 | |
|   --dy;
 | |
|   --dx;
 | |
|   
 | |
|   dflag = dparam[1];
 | |
|     if (n <= 0 || dflag == - 2.0) goto L140;
 | |
| 
 | |
|     if (! (incx == incy && incx > 0)) goto L70;
 | |
| 
 | |
|     nsteps = n * incx;
 | |
|     if (dflag < 0.) {
 | |
| 	goto L50;
 | |
|     } else if (dflag == 0) {
 | |
| 	goto L10;
 | |
|     } else {
 | |
| 	goto L30;
 | |
|     }
 | |
| L10:
 | |
|     dh12 = dparam[4];
 | |
|     dh21 = dparam[3];
 | |
|     i__1 = nsteps;
 | |
|     i__2 = incx;
 | |
|     for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
 | |
| 	w = dx[i__];
 | |
| 	z__ = dy[i__];
 | |
| 	dx[i__] = w + z__ * dh12;
 | |
| 	dy[i__] = w * dh21 + z__;
 | |
| /* L20: */
 | |
|     }
 | |
|     goto L140;
 | |
| L30:
 | |
|     dh11 = dparam[2];
 | |
|     dh22 = dparam[5];
 | |
|     i__2 = nsteps;
 | |
|     i__1 = incx;
 | |
|     for (i__ = 1; i__1 < 0 ? i__ >= i__2 : i__ <= i__2; i__ += i__1) {
 | |
| 	w = dx[i__];
 | |
| 	z__ = dy[i__];
 | |
| 	dx[i__] = w * dh11 + z__;
 | |
| 	dy[i__] = -w + dh22 * z__;
 | |
| /* L40: */
 | |
|     }
 | |
|     goto L140;
 | |
| L50:
 | |
|     dh11 = dparam[2];
 | |
|     dh12 = dparam[4];
 | |
|     dh21 = dparam[3];
 | |
|     dh22 = dparam[5];
 | |
|     i__1 = nsteps;
 | |
|     i__2 = incx;
 | |
|     for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
 | |
| 	w = dx[i__];
 | |
| 	z__ = dy[i__];
 | |
| 	dx[i__] = w * dh11 + z__ * dh12;
 | |
| 	dy[i__] = w * dh21 + z__ * dh22;
 | |
| /* L60: */
 | |
|     }
 | |
|     goto L140;
 | |
| L70:
 | |
|     kx = 1;
 | |
|     ky = 1;
 | |
|     if (incx < 0) {
 | |
| 	kx = (1 - n) * incx + 1;
 | |
|     }
 | |
|     if (incy < 0) {
 | |
| 	ky = (1 - n) * incy + 1;
 | |
|     }
 | |
| 
 | |
|     if (dflag < 0.) {
 | |
| 	goto L120;
 | |
|     } else if (dflag == 0) {
 | |
| 	goto L80;
 | |
|     } else {
 | |
| 	goto L100;
 | |
|     }
 | |
| L80:
 | |
|     dh12 = dparam[4];
 | |
|     dh21 = dparam[3];
 | |
|     i__2 = n;
 | |
|     for (i__ = 1; i__ <= i__2; ++i__) {
 | |
| 	w = dx[kx];
 | |
| 	z__ = dy[ky];
 | |
| 	dx[kx] = w + z__ * dh12;
 | |
| 	dy[ky] = w * dh21 + z__;
 | |
| 	kx += incx;
 | |
| 	ky += incy;
 | |
| /* L90: */
 | |
|     }
 | |
|     goto L140;
 | |
| L100:
 | |
|     dh11 = dparam[2];
 | |
|     dh22 = dparam[5];
 | |
|     i__2 = n;
 | |
|     for (i__ = 1; i__ <= i__2; ++i__) {
 | |
| 	w = dx[kx];
 | |
| 	z__ = dy[ky];
 | |
| 	dx[kx] = w * dh11 + z__;
 | |
| 	dy[ky] = -w + dh22 * z__;
 | |
| 	kx += incx;
 | |
| 	ky += incy;
 | |
| /* L110: */
 | |
|     }
 | |
|     goto L140;
 | |
| L120:
 | |
|     dh11 = dparam[2];
 | |
|     dh12 = dparam[4];
 | |
|     dh21 = dparam[3];
 | |
|     dh22 = dparam[5];
 | |
|     i__2 = n;
 | |
|     for (i__ = 1; i__ <= i__2; ++i__) {
 | |
| 	w = dx[kx];
 | |
| 	z__ = dy[ky];
 | |
| 	dx[kx] = w * dh11 + z__ * dh12;
 | |
| 	dy[ky] = w * dh21 + z__ * dh22;
 | |
| 	kx += incx;
 | |
| 	ky += incy;
 | |
| /* L130: */
 | |
|     }
 | |
| L140:
 | |
|     return;
 | |
| }
 | |
| 
 |