private void ErrorCheck(AType argument) { if (argument.Type != ATypes.AInteger && argument.Type != ATypes.AFloat) { throw new Error.Type(TypeErrorText); } switch (argument.Rank) { case 0: case 1: AType sumValue = (argument.Rank == 0) ? argument // a simple scalar : AFloat.Create(argument.Sum(item => item.asFloat)); // we have a vector if (sumValue.IsTolerablyWholeNumber && sumValue.asInteger == 0) { throw new Error.Domain(DomainErrorText); } break; case 2: if (argument.Shape[1] > argument.Shape[0]) { throw new Error.Domain(DomainErrorText); } break; default: throw new Error.Rank(RankErrorText); } }
private AType VectorInverse(AType argument) { AType result = AArray.Create(ATypes.AFloat); double sqrmagnitude = argument.Sum(item => item.asFloat * item.asFloat); for (int i = 0; i < argument.Length; i++) { result.Add(AFloat.Create(argument[i].asFloat / sqrmagnitude)); } return(result); }
private AType VectorInverse(AType argument) { AType result = AArray.Create(ATypes.AFloat); double sqrmagnitude = argument.Sum(item => item.asFloat * item.asFloat); for (int i = 0; i < argument.Length; i++) { result.Add(AFloat.Create(argument[i].asFloat / sqrmagnitude)); } return result; }