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]); }