public int CountEquals(ContiguousMemoryBuffer rhs, MemoryBuffer cache) { Debug.Assert(Buffer.pointer != 0); Debug.Assert(rhs.Buffer.pointer != 0); Debug.Assert(Size == rhs.Size); bool needToFreeCache = cache.pointer == 0; if (needToFreeCache) { cache.memorySpace = memorySpace; cache.mathDomain = mathDomain; cache.size = (uint)Size; Alloc(cache); } // calculate the difference CuBlasApi.Subtract(cache, Buffer, rhs.Buffer); // calculate how many non-zeros, overriding cache CuBlasApi.IsNonZero(cache, cache); double ret = CubApi.Sum(cache); // we are counting the zero entries ret = Size - ret; if (needToFreeCache) { Free(cache); } return((int)ret); }
public double AbsoluteMaximum() { Debug.Assert(Buffer.pointer != 0); return(CubApi.AbsMax(Buffer)); }
public double Sum() { Debug.Assert(Buffer.pointer != 0); return(CubApi.Sum(Buffer)); }
public double Minimum() { Debug.Assert(Buffer.pointer != 0); return(CubApi.Min(Buffer)); }