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 doublereal dasum_(integer *n, doublereal *dx, integer *incx)
00017 {
00018
00019 integer i__1, i__2;
00020 doublereal ret_val, d__1, d__2, d__3, d__4, d__5, d__6;
00021
00022
00023 integer i__, m, mp1;
00024 doublereal dtemp;
00025 integer nincx;
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 --dx;
00047
00048
00049 ret_val = 0.;
00050 dtemp = 0.;
00051 if (*n <= 0 || *incx <= 0) {
00052 return ret_val;
00053 }
00054 if (*incx == 1) {
00055 goto L20;
00056 }
00057
00058
00059
00060 nincx = *n * *incx;
00061 i__1 = nincx;
00062 i__2 = *incx;
00063 for (i__ = 1; i__2 < 0 ? i__ >= i__1 : i__ <= i__1; i__ += i__2) {
00064 dtemp += (d__1 = dx[i__], abs(d__1));
00065
00066 }
00067 ret_val = dtemp;
00068 return ret_val;
00069
00070
00071
00072
00073
00074
00075 L20:
00076 m = *n % 6;
00077 if (m == 0) {
00078 goto L40;
00079 }
00080 i__2 = m;
00081 for (i__ = 1; i__ <= i__2; ++i__) {
00082 dtemp += (d__1 = dx[i__], abs(d__1));
00083
00084 }
00085 if (*n < 6) {
00086 goto L60;
00087 }
00088 L40:
00089 mp1 = m + 1;
00090 i__2 = *n;
00091 for (i__ = mp1; i__ <= i__2; i__ += 6) {
00092 dtemp = dtemp + (d__1 = dx[i__], abs(d__1)) + (d__2 = dx[i__ + 1],
00093 abs(d__2)) + (d__3 = dx[i__ + 2], abs(d__3)) + (d__4 = dx[i__
00094 + 3], abs(d__4)) + (d__5 = dx[i__ + 4], abs(d__5)) + (d__6 =
00095 dx[i__ + 5], abs(d__6));
00096
00097 }
00098 L60:
00099 ret_val = dtemp;
00100 return ret_val;
00101 }