public void IList()
 {
   DoubleVector a = new DoubleVector(new double[4]{0,1,2,3});
   
   Assert.AreEqual(a.IsFixedSize,false);
   Assert.AreEqual(a.IsReadOnly,false);
   
   a.Add(4.0);
   Assert.AreEqual(a.Length,5);
   Assert.AreEqual(a[4],4);
   Assert.AreEqual(a.Contains(4.0),true);
   
   a.Insert(1,5.0);
   Assert.AreEqual(a.Length,6);
   Assert.AreEqual(a.Contains(5.0),true);
   Assert.AreEqual(a[0],0);
   Assert.AreEqual(a[1],5);
   Assert.AreEqual(a[2],1);
   Assert.AreEqual(a[3],2);
   Assert.AreEqual(a[4],3);
   Assert.AreEqual(a[5],4);
   
   a.Remove(5.0);
   Assert.AreEqual(a.Length,5);
   Assert.AreEqual(a.Contains(5.0),false);
   Assert.AreEqual(a[0],0);
   Assert.AreEqual(a[1],1);
   Assert.AreEqual(a[2],2);
   Assert.AreEqual(a[3],3);
   Assert.AreEqual(a[4],4);
   
   a.RemoveAt(2);
   Assert.AreEqual(a.Length,4);
   Assert.AreEqual(a.Contains(2.0),false);
   Assert.AreEqual(a[0],0);
   Assert.AreEqual(a[1],1);
   Assert.AreEqual(a[2],3);
   Assert.AreEqual(a[3],4);
 }
 public void Add()
 {
   DoubleVector a = new DoubleVector(new double[4]{0,1,2,3});
   DoubleVector b = new DoubleVector(new double[4]{4,5,6,7});
   DoubleVector c = new DoubleVector(a.Length);
   DoubleVector d = new DoubleVector(b.Length);
   
   c = a+b;
   d = DoubleVector.Add(a,b);
   
   Assert.AreEqual(c[0],a[0]+b[0]);
   Assert.AreEqual(c[1],a[1]+b[1]);
   Assert.AreEqual(c[2],a[2]+b[2]);
   Assert.AreEqual(c[3],a[3]+b[3]);
   
   Assert.AreEqual(d[0],c[0]);
   Assert.AreEqual(d[1],c[1]);
   Assert.AreEqual(d[2],c[2]);
   Assert.AreEqual(d[3],c[3]);
   
   a.Add(b);
   
   Assert.AreEqual(c[0],a[0]);
   Assert.AreEqual(c[1],a[1]);
   Assert.AreEqual(c[2],a[2]);
   Assert.AreEqual(c[3],a[3]);
 }