Accord.Math.Optimization.BoundedBroydenFletcherGoldfarbShanno.daxpy C# (CSharp) Method

daxpy() private static method

private static daxpy ( int n, double da, double dx, int _dx_offset, int incx, double dy, int _dy_offset, int incy ) : void
n int
da double
dx double
_dx_offset int
incx int
dy double
_dy_offset int
incy int
return void
        private static void daxpy(int n, double da,
             double[] dx, int _dx_offset, int incx, double[] dy, int _dy_offset, int incy)
        {

            int i = 0;
            int ix = 0;
            int iy = 0;
            int m = 0;
            int mp1 = 0;
            if ((n <= 0))
            {
                return;
            }

            if ((da == 0.0e0))
            {
                return;
            }

            if (((incx == 1) && (incy == 1)))
            {
                // *
                // *        code for both increments equal to 1
                // *
                // *
                // *        clean-up loop
                // *
                m = (n) % (4);
                if ((m != 0))
                {
                    {
                        for (i = 1; i <= m; i++)
                        {
                            dy[(i - (1)) + _dy_offset] = (dy[(i - (1)) + _dy_offset]
                                + (da * dx[(i - (1)) + _dx_offset]));
                        }
                    }
                }

                if ((n < 4))
                {
                    return;
                }

                mp1 = (m + 1);
                {
                    int _i_inc = 4;
                    for (i = mp1; i <= n; i += _i_inc)
                    {
                        dy[(i - (1)) + _dy_offset] = (dy[(i - (1)) + _dy_offset]
                            + (da * dx[(i - (1)) + _dx_offset]));
                        dy[((i + 1) - (1)) + _dy_offset] = (dy[((i + 1) - (1)) + _dy_offset]
                            + (da * dx[((i + 1) - (1)) + _dx_offset]));
                        dy[((i + 2) - (1)) + _dy_offset] = (dy[((i + 2) - (1)) + _dy_offset]
                            + (da * dx[((i + 2) - (1)) + _dx_offset]));
                        dy[((i + 3) - (1)) + _dy_offset] = (dy[((i + 3) - (1)) + _dy_offset]
                            + (da * dx[((i + 3) - (1)) + _dx_offset]));
                    }
                }
            }
            else
            {
                // *
                // *        code for unequal increments or equal increments
                // *          not equal to 1
                // *
                ix = 1;
                iy = 1;
                if ((incx < 0))
                {
                    ix = (((((-(n)) + 1)) * incx) + 1);
                }
                if ((incy < 0))
                {
                    iy = (((((-(n)) + 1)) * incy) + 1);
                }
                {
                    for (i = 1; i <= n; i++)
                    {
                        dy[(iy - (1)) + _dy_offset] = (dy[(iy - (1)) + _dy_offset]
                            + (da * dx[(ix - (1)) + _dx_offset]));
                        ix = (ix + incx);
                        iy = (iy + incy);
                    }
                }
            }
            return;
        }
    }