Пример #1
0
  @Test
  public void testMisc() {
    ArrayFieldVector<Fraction> v1 = new ArrayFieldVector<Fraction>(vec1);
    ArrayFieldVector<Fraction> v4 = new ArrayFieldVector<Fraction>(vec4);
    FieldVector<Fraction> v4_2 = new ArrayFieldVector<Fraction>(vec4);

    String out1 = v1.toString();
    Assert.assertTrue("some output ", out1.length() != 0);
    /*
     Fraction[] dout1 = v1.copyOut();
    Assert.assertEquals(3, dout1.length);
    assertNotSame("testData not same object ", v1.getDataRef(), dout1);
     */
    try {
      v1.checkVectorDimensions(2);
      Assert.fail("MathIllegalArgumentException expected");
    } catch (MathIllegalArgumentException ex) {
      // expected behavior
    }

    try {
      v1.checkVectorDimensions(v4);
      Assert.fail("MathIllegalArgumentException expected");
    } catch (MathIllegalArgumentException ex) {
      // expected behavior
    }

    try {
      v1.checkVectorDimensions(v4_2);
      Assert.fail("MathIllegalArgumentException expected");
    } catch (MathIllegalArgumentException ex) {
      // expected behavior
    }
  }
Пример #2
0
  @Test
  public void testOuterProduct() {
    final ArrayFieldVector<Fraction> u =
        new ArrayFieldVector<Fraction>(
            FractionField.getInstance(),
            new Fraction[] {new Fraction(1), new Fraction(2), new Fraction(-3)});
    final ArrayFieldVector<Fraction> v =
        new ArrayFieldVector<Fraction>(
            FractionField.getInstance(), new Fraction[] {new Fraction(4), new Fraction(-2)});

    final FieldMatrix<Fraction> uv = u.outerProduct(v);

    final double tol = Math.ulp(1d);
    Assert.assertEquals(new Fraction(4).doubleValue(), uv.getEntry(0, 0).doubleValue(), tol);
    Assert.assertEquals(new Fraction(-2).doubleValue(), uv.getEntry(0, 1).doubleValue(), tol);
    Assert.assertEquals(new Fraction(8).doubleValue(), uv.getEntry(1, 0).doubleValue(), tol);
    Assert.assertEquals(new Fraction(-4).doubleValue(), uv.getEntry(1, 1).doubleValue(), tol);
    Assert.assertEquals(new Fraction(-12).doubleValue(), uv.getEntry(2, 0).doubleValue(), tol);
    Assert.assertEquals(new Fraction(6).doubleValue(), uv.getEntry(2, 1).doubleValue(), tol);
  }
Пример #3
0
  @Test
  public void testBasicFunctions() {
    ArrayFieldVector<Fraction> v1 = new ArrayFieldVector<Fraction>(vec1);
    ArrayFieldVector<Fraction> v2 = new ArrayFieldVector<Fraction>(vec2);
    new ArrayFieldVector<Fraction>(vec_null);

    FieldVectorTestImpl<Fraction> v2_t = new FieldVectorTestImpl<Fraction>(vec2);

    // octave =  v1 + v2
    ArrayFieldVector<Fraction> v_add = v1.add(v2);
    Fraction[] result_add = {new Fraction(5), new Fraction(7), new Fraction(9)};
    checkArray("compare vect", v_add.getData(), result_add);

    FieldVectorTestImpl<Fraction> vt2 = new FieldVectorTestImpl<Fraction>(vec2);
    FieldVector<Fraction> v_add_i = v1.add(vt2);
    Fraction[] result_add_i = {new Fraction(5), new Fraction(7), new Fraction(9)};
    checkArray("compare vect", v_add_i.getData(), result_add_i);

    // octave =  v1 - v2
    ArrayFieldVector<Fraction> v_subtract = v1.subtract(v2);
    Fraction[] result_subtract = {new Fraction(-3), new Fraction(-3), new Fraction(-3)};
    checkArray("compare vect", v_subtract.getData(), result_subtract);

    FieldVector<Fraction> v_subtract_i = v1.subtract(vt2);
    Fraction[] result_subtract_i = {new Fraction(-3), new Fraction(-3), new Fraction(-3)};
    checkArray("compare vect", v_subtract_i.getData(), result_subtract_i);

    // octave v1 .* v2
    ArrayFieldVector<Fraction> v_ebeMultiply = v1.ebeMultiply(v2);
    Fraction[] result_ebeMultiply = {new Fraction(4), new Fraction(10), new Fraction(18)};
    checkArray("compare vect", v_ebeMultiply.getData(), result_ebeMultiply);

    FieldVector<Fraction> v_ebeMultiply_2 = v1.ebeMultiply(v2_t);
    Fraction[] result_ebeMultiply_2 = {new Fraction(4), new Fraction(10), new Fraction(18)};
    checkArray("compare vect", v_ebeMultiply_2.getData(), result_ebeMultiply_2);

    // octave v1 ./ v2
    ArrayFieldVector<Fraction> v_ebeDivide = v1.ebeDivide(v2);
    Fraction[] result_ebeDivide = {new Fraction(1, 4), new Fraction(2, 5), new Fraction(1, 2)};
    checkArray("compare vect", v_ebeDivide.getData(), result_ebeDivide);

    FieldVector<Fraction> v_ebeDivide_2 = v1.ebeDivide(v2_t);
    Fraction[] result_ebeDivide_2 = {new Fraction(1, 4), new Fraction(2, 5), new Fraction(1, 2)};
    checkArray("compare vect", v_ebeDivide_2.getData(), result_ebeDivide_2);

    // octave  dot(v1,v2)
    Fraction dot = v1.dotProduct(v2);
    Assert.assertEquals("compare val ", new Fraction(32), dot);

    // octave  dot(v1,v2_t)
    Fraction dot_2 = v1.dotProduct(v2_t);
    Assert.assertEquals("compare val ", new Fraction(32), dot_2);

    FieldMatrix<Fraction> m_outerProduct = v1.outerProduct(v2);
    Assert.assertEquals("compare val ", new Fraction(4), m_outerProduct.getEntry(0, 0));

    FieldMatrix<Fraction> m_outerProduct_2 = v1.outerProduct(v2_t);
    Assert.assertEquals("compare val ", new Fraction(4), m_outerProduct_2.getEntry(0, 0));

    ArrayFieldVector<Fraction> v_projection = v1.projection(v2);
    Fraction[] result_projection = {
      new Fraction(128, 77), new Fraction(160, 77), new Fraction(192, 77)
    };
    checkArray("compare vect", v_projection.getData(), result_projection);

    FieldVector<Fraction> v_projection_2 = v1.projection(v2_t);
    Fraction[] result_projection_2 = {
      new Fraction(128, 77), new Fraction(160, 77), new Fraction(192, 77)
    };
    checkArray("compare vect", v_projection_2.getData(), result_projection_2);
  }
Пример #4
0
  @Test
  public void testMapFunctions() {
    ArrayFieldVector<Fraction> v1 = new ArrayFieldVector<Fraction>(vec1);

    // octave =  v1 .+ 2.0
    FieldVector<Fraction> v_mapAdd = v1.mapAdd(new Fraction(2));
    Fraction[] result_mapAdd = {new Fraction(3), new Fraction(4), new Fraction(5)};
    checkArray("compare vectors", result_mapAdd, v_mapAdd.getData());

    // octave =  v1 .+ 2.0
    FieldVector<Fraction> v_mapAddToSelf = v1.copy();
    v_mapAddToSelf.mapAddToSelf(new Fraction(2));
    Fraction[] result_mapAddToSelf = {new Fraction(3), new Fraction(4), new Fraction(5)};
    checkArray("compare vectors", result_mapAddToSelf, v_mapAddToSelf.getData());

    // octave =  v1 .- 2.0
    FieldVector<Fraction> v_mapSubtract = v1.mapSubtract(new Fraction(2));
    Fraction[] result_mapSubtract = {new Fraction(-1), new Fraction(0), new Fraction(1)};
    checkArray("compare vectors", result_mapSubtract, v_mapSubtract.getData());

    // octave =  v1 .- 2.0
    FieldVector<Fraction> v_mapSubtractToSelf = v1.copy();
    v_mapSubtractToSelf.mapSubtractToSelf(new Fraction(2));
    Fraction[] result_mapSubtractToSelf = {new Fraction(-1), new Fraction(0), new Fraction(1)};
    checkArray("compare vectors", result_mapSubtractToSelf, v_mapSubtractToSelf.getData());

    // octave =  v1 .* 2.0
    FieldVector<Fraction> v_mapMultiply = v1.mapMultiply(new Fraction(2));
    Fraction[] result_mapMultiply = {new Fraction(2), new Fraction(4), new Fraction(6)};
    checkArray("compare vectors", result_mapMultiply, v_mapMultiply.getData());

    // octave =  v1 .* 2.0
    FieldVector<Fraction> v_mapMultiplyToSelf = v1.copy();
    v_mapMultiplyToSelf.mapMultiplyToSelf(new Fraction(2));
    Fraction[] result_mapMultiplyToSelf = {new Fraction(2), new Fraction(4), new Fraction(6)};
    checkArray("compare vectors", result_mapMultiplyToSelf, v_mapMultiplyToSelf.getData());

    // octave =  v1 ./ 2.0
    FieldVector<Fraction> v_mapDivide = v1.mapDivide(new Fraction(2));
    Fraction[] result_mapDivide = {new Fraction(1, 2), new Fraction(1), new Fraction(3, 2)};
    checkArray("compare vectors", result_mapDivide, v_mapDivide.getData());

    // octave =  v1 ./ 2.0
    FieldVector<Fraction> v_mapDivideToSelf = v1.copy();
    v_mapDivideToSelf.mapDivideToSelf(new Fraction(2));
    Fraction[] result_mapDivideToSelf = {new Fraction(1, 2), new Fraction(1), new Fraction(3, 2)};
    checkArray("compare vectors", result_mapDivideToSelf, v_mapDivideToSelf.getData());

    // octave =  v1 .^-1
    FieldVector<Fraction> v_mapInv = v1.mapInv();
    Fraction[] result_mapInv = {new Fraction(1), new Fraction(1, 2), new Fraction(1, 3)};
    checkArray("compare vectors", result_mapInv, v_mapInv.getData());

    // octave =  v1 .^-1
    FieldVector<Fraction> v_mapInvToSelf = v1.copy();
    v_mapInvToSelf.mapInvToSelf();
    Fraction[] result_mapInvToSelf = {new Fraction(1), new Fraction(1, 2), new Fraction(1, 3)};
    checkArray("compare vectors", result_mapInvToSelf, v_mapInvToSelf.getData());
  }
Пример #5
0
  @Test
  public void testDataInOut() {

    ArrayFieldVector<Fraction> v1 = new ArrayFieldVector<Fraction>(vec1);
    ArrayFieldVector<Fraction> v2 = new ArrayFieldVector<Fraction>(vec2);
    ArrayFieldVector<Fraction> v4 = new ArrayFieldVector<Fraction>(vec4);
    FieldVectorTestImpl<Fraction> v2_t = new FieldVectorTestImpl<Fraction>(vec2);

    FieldVector<Fraction> v_append_1 = v1.append(v2);
    Assert.assertEquals(6, v_append_1.getDimension());
    Assert.assertEquals(new Fraction(4), v_append_1.getEntry(3));

    FieldVector<Fraction> v_append_2 = v1.append(new Fraction(2));
    Assert.assertEquals(4, v_append_2.getDimension());
    Assert.assertEquals(new Fraction(2), v_append_2.getEntry(3));

    FieldVector<Fraction> v_append_4 = v1.append(v2_t);
    Assert.assertEquals(6, v_append_4.getDimension());
    Assert.assertEquals(new Fraction(4), v_append_4.getEntry(3));

    FieldVector<Fraction> v_copy = v1.copy();
    Assert.assertEquals(3, v_copy.getDimension());
    Assert.assertNotSame("testData not same object ", v1.getDataRef(), v_copy.getData());

    Fraction[] a_frac = v1.toArray();
    Assert.assertEquals(3, a_frac.length);
    Assert.assertNotSame("testData not same object ", v1.getDataRef(), a_frac);

    //      ArrayFieldVector<Fraction> vout4 = (ArrayFieldVector<Fraction>) v1.clone();
    //      Assert.assertEquals(3, vout4.getDimension());
    //      Assert.assertEquals(v1.getDataRef(), vout4.getDataRef());

    FieldVector<Fraction> vout5 = v4.getSubVector(3, 3);
    Assert.assertEquals(3, vout5.getDimension());
    Assert.assertEquals(new Fraction(5), vout5.getEntry(1));
    try {
      v4.getSubVector(3, 7);
      Assert.fail("OutOfRangeException expected");
    } catch (OutOfRangeException ex) {
      // expected behavior
    }

    ArrayFieldVector<Fraction> v_set1 = (ArrayFieldVector<Fraction>) v1.copy();
    v_set1.setEntry(1, new Fraction(11));
    Assert.assertEquals(new Fraction(11), v_set1.getEntry(1));
    try {
      v_set1.setEntry(3, new Fraction(11));
      Assert.fail("OutOfRangeException expected");
    } catch (OutOfRangeException ex) {
      // expected behavior
    }

    ArrayFieldVector<Fraction> v_set2 = (ArrayFieldVector<Fraction>) v4.copy();
    v_set2.set(3, v1);
    Assert.assertEquals(new Fraction(1), v_set2.getEntry(3));
    Assert.assertEquals(new Fraction(7), v_set2.getEntry(6));
    try {
      v_set2.set(7, v1);
      Assert.fail("OutOfRangeException expected");
    } catch (OutOfRangeException ex) {
      // expected behavior
    }

    ArrayFieldVector<Fraction> v_set3 = (ArrayFieldVector<Fraction>) v1.copy();
    v_set3.set(new Fraction(13));
    Assert.assertEquals(new Fraction(13), v_set3.getEntry(2));

    try {
      v_set3.getEntry(23);
      Assert.fail("ArrayIndexOutOfBoundsException expected");
    } catch (ArrayIndexOutOfBoundsException ex) {
      // expected behavior
    }

    ArrayFieldVector<Fraction> v_set4 = (ArrayFieldVector<Fraction>) v4.copy();
    v_set4.setSubVector(3, v2_t);
    Assert.assertEquals(new Fraction(4), v_set4.getEntry(3));
    Assert.assertEquals(new Fraction(7), v_set4.getEntry(6));
    try {
      v_set4.setSubVector(7, v2_t);
      Assert.fail("OutOfRangeException expected");
    } catch (OutOfRangeException ex) {
      // expected behavior
    }

    ArrayFieldVector<Fraction> vout10 = (ArrayFieldVector<Fraction>) v1.copy();
    ArrayFieldVector<Fraction> vout10_2 = (ArrayFieldVector<Fraction>) v1.copy();
    Assert.assertEquals(vout10, vout10_2);
    vout10_2.setEntry(0, new Fraction(11, 10));
    Assert.assertNotSame(vout10, vout10_2);
  }
Пример #6
0
  @Test
  public void testConstructors() {

    ArrayFieldVector<Fraction> v0 = new ArrayFieldVector<Fraction>(FractionField.getInstance());
    Assert.assertEquals(0, v0.getDimension());

    ArrayFieldVector<Fraction> v1 = new ArrayFieldVector<Fraction>(FractionField.getInstance(), 7);
    Assert.assertEquals(7, v1.getDimension());
    Assert.assertEquals(new Fraction(0), v1.getEntry(6));

    ArrayFieldVector<Fraction> v2 = new ArrayFieldVector<Fraction>(5, new Fraction(123, 100));
    Assert.assertEquals(5, v2.getDimension());
    Assert.assertEquals(new Fraction(123, 100), v2.getEntry(4));

    ArrayFieldVector<Fraction> v3 =
        new ArrayFieldVector<Fraction>(FractionField.getInstance(), vec1);
    Assert.assertEquals(3, v3.getDimension());
    Assert.assertEquals(new Fraction(2), v3.getEntry(1));

    ArrayFieldVector<Fraction> v4 =
        new ArrayFieldVector<Fraction>(FractionField.getInstance(), vec4, 3, 2);
    Assert.assertEquals(2, v4.getDimension());
    Assert.assertEquals(new Fraction(4), v4.getEntry(0));
    try {
      new ArrayFieldVector<Fraction>(vec4, 8, 3);
      Assert.fail("MathIllegalArgumentException expected");
    } catch (MathIllegalArgumentException ex) {
      // expected behavior
    }

    FieldVector<Fraction> v5_i = new ArrayFieldVector<Fraction>(dvec1);
    Assert.assertEquals(9, v5_i.getDimension());
    Assert.assertEquals(new Fraction(9), v5_i.getEntry(8));

    ArrayFieldVector<Fraction> v5 = new ArrayFieldVector<Fraction>(dvec1);
    Assert.assertEquals(9, v5.getDimension());
    Assert.assertEquals(new Fraction(9), v5.getEntry(8));

    ArrayFieldVector<Fraction> v6 = new ArrayFieldVector<Fraction>(dvec1, 3, 2);
    Assert.assertEquals(2, v6.getDimension());
    Assert.assertEquals(new Fraction(4), v6.getEntry(0));
    try {
      new ArrayFieldVector<Fraction>(dvec1, 8, 3);
      Assert.fail("MathIllegalArgumentException expected");
    } catch (MathIllegalArgumentException ex) {
      // expected behavior
    }

    ArrayFieldVector<Fraction> v7 = new ArrayFieldVector<Fraction>(v1);
    Assert.assertEquals(7, v7.getDimension());
    Assert.assertEquals(new Fraction(0), v7.getEntry(6));

    FieldVectorTestImpl<Fraction> v7_i = new FieldVectorTestImpl<Fraction>(vec1);

    ArrayFieldVector<Fraction> v7_2 = new ArrayFieldVector<Fraction>(v7_i);
    Assert.assertEquals(3, v7_2.getDimension());
    Assert.assertEquals(new Fraction(2), v7_2.getEntry(1));

    ArrayFieldVector<Fraction> v8 = new ArrayFieldVector<Fraction>(v1, true);
    Assert.assertEquals(7, v8.getDimension());
    Assert.assertEquals(new Fraction(0), v8.getEntry(6));
    Assert.assertNotSame("testData not same object ", v1.getDataRef(), v8.getDataRef());

    ArrayFieldVector<Fraction> v8_2 = new ArrayFieldVector<Fraction>(v1, false);
    Assert.assertEquals(7, v8_2.getDimension());
    Assert.assertEquals(new Fraction(0), v8_2.getEntry(6));
    Assert.assertArrayEquals(v1.getDataRef(), v8_2.getDataRef());

    ArrayFieldVector<Fraction> v9 = new ArrayFieldVector<Fraction>(v1, v3);
    Assert.assertEquals(10, v9.getDimension());
    Assert.assertEquals(new Fraction(1), v9.getEntry(7));
  }