private static AArray GenerateRange(int start, int end) { AArray vector = new AArray(ATypes.AInteger); for (int i = start; i < end; i++) { vector.AddWithNoUpdate(new AInteger(i)); } vector.UpdateInfo(); return vector; }
private static AType GenerateMultiDimension(AArray arguments) { int itemCount = 1; for (int i = 0; i < arguments.Length; i++) { itemCount *= arguments[i].asInteger; } AArray range = GenerateRange(0, itemCount); return Function.Dyadic.NonScalar.Reshape.Execute(range, arguments); }
public static AType Execute(IDyadicScalarFunction func, AType right, AType left) { if (left.IsArray && right.IsArray) { if (left.Length == right.Length) { AArray l = (AArray)left; AArray r = (AArray)right; AArray result = new AArray(ATypes.AArray); for (int i = 0; i < l.Length; i++) { result.Add(Execute(func, r[i], l[i])); } return result; } else { throw new Error(ErrorType.Length, "Length error!"); } } else if (left.IsArray && right.IsPrimitive) { AArray l = (AArray)left; AArray result = new AArray(ATypes.AArray); for (int i = 0; i < l.Length; i++) { result.Add(Execute(func, right, l[i])); } return result; } else if (left.IsPrimitive && right.IsArray) { AArray r = (AArray)right; AArray result = new AArray(ATypes.AArray); for (int i = 0; i < r.Length; i++) { result.Add(Execute(func, r[i], left)); } return result; } else { return func.Execute(right,left); } }
public static AType ANull(ATypes type = ATypes.ANull) { return(AArray.Create(type)); }