Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015
00016 int drotm_(integer *n, doublereal *dx, integer *incx,
00017 doublereal *dy, integer *incy, doublereal *dparam)
00018 {
00019
00020
00021 static doublereal zero = 0.;
00022 static doublereal two = 2.;
00023
00024
00025 integer i__1, i__2;
00026
00027
00028 integer i__;
00029 doublereal w, z__;
00030 integer kx, ky;
00031 doublereal dh11, dh12, dh21, dh22, dflag;
00032 integer nsteps;
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 --dparam;
00090 --dy;
00091 --dx;
00092
00093
00094
00095
00096 dflag = dparam[1];
00097 if (*n <= 0 || dflag + two == zero) {
00098 goto L140;
00099 }
00100 if (! (*incx == *incy && *incx > 0)) {
00101 goto L70;
00102 }
00103
00104 nsteps = *n * *incx;
00105 if (dflag < 0.) {
00106 goto L50;
00107 } else if (dflag == 0) {
00108 goto L10;
00109 } else {
00110 goto L30;
00111 }
00112 L10:
00113 dh12 = dparam[4];
00114 dh21 = dparam[3];
00115 i__1 = nsteps;
00116 i__2 = *incx;
00117 for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
00118 w = dx[i__];
00119 z__ = dy[i__];
00120 dx[i__] = w + z__ * dh12;
00121 dy[i__] = w * dh21 + z__;
00122
00123 }
00124 goto L140;
00125 L30:
00126 dh11 = dparam[2];
00127 dh22 = dparam[5];
00128 i__2 = nsteps;
00129 i__1 = *incx;
00130 for (i__ = 1; i__1 < 0 ? i__ >= i__2 : i__ <= i__2; i__ += i__1) {
00131 w = dx[i__];
00132 z__ = dy[i__];
00133 dx[i__] = w * dh11 + z__;
00134 dy[i__] = -w + dh22 * z__;
00135
00136 }
00137 goto L140;
00138 L50:
00139 dh11 = dparam[2];
00140 dh12 = dparam[4];
00141 dh21 = dparam[3];
00142 dh22 = dparam[5];
00143 i__1 = nsteps;
00144 i__2 = *incx;
00145 for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
00146 w = dx[i__];
00147 z__ = dy[i__];
00148 dx[i__] = w * dh11 + z__ * dh12;
00149 dy[i__] = w * dh21 + z__ * dh22;
00150
00151 }
00152 goto L140;
00153 L70:
00154 kx = 1;
00155 ky = 1;
00156 if (*incx < 0) {
00157 kx = (1 - *n) * *incx + 1;
00158 }
00159 if (*incy < 0) {
00160 ky = (1 - *n) * *incy + 1;
00161 }
00162
00163 if (dflag < 0.) {
00164 goto L120;
00165 } else if (dflag == 0) {
00166 goto L80;
00167 } else {
00168 goto L100;
00169 }
00170 L80:
00171 dh12 = dparam[4];
00172 dh21 = dparam[3];
00173 i__2 = *n;
00174 for (i__ = 1; i__ <= i__2; ++i__) {
00175 w = dx[kx];
00176 z__ = dy[ky];
00177 dx[kx] = w + z__ * dh12;
00178 dy[ky] = w * dh21 + z__;
00179 kx += *incx;
00180 ky += *incy;
00181
00182 }
00183 goto L140;
00184 L100:
00185 dh11 = dparam[2];
00186 dh22 = dparam[5];
00187 i__2 = *n;
00188 for (i__ = 1; i__ <= i__2; ++i__) {
00189 w = dx[kx];
00190 z__ = dy[ky];
00191 dx[kx] = w * dh11 + z__;
00192 dy[ky] = -w + dh22 * z__;
00193 kx += *incx;
00194 ky += *incy;
00195
00196 }
00197 goto L140;
00198 L120:
00199 dh11 = dparam[2];
00200 dh12 = dparam[4];
00201 dh21 = dparam[3];
00202 dh22 = dparam[5];
00203 i__2 = *n;
00204 for (i__ = 1; i__ <= i__2; ++i__) {
00205 w = dx[kx];
00206 z__ = dy[ky];
00207 dx[kx] = w * dh11 + z__ * dh12;
00208 dy[ky] = w * dh21 + z__ * dh22;
00209 kx += *incx;
00210 ky += *incy;
00211
00212 }
00213 L140:
00214 return 0;
00215 }