public IFloatData2D M_mult_MT(IFloatData2D mt, IFloatData2D m) { var output = new float[mt.W, mt.H]; Parallel.For(0, mt.W, x => { Parallel.For(0, mt.H, y => { output[y, x] = m[x, y] * mt[y, x]; }); }); return(new CPU_FloatData2D(output)); }
public IFloatData2D Sqrt(IFloatData2D cache, IFloatData2D arr) { for (int x = 0; x < arr.W; x++) { for (int y = 0; y < arr.H; y++) { cache[x, y] = SafeDouble(Math.Sqrt(arr[x, y])); } } return(cache); }
public IFloatData2D M_div_C(IFloatData2D cache, IFloatData2D m, float c) { for (int x = 0; x < m.W; x++) { for (int y = 0; y < m.H; y++) { cache[x, y] = m[x, y] / c; } } return(cache); }
public IFloatData2D C_div_M(IFloatData2D cache, IFloatData2D m, int c) { for (int x = 0; x < m.W; x++) { for (int y = 0; y < m.H; y++) { cache[x, y] = c / m[x, y]; } } return(cache); }
public IFloatData2D M_add_M(IFloatData2D cache, IFloatData2D m0, IFloatData2D m1) { for (int x = 0; x < m0.W; x++) { for (int y = 0; y < m0.H; y++) { cache[x, y] = m0[x, y] + m1[x, y]; } } return(cache); }
public IFloatData2D M_mult_V(IFloatData2D cache, IFloatData2D m, IFloatData v) { for (int x = 0; x < m.W; x++) { for (int y = 0; y < m.H; y++) { cache[x, y] = m[x, y] * v[x]; } } return(cache); }
public IFloatData2D VT_mult_M(IFloatData2D cache, IFloatData vt, IFloatData2D m) { for (int x = 0; x < m.W; x++) { for (int y = 0; y < m.H; y++) { cache[x, y] = vt[y] * m[x, y]; } } return(cache); }
public IFloatData2D M_mult_MT(IFloatData2D mt, IFloatData2D m) { var output = new float[mt.W, mt.H]; for (int x = 0; x < mt.W; x++) { for (int y = 0; y < mt.H; y++) { output[y, x] = m[x, y] * mt[y, x]; } } return(new CPU_FloatData2D(output)); }
public IFloatData2D ApplyMask(IFloatData2D arr, IByteData2D mask) { var output = new float[arr.W, arr.H]; for (var x = 0; x < arr.W; x++) { for (var y = 0; x < arr.H; x++) { output[x, y] = arr[x, y] * mask[x, y]; } } return(new CPU_FloatData2D(output)); }
public IFloatData SumLine(IFloatData2D arr) { var output = new float[arr.W]; Parallel.For(0, arr.W, x => { var sum = 0f; for (var y = 0; y < arr.H; y++) { sum += arr[x, y]; } output[x] = sum; }); return(new CPU_FloatData(output)); }
public IFloatData SumColumn(IFloatData2D arr) { var output = new float[arr.H]; Parallel.For(0, arr.H, y => { var sum = 0f; for (var x = 0; x < arr.W; x++) { sum += arr[x, y]; } output[y] = sum; }); return(new CPU_FloatData(output)); }
public IFloatData SumColumn(IFloatData2D arr) { var output = new float[arr.H]; for (int y = 0; y < arr.H; y++) { var sum = 0f; for (var x = 0; x < arr.W; x++) { sum += arr[x, y]; } output[y] = sum; } ; return(new CPU_FloatData(output)); }
public IFloatData SumLine(IFloatData2D arr) { var output = new float[arr.W]; for (int x = 0; x < arr.W; x++) { var sum = 0f; for (var y = 0; y < arr.H; y++) { sum += arr[x, y]; } output[x] = sum; } ; return(new CPU_FloatData(output)); }
public FloatArray2DT(IFloatData2D data) { _view = data; }
public FloatArray2D(float[,] data) { _view = ProcessingDevice.FloatData.New(data); _cache = ProcessingDevice.FloatData.New(W, H); }
public FloatArray2D(int w, int h) { _view = ProcessingDevice.FloatData.New(w, h); _cache = ProcessingDevice.FloatData.New(w, h); }
public IFloatData2D Sqrt(IFloatData2D cache, IFloatData2D arr) { Parallel.For(0, arr.W, x => { Parallel.For(0, arr.H, y => { cache[x, y] = SafeDouble(Math.Sqrt(arr[x, y])); }); }); return(cache); }
public FloatArray2D(IFloatData2D data) { _view = data; _cache = ProcessingDevice.FloatData.New(W, H); }
public IFloatData2D C_div_M(IFloatData2D cache, IFloatData2D m, int c) { Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = c / m[x, y]; }); }); return(cache); }
public IFloatData2D M_div_C(IFloatData2D cache, IFloatData2D m, float c) { Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = m[x, y] / c; }); }); return(cache); }
public IFloatData2D M_mult_V(IFloatData2D cache, IFloatData2D m, IFloatData v) { Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = m[x, y] * v[x]; }); }); return(cache); }
public IFloatData2D M_add_M(IFloatData2D cache, IFloatData2D m0, IFloatData2D m1) { Parallel.For(0, m0.W, x => { Parallel.For(0, m0.H, y => { cache[x, y] = m0[x, y] + m1[x, y]; }); }); return(cache); }
public IFloatData2D VT_mult_M(IFloatData2D cache, IFloatData vt, IFloatData2D m) { Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = vt[y] * m[x, y]; }); }); return(cache); }