00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007
00008 integer idamax_(n, dx, incx)
00009 integer *n;
00010 doublereal *dx;
00011 integer *incx;
00012 {
00013
00014 integer ret_val, i__1;
00015 doublereal d__1;
00016
00017
00018 static doublereal dmax__;
00019 static integer i, ix;
00020
00021
00022
00023
00024
00025
00026
00027
00028 --dx;
00029
00030
00031 ret_val = 0;
00032 if (*n < 1 || *incx <= 0) {
00033 return ret_val;
00034 }
00035 ret_val = 1;
00036 if (*n == 1) {
00037 return ret_val;
00038 }
00039 if (*incx == 1) {
00040 goto L20;
00041 }
00042
00043
00044
00045 ix = 1;
00046 dmax__ = abs(dx[1]);
00047 ix += *incx;
00048 i__1 = *n;
00049 for (i = 2; i <= i__1; ++i) {
00050 if ((d__1 = dx[ix], abs(d__1)) <= dmax__) {
00051 goto L5;
00052 }
00053 ret_val = i;
00054 dmax__ = (d__1 = dx[ix], abs(d__1));
00055 L5:
00056 ix += *incx;
00057
00058 }
00059 return ret_val;
00060
00061
00062
00063 L20:
00064 dmax__ = abs(dx[1]);
00065 i__1 = *n;
00066 for (i = 2; i <= i__1; ++i) {
00067 if ((d__1 = dx[i], abs(d__1)) <= dmax__) {
00068 goto L30;
00069 }
00070 ret_val = i;
00071 dmax__ = (d__1 = dx[i], abs(d__1));
00072 L30:
00073 ;
00074 }
00075 return ret_val;
00076 }
00077