| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #include "datatypes.h" |
|
|
| int drotm_(integer *n, doublereal *dx, integer *incx, |
| doublereal *dy, integer *incy, doublereal *dparam) |
| { |
| |
|
|
| static doublereal zero = 0.; |
| static doublereal two = 2.; |
|
|
| |
| integer i__1, i__2; |
|
|
| |
| integer i__; |
| doublereal w, z__; |
| integer kx, ky; |
| doublereal dh11, dh12, dh21, dh22, dflag; |
| integer nsteps; |
|
|
| |
| |
| |
| |
|
|
| |
| |
|
|
| |
|
|
| |
| |
|
|
| |
| |
| |
|
|
| |
|
|
| |
| |
| |
| |
|
|
| |
| |
|
|
| |
| |
|
|
| |
| |
|
|
| |
| |
|
|
| |
| |
|
|
| |
| |
|
|
| |
| |
| |
| |
| |
| |
|
|
| |
|
|
| |
| |
| |
| |
| --dparam; |
| --dy; |
| --dx; |
|
|
| |
| |
|
|
| dflag = dparam[1]; |
| if (*n <= 0 || dflag + two == zero) { |
| 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__; |
| |
| } |
| 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__; |
| |
| } |
| 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; |
| |
| } |
| 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; |
| |
| } |
| 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; |
| |
| } |
| 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; |
| |
| } |
| L140: |
| return 0; |
| } |
|
|
|
|