public override void LUInverse(Complex32[] a, int order) { if (a == null) { throw new ArgumentNullException(nameof(a)); } if (a.Length != order * order) { throw new ArgumentException(Resources.ArgumentArraysSameLength, nameof(a)); } var info = SafeNativeMethods.c_lu_inverse(order, a); if (info == (int)NativeError.MemoryAllocation) { throw new MemoryAllocationException(); } if (info < 0) { throw new InvalidParameterException(Math.Abs(info)); } if (info > 0) { throw new SingularUMatrixException(info); } }
public override void LUInverse(Complex32[] a, int order) { if (a == null) { throw new ArgumentNullException("a"); } if (a.Length != order * order) { throw new ArgumentException(Resources.ArgumentArraysSameLength, "a"); } var work = new Complex32[order]; SafeNativeMethods.c_lu_inverse(order, a, work, work.Length); }
public override void LUInverse(Complex32[] a, int order, Complex32[] work) { if (a == null) { throw new ArgumentNullException("a"); } if (a.Length != order * order) { throw new ArgumentException(Resources.ArgumentArraysSameLength, "a"); } if (work == null) { throw new ArgumentNullException("work"); } if (work.Length < order) { throw new ArgumentException(Resources.WorkArrayTooSmall, "work"); } SafeNativeMethods.c_lu_inverse(order, a, work, work.Length); }