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