00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007 #include "cblasimpexp.h"
00008
00009 int __IMPEXP__ daxpy_(n, da, dx, incx, dy, incy)
00010 integer *n;
00011 doublereal *da, *dx;
00012 integer *incx;
00013 doublereal *dy;
00014 integer *incy;
00015 {
00016
00017 integer i__1;
00018
00019
00020 static integer i, m, ix, iy, mp1;
00021
00022
00023
00024
00025
00026
00027
00028
00029 --dy;
00030 --dx;
00031
00032
00033 if (*n <= 0) {
00034 return 0;
00035 }
00036 if (*da == 0.) {
00037 return 0;
00038 }
00039 if (*incx == 1 && *incy == 1) {
00040 goto L20;
00041 }
00042
00043
00044
00045
00046 ix = 1;
00047 iy = 1;
00048 if (*incx < 0) {
00049 ix = (-(*n) + 1) * *incx + 1;
00050 }
00051 if (*incy < 0) {
00052 iy = (-(*n) + 1) * *incy + 1;
00053 }
00054 i__1 = *n;
00055 for (i = 1; i <= i__1; ++i) {
00056 dy[iy] += *da * dx[ix];
00057 ix += *incx;
00058 iy += *incy;
00059
00060 }
00061 return 0;
00062
00063
00064
00065
00066
00067
00068 L20:
00069 m = *n % 4;
00070 if (m == 0) {
00071 goto L40;
00072 }
00073 i__1 = m;
00074 for (i = 1; i <= i__1; ++i) {
00075 dy[i] += *da * dx[i];
00076
00077 }
00078 if (*n < 4) {
00079 return 0;
00080 }
00081 L40:
00082 mp1 = m + 1;
00083 i__1 = *n;
00084 for (i = mp1; i <= i__1; i += 4) {
00085 dy[i] += *da * dx[i];
00086 dy[i + 1] += *da * dx[i + 1];
00087 dy[i + 2] += *da * dx[i + 2];
00088 dy[i + 3] += *da * dx[i + 3];
00089
00090 }
00091 return 0;
00092 }
00093