Esempio n. 1
0
        public DiagBox(int rank, int size, T diagElem)
        {
            Contract.Requires <ArgumentOutOfRangeException>(rank >= 0, "rank is negative");
            Contract.Requires <ArgumentOutOfRangeException>(size >= 0, "size is negative");

            _rank     = rank;
            _size     = size;
            _diagElem = diagElem;
            _zeroElem = TypeTraits.GetInstanceTraits(diagElem).GetZero();
        }
Esempio n. 2
0
        public static Matrix <T> Diag <T>(int size, T element)
        {
            T   zero   = default(T);
            var traits = TypeTraits.GetInstanceTraits <T>(element);

            if (traits != null)
            {
                zero = traits.GetZero();
            }
            return(new DiagMatrix <T>(size, element, zero));
        }
Esempio n. 3
0
            private ITypeInstanceTraits <T> TryGetElementTraits()
            {
                if (IsEmpty)
                {
                    return(null);
                }

                var element = _matrix[0, 0];

                return(TypeTraits.GetInstanceTraits(element));
            }
Esempio n. 4
0
 private ITypeInstanceTraits <T> TryGetInstanceTraits()
 {
     if (_box.Sizes.All(s => s > 0))
     {
         int[] indices = new int[_box.Rank];
         return(TypeTraits.GetInstanceTraits(_box.ElementAt(indices)));
     }
     else
     {
         return(null);
     }
 }
Esempio n. 5
0
 public Vector <T> GetZero()
 {
     if (IsEmpty)
     {
         return(Vector.Zero <T>(_vector.Size));
     }
     else
     {
         var traits = TypeTraits.GetInstanceTraits(_vector[0]);
         if (traits == null)
         {
             return(Vector.Zero <T>(_vector.Size));
         }
         else
         {
             return(Vector.Zero(_vector.Size, traits));
         }
     }
 }