예제 #1
0
        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;
        }
예제 #2
0
        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);
     }
 }
예제 #4
0
 public static AType ANull(ATypes type = ATypes.ANull)
 {
     return(AArray.Create(type));
 }