public unsafe override double Dot(double[] a, double[] b)
        {
            if (a.Length != b.Length)
            {
                throw new Exception("Length of a is not equal to the length of b");
            }
            double[] ret = new double[1];
            fixed(double *pSrc1 = a, pSrc2 = b, pDp = ret)
            {
                IPPNative.ippsDotProd_64f(pSrc1, pSrc2, a.Length, pDp);
            }

            return(ret[0]);
        }