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