public static void AddXYTran(float a, AlignedArray x, AlignedArray y, int[] mprowiv, int[] mprowcol, int[] mprowrun, int[] runs, float[] coefs, int crow) { Contracts.Assert(Compat(x)); Contracts.Assert(Compat(y)); Contracts.Assert(0 < crow && crow <= x.Size); Contracts.AssertNonEmpty(mprowiv); Contracts.Assert(mprowiv.Length == crow); Contracts.AssertNonEmpty(mprowcol); Contracts.Assert(mprowcol.Length == crow); Contracts.Assert(mprowrun == null || mprowrun.Length == crow); Contracts.AssertNonEmpty(runs); Contracts.AssertNonEmpty(coefs); unsafe { fixed(float *px = &x.Items[0]) fixed(float *py = &y.Items[0]) fixed(int *pmprowiv = &mprowiv[0]) fixed(int *pmprowcol = &mprowcol[0]) fixed(int *pruns = &runs[0]) fixed(float *pcoefs = &coefs[0]) { if (mprowrun == null) { Thunk.AddXYTranCX(a, Ptr(x, px), Ptr(y, py), pmprowiv, pmprowcol, pruns, pcoefs, crow); } else { fixed(int *pmprowrun = mprowrun) Thunk.AddXYTranDX(a, Ptr(x, px), Ptr(y, py), pmprowiv, pmprowcol, pmprowrun, pruns, pcoefs, crow); } } } }