1acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* drotm.f -- translated by f2c (version 20100827). 2acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray You must link the resulting object file with libf2c: 3acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray on Microsoft Windows system, link with libf2c.lib; 4acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray on Linux or Unix systems, link with .../path/to/libf2c.a -lm 5acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray or, if you install libf2c.a in a standard place, with -lf2c -lm 6acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray -- in that order, at the end of the command line, as in 7acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray cc *.o -lf2c -lm 8acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., 9acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 10acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray http://www.netlib.org/f2c/libf2c.zip 11acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray*/ 12acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 13acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray#include "datatypes.h" 14acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 15acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* Subroutine */ int drotm_(integer *n, doublereal *dx, integer *incx, 16acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray doublereal *dy, integer *incy, doublereal *dparam) 17acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray{ 18acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray /* Initialized data */ 19acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 20acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray static doublereal zero = 0.; 21acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray static doublereal two = 2.; 22acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 23acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray /* System generated locals */ 24acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray integer i__1, i__2; 25acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 26acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray /* Local variables */ 27acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray integer i__; 28acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray doublereal w, z__; 29acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray integer kx, ky; 30acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray doublereal dh11, dh12, dh21, dh22, dflag; 31acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray integer nsteps; 32acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 33acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. Scalar Arguments .. */ 34acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. */ 35acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. Array Arguments .. */ 36acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. */ 37acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 38acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* Purpose */ 39acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* ======= */ 40acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 41acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX */ 42acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 43acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* (DX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF DX ARE IN */ 44acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* (DY**T) */ 45acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 46acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE */ 47acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* LX = (-INCX)*N, AND SIMILARLY FOR SY USING LY AND INCY. */ 48acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS.. */ 49acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 50acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0 */ 51acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 52acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0) */ 53acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* H=( ) ( ) ( ) ( ) */ 54acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0). */ 55acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* SEE DROTMG FOR A DESCRIPTION OF DATA STORAGE IN DPARAM. */ 56acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 57acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* Arguments */ 58acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* ========= */ 59acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 60acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* N (input) INTEGER */ 61acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* number of elements in input vector(s) */ 62acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 63acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DX (input/output) DOUBLE PRECISION array, dimension N */ 64acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* double precision vector with N elements */ 65acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 66acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* INCX (input) INTEGER */ 67acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* storage spacing between elements of DX */ 68acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 69acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DY (input/output) DOUBLE PRECISION array, dimension N */ 70acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* double precision vector with N elements */ 71acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 72acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* INCY (input) INTEGER */ 73acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* storage spacing between elements of DY */ 74acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 75acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DPARAM (input/output) DOUBLE PRECISION array, dimension 5 */ 76acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DPARAM(1)=DFLAG */ 77acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DPARAM(2)=DH11 */ 78acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DPARAM(3)=DH21 */ 79acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DPARAM(4)=DH12 */ 80acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* DPARAM(5)=DH22 */ 81acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 82acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* ===================================================================== */ 83acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 84acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. Local Scalars .. */ 85acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. */ 86acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. Data statements .. */ 87acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray /* Parameter adjustments */ 88acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray --dparam; 89acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray --dy; 90acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray --dx; 91acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 92acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray /* Function Body */ 93acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* .. */ 94acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 95acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dflag = dparam[1]; 96acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray if (*n <= 0 || dflag + two == zero) { 97acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L140; 98acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 99acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray if (! (*incx == *incy && *incx > 0)) { 100acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L70; 101acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 102acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 103acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray nsteps = *n * *incx; 104acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray if (dflag < 0.) { 105acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L50; 106acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } else if (dflag == 0) { 107acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L10; 108acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } else { 109acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L30; 110acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 111acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL10: 112acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh12 = dparam[4]; 113acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh21 = dparam[3]; 114acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__1 = nsteps; 115acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__2 = *incx; 116acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) { 117acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray w = dx[i__]; 118acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray z__ = dy[i__]; 119acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dx[i__] = w + z__ * dh12; 120acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dy[i__] = w * dh21 + z__; 121acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* L20: */ 122acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 123acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L140; 124acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL30: 125acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh11 = dparam[2]; 126acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh22 = dparam[5]; 127acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__2 = nsteps; 128acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__1 = *incx; 129acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray for (i__ = 1; i__1 < 0 ? i__ >= i__2 : i__ <= i__2; i__ += i__1) { 130acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray w = dx[i__]; 131acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray z__ = dy[i__]; 132acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dx[i__] = w * dh11 + z__; 133acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dy[i__] = -w + dh22 * z__; 134acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* L40: */ 135acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 136acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L140; 137acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL50: 138acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh11 = dparam[2]; 139acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh12 = dparam[4]; 140acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh21 = dparam[3]; 141acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh22 = dparam[5]; 142acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__1 = nsteps; 143acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__2 = *incx; 144acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) { 145acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray w = dx[i__]; 146acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray z__ = dy[i__]; 147acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dx[i__] = w * dh11 + z__ * dh12; 148acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dy[i__] = w * dh21 + z__ * dh22; 149acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* L60: */ 150acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 151acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L140; 152acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL70: 153acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray kx = 1; 154acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray ky = 1; 155acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray if (*incx < 0) { 156acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray kx = (1 - *n) * *incx + 1; 157acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 158acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray if (*incy < 0) { 159acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray ky = (1 - *n) * *incy + 1; 160acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 161acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 162acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray if (dflag < 0.) { 163acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L120; 164acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } else if (dflag == 0) { 165acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L80; 166acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } else { 167acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L100; 168acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 169acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL80: 170acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh12 = dparam[4]; 171acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh21 = dparam[3]; 172acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__2 = *n; 173acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray for (i__ = 1; i__ <= i__2; ++i__) { 174acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray w = dx[kx]; 175acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray z__ = dy[ky]; 176acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dx[kx] = w + z__ * dh12; 177acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dy[ky] = w * dh21 + z__; 178acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray kx += *incx; 179acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray ky += *incy; 180acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* L90: */ 181acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 182acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L140; 183acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL100: 184acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh11 = dparam[2]; 185acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh22 = dparam[5]; 186acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__2 = *n; 187acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray for (i__ = 1; i__ <= i__2; ++i__) { 188acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray w = dx[kx]; 189acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray z__ = dy[ky]; 190acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dx[kx] = w * dh11 + z__; 191acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dy[ky] = -w + dh22 * z__; 192acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray kx += *incx; 193acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray ky += *incy; 194acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* L110: */ 195acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 196acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray goto L140; 197acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL120: 198acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh11 = dparam[2]; 199acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh12 = dparam[4]; 200acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh21 = dparam[3]; 201acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dh22 = dparam[5]; 202acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray i__2 = *n; 203acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray for (i__ = 1; i__ <= i__2; ++i__) { 204acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray w = dx[kx]; 205acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray z__ = dy[ky]; 206acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dx[kx] = w * dh11 + z__ * dh12; 207acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray dy[ky] = w * dh21 + z__ * dh22; 208acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray kx += *incx; 209acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray ky += *incy; 210acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray/* L130: */ 211acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray } 212acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim MurrayL140: 213acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray return 0; 214acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray} /* drotm_ */ 215acf83bd421067e7a2b828c5fe61594a4fda5e9a5Tim Murray 216