/// <summary>
 /// Construct a vector from another vector.
 /// </summary>
 /// <param name="v">Vector to copy.</param>
 /// <param name="deep">If <c>true</c> perform a deep copy, otherwise perform
 /// a shallow copy</param>
 /// <exception cref="NullArgumentException"> if <c>v</c> is <c>null</c>.</exception>
 public ArrayFieldVector(ArrayFieldVector <T> v, Boolean deep)
 {
     MathUtils.checkNotNull(v);
     field = v.getField();
     data  = deep ? (T[])v.data.Clone() : v.data;
 }
 /// <summary>
 /// Construct a vector from another vector, using a deep copy.
 /// </summary>
 /// <param name="v">Vector to copy.</param>
 /// <exception cref="NullArgumentException"> if <c>v</c> is <c>null</c>.</exception>
 public ArrayFieldVector(ArrayFieldVector <T> v)
 {
     MathUtils.checkNotNull(v);
     field = v.getField();
     data  = (T[])v.data.Clone();
 }