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

ddot() private static method

private static ddot ( int n, double dx, int _dx_offset, int incx, double dy, int _dy_offset, int incy ) : double
n int
dx double
_dx_offset int
incx int
dy double
_dy_offset int
incy int
return double
        private static double ddot(int n, double[] dx, int _dx_offset,
           int incx, double[] dy, int _dy_offset, int incy)
        {
            double dtemp = 0.0d;
            int i = 0;
            int ix = 0;
            int iy = 0;
            int m = 0;
            int mp1 = 0;
            double ddot = 0.0d;
            ddot = 0.0e0;
            dtemp = 0.0e0;
            if ((n <= 0))
            {
                return ddot;
            }

            if (((incx == 1) && (incy == 1)))
            {
                goto L20;
            }
            // *
            // *        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++)
                {
                    dtemp = (dtemp + (dx[(ix - (1)) + _dx_offset] * dy[(iy - (1)) + _dy_offset]));
                    ix = (ix + incx);
                    iy = (iy + incy);
                }
            }
            ddot = dtemp;
            return ddot;

        // *
        // *        code for both increments equal to 1
        // *
        // *
        // *        clean-up loop
        // *
        L20:
            m = (n) % (5);

            if ((m == 0))
            {
                goto L40;
            }

            {
                for (i = 1; i <= m; i++)
                {
                    dtemp = (dtemp + (dx[(i - (1)) + _dx_offset] * dy[(i - (1)) + _dy_offset]));
                }
            }

            if ((n < 5))
            {
                goto L60;
            }

        L40:
            mp1 = (m + 1);
            {
                int _i_inc = 5;
                for (i = mp1; i <= n; i += _i_inc)
                {
                    dtemp = (((((dtemp + (dx[(i - (1)) + _dx_offset] * dy[(i - (1))
                        + _dy_offset])) + (dx[((i + 1) - (1)) + _dx_offset] * dy[((i + 1) - (1))
                        + _dy_offset])) + (dx[((i + 2) - (1)) + _dx_offset] * dy[((i + 2) - (1))
                        + _dy_offset])) + (dx[((i + 3) - (1)) + _dx_offset] * dy[((i + 3) - (1))
                        + _dy_offset])) + (dx[((i + 4) - (1)) + _dx_offset] * dy[((i + 4) - (1)) + _dy_offset]));
                }
            }
        L60:
            ddot = dtemp;
            return ddot;
        }