public Integer getMeasureOf(Rational r) {
    TimeSignature ts = getObjectAt(r);
    Rational lastTSChange = _data.lowerKey(r);

    // Calculate the measures since the last time signature change
    Integer measures =
        Double.valueOf(Math.ceil((r.minus(lastTSChange)).times(new Rational(1, ts.TOP)).toDouble()))
            .intValue();

    // Go backwards through underlying data to count all measures defined in the piece (ideally
    // there are none before 0?)
    for (Map.Entry<Rational, TimeSignature> e :
        _data.headMap(lastTSChange, false).descendingMap().entrySet()) {
      measures =
          measures
              + Double.valueOf(
                      Math.ceil(
                          (lastTSChange.minus(e.getKey()))
                              .times(new Rational(1, e.getValue().TOP))
                              .toDouble()))
                  .intValue();
      lastTSChange = e.getKey();
    }

    return measures;
  }
  public void subtract(Rational r1, Rational r2) {

    int s = (r1.getNum() * r2.getDen()) - (r2.getNum() * r1.getDen());
    int s2 = r1.getDen() * r2.getDen();
    num = s;
    den = s2;
  }
  /** Glavna metoda */
  public static void main(String[] args) {

    // Provjeri argumente
    if (args.length != 3) {
      System.out.println("Koristite: operand1 operator operand2");
      System.exit(0);
    }

    String operand1 = args[0]; // Prvi operand
    String operator = args[1]; // Operator
    String operand2 = args[2]; // Drugi operand

    // Prvi broj
    int numerator1 = 0;
    int denominator1 = 0;
    // Drugi broj
    int numerator2 = 0;
    int denominator2 = 0;
    // Pretvori argumente u brojeve
    try { // Prvi broj
      numerator1 = Integer.parseInt(operand1.split("/")[0]);
      denominator1 = Integer.parseInt(operand1.split("/")[1]);
      // Drugi broj
      numerator2 = Integer.parseInt(operand2.split("/")[0]);
      denominator2 = Integer.parseInt(operand2.split("/")[1]);
    } catch (NumberFormatException e) {
      System.out.println("Greska u argumentima!");
      System.exit(0);
    }

    // Kreiraj objekte
    Rational r1 = new Rational(numerator1, denominator1);
    Rational r2 = new Rational(numerator2, denominator2);

    // Kreiraj objekat za rezultat
    Rational rezultat = new Rational();

    // Izracunaj rezultat
    switch (operator) {
      case "+":
        rezultat = r1.add(r2);
        break;
      case "-":
        rezultat = r1.subtract(r2);
        break;
      case ".":
        rezultat = r1.multiply(r2);
        break;
      case "/":
        rezultat = r1.divide(r2);
        break;
      default:
        System.out.println("Neispravan unos!");
        System.exit(0);
    }

    // Ispisi rezultat
    System.out.println(operand1 + " " + operator + " " + operand2 + " = " + rezultat);
  }
Exemple #4
0
 public static void main(String[] args) {
   Rational half = new Rational(1, 2);
   try {
     System.out.println("Root of half is " + half.root());
   } catch (IllegalArgumentToSquareRootException e) {
     e.printStackTrace();
   }
 }
  public int compareTo(Object r) {
    Rational t = (Rational) r;
    this.reduce();
    t.reduce();

    if (this.n * t.d > t.n * this.d) return 1;
    else if (this.n * t.d == t.n * this.d) return 0;
    else return -1;
  }
 @Override
 // Comparison between the 2 objects
 // Cross multiplies the rationals and checks the numerator and denominator values
 public int compare(Rational o1, Rational o2) {
   int lhs = o1.getNumerator() * o2.getDenominator();
   int rhs = o1.getDenominator() * o2.getNumerator();
   if (lhs < rhs) return -1; // rhs is greater than lhs --> r is less than current Rational
   else if (lhs > rhs) return 1; // lhs is greater than rhs --> r is greater than current Rational
   else return 0; // lhs and rhs are both equal --> Rationals are equal
 }
Exemple #7
0
  // bin search based square root computation,
  // works for rationals in the range [0,2147483647]
  public Rational root() throws IllegalArgumentToSquareRootException {

    Rational low = new Rational(0, 1);
    // Max Int value is 2147483647, square root is 46341
    // Rational high = new Rational(46341,1);
    Rational high = new Rational(46340, 1);

    if (this.isLessThan(low) || !this.isLessThan(high)) {
      throw new IllegalArgumentToSquareRootException(this);
    }
    System.out.println("46341* 46341 = " + (46341 * 46341));
    System.out.println("46340* 46340 = " + (46340 * 46340));

    Rational half = new Rational(1, 2);
    Rational midpoint = (low.plus(high)).times(half);
    Rational tmp = null;
    while (!high.minus(low).abs().isLessThan(TOLERANCE)) {
      System.out.println("low high: " + low + " " + high);
      System.out.println("square of midpoint is: " + midpoint.times(midpoint));
      if (midpoint.times(midpoint).isLessThan(this)) {
        tmp = new Rational(midpoint);
        midpoint = high.plus(midpoint).times(half);
        low = tmp;
      } else {
        tmp = new Rational(midpoint);
        midpoint = low.plus(midpoint).times(half);
        high = tmp;
      }
    }
    return midpoint;
  }
 static Rational operate(Rational op1, Rational op2, int operation) {
   if (operation == 0) {
     return Rational.add(op1, op2);
   } else if (operation == 1) {
     return Rational.subtract(op1, op2);
   } else if (operation == 2) {
     return Rational.multiply(op1, op2);
   } else {
     return Rational.divide(op1, op2);
   }
 }
Exemple #9
0
 public static void main(String[] args) {
   Rational d, e, f;
   d = new Rational(1, 2);
   e = new Rational(2, 3);
   f = new Rational(2, 4);
   // System.out.println(d.getA());
   System.out.println(d.ratNum());
   System.out.println(d.equals(e));
   System.out.println(d.equals(f));
   System.out.println((d.mult(f)).ratNum());
   System.out.println(d.compareTo(e));
 }
Exemple #10
0
 public Rational abs() {
   Rational result = new Rational(1, 1);
   if ((this.numerator() >= 0 && this.denominator() >= 0)
       || (this.numerator() < 0 && this.denominator() < 0)) {
     result._numerator = this.numerator();
     result._denominator = this.denominator();
   } else {
     result._numerator = -this.numerator();
     result._denominator = this.denominator();
   }
   return result;
 }
Exemple #11
0
 public boolean equals(Object obj) {
   if (this == obj) { // if same alias
     return true;
   }
   if (obj instanceof Rational) {
     Rational rightSide = (Rational) obj; // if it is a Rational
     this.reduce(); // both reduce
     rightSide.reduce();
     return numerator == rightSide.numerator
         && // returns if both numerator and denominator are the same
         denominator == rightSide.denominator;
   }
   return false;
 }
Exemple #12
0
  public Rational plus(Rational b) {
    Rational a = this;

    int x = gcd(a._numerator, b._numerator);
    int y = gcd(a._denominator, b._denominator);

    Rational z =
        new Rational(
            (a._numerator / x) * (b._denominator / y) + (b._numerator / x) * (a._denominator / y),
            lcm(a._denominator, b._denominator));
    z._numerator *= x;
    System.out.print("Sum" + z);
    return z;
  }
Exemple #13
0
  public static void main(String[] args) {
    // creates new rationals from Rational.java
    Rational a = new Rational(8, 16);
    Rational b = new Rational(2, 3);

    // run method print result
    System.out.printf(
        "It is " + a.lessThanRat(b) + " to say %d/%d is less than %d/%d.\n", 8, 16, 2, 3);

    // To show false case
    Rational c = new Rational(2, 3);
    Rational d = new Rational(8, 16);

    System.out.printf(
        "It is " + c.lessThanRat(d) + " to say %d/%d is less than %d/%d.\n", 2, 3, 8, 16);
  }
  /** @param args the command line arguments */
  public static void main(String[] args) {
    int x = args.length;
    System.out.println("Hello");
    // without the new there would not be an object created just a reference to one
    Rational r = new Rational();
    Rational r2 = new Rational(1, 2);
    r.display();

    String[] names = new String[100];
    for (int i = 0; i < 100; i++) {
      names[i] = new String();
    }
    r2.display();

    r2.equals(r);
  }
  /**
   * Return the next downbeat (beat 1) after the given point
   *
   * @param r
   * @return
   */
  public Rational nextDownBeat(Rational r) {
    Rational meterEstablishedAt = _data.floorKey(r);
    TimeSignature ts = _data.get(meterEstablishedAt);
    Rational result = meterEstablishedAt;
    Rational inc = Rational.get(ts.TOP);
    while (result.compareTo(r) <= 0) {
      result = result.plus(inc);
    }

    // Look ahead - if a new Time Signature overrode our
    // old time signature before it completed a measure
    // we need to compensate for that.
    Rational higher = _data.higherKey(r);

    if (higher != null && result.compareTo(higher) > 0) result = higher;

    return result;
  }
Exemple #16
0
 public static void main(String args[]) {
   Rational zero = new Rational(), half = new Rational(1, 2), halfCopy = new Rational(half);
   zero.setNumerator(1);
   zero.setDenominator(3);
   System.out.println("zero's numerator: " + zero.getNumerator());
   System.out.println("zero's denominator: " + zero.getDenominator());
   halfCopy.addWith(half);
   System.out.println("halfCopy:" + halfCopy);
 }
Exemple #17
0
  /**
   * Returns a property for a tag with a RATIONAL value. If rawOutput is true, returns a property
   * with type RATIONAL. Otherwise, returns a property with type STRING, and the text representation
   * of the Rational value as a floating-point ratio.
   */
  protected Property addRationalProperty(String name, Rational r, boolean rawOutput) {
    Property prop = null;
    if (!rawOutput) {
      prop = new Property(name, PropertyType.STRING, _format.format(r.toDouble()));
    }
    if (prop == null) {
      prop = new Property(name, PropertyType.RATIONAL, r);
    }

    return prop;
  }
  public Rational getBeatOf(Rational r) {
    TimeSignature ts = getObjectAt(r);
    if (ts == null) {
      return null;
    }
    Rational meterEstablishedAt = _data.floorKey(r);
    if (meterEstablishedAt == null) return null;

    Rational newResult = r.minus(meterEstablishedAt).mod(new Rational(ts.TOP)).plus(Rational.ONE);
    return newResult;

    // Rational n = r.minus(meterEstablishedAt);
    // Integer i = Double.valueOf( n.toDouble() ).intValue() % ts.TOP;
    // Rational result = n.minus( new Rational(ts.TOP, 1).times(new Rational(i, 1)) );
    // return result;
  }
 public void divide() {
   operand_0 = operand_1.div(operand_0);
   operand_1 = new Rational();
 }
 public void subtract() {
   operand_0 = operand_1.minus(operand_0);
   operand_1 = new Rational();
 }
 public void multiply() {
   operand_0 = operand_1.mul(operand_0);
   operand_1 = new Rational();
 }
Exemple #22
0
 // to divide, multiply by a flipped version
 public Rational divides(Rational b) {
   Rational a = this;
   Rational c = new Rational(b._denominator, b._numerator);
   return a.times(c);
 }
 public void add() {
   operand_0 = operand_1.plus(operand_0);
   operand_1 = new Rational();
 }
Exemple #24
0
  public static void main(String[] args) {
    Rational r1 = new Rational(1, 5); // rational number 1/5
    Rational r2 = new Rational(1, 2); // rational number 1/2

    r1.multiply(r2); // Multiplies r1 by r2, changes r1 to 1/10 (0.1)
    System.out.println(r1);
    System.out.println(r1.denominator); // 10
    System.out.println(r1.numerator); // 1

    System.out.println();
    r2.divide(r1); // Divides r2 by r1, changes r2 to 5/1 (5.0)
    System.out.println(r2);
    System.out.println(r2.denominator); // 2
    System.out.println(r2.numerator); // 10

    System.out.println();
    System.out.println(r2.gcd()); // 2

    System.out.println();
    r2.reduce();
    System.out.println(r2.denominator); // 1
    System.out.println(r2.numerator); // 5

    System.out.println();
    System.out.println(r1.compareTo(r2)); // -1
    System.out.println(r2.compareTo(r1)); // 1

    System.out.println();
    System.out.println(gcd(32, 12)); // 4

    System.out.println();
    r1.add(r2);
    System.out.println(r1); // 5.1

    System.out.println();
    r2.subtract(r1);
    System.out.println(r2); // -0.1

    System.out.println();
    System.out.println(r1.compareTo(r2)); // 1
    System.out.println(r2.compareTo(r1)); // -1

    Rational r3 = new Rational(3, 4);
    Rational r4 = new Rational(4, 5);

    System.out.println();
    System.out.println(r3.compareTo(r4)); // -1
    System.out.println(r4.compareTo(r3)); // 1

    Rational r5 = new Rational(33333333, 100000000);
    Rational r6 = new Rational(1, 3);

    System.out.println();
    System.out.println(r5); // 0.33333333
    System.out.println(r6); // 1/3
    System.out.println(r5.compareTo(r6)); // 1
    System.out.println(r6.compareTo(r5)); // -1

    System.out.println("-------------");
    System.out.println("-- .equals --");
    System.out.println(r3.equals(r4)); // false
    Rational re0 = new Rational(0, 10);
    Rational re1 = new Rational(0, 3);
    System.out.println(re0.equals(re1)); // true
    System.out.println(re1.equals(re0)); // true
    Rational re2 = new Rational(2, 4);
    Rational re3 = new Rational(12, 24);
    Rational re4 = new Rational(-12, -24);
    System.out.println(re2.equals(re3)); // true
    System.out.println(re4.equals(re2)); // true
    Rational re5 = new Rational(3, 7);
    Rational re6 = new Rational(3, -7);
    Rational re7 = new Rational(-3, 7);
    System.out.println(re5.equals(re6)); // false
    System.out.println(re7.equals(re5)); // false
    System.out.println(re6.equals(re7)); // true
  }
Exemple #25
0
 // to subtract, just add a negated version
 public Rational minus(Rational b) {
   Rational a = this;
   Rational c = new Rational(b._numerator * -1, b._denominator);
   return a.plus(c);
 }
Exemple #26
0
 public IllegalArgumentToSquareRootException(Rational r) {
   super("Illegal argument to square root, should be in range [0,2147483647] got " + r.toString());
 }
 public static int gcd(int n, int d) {
   Rational r = new Rational(n, d);
   return r.gcd();
 }
Exemple #28
0
  protected static Rational average(Rational r1, Rational r2) {
    long d1 = r1.getDenominator();
    long d2 = r2.getDenominator();

    Rational f1 = new Rational(r1.getNumerator() * d2, r1.getDenominator() * d2);
    Rational f2 = new Rational(r2.getNumerator() * d1, r2.getDenominator() * d1);

    return new Rational((f1.getNumerator() + f2.getNumerator()) / 2, f1.getDenominator());
  }
  public static void main(String[] args) {
    Rational r = new Rational(2, 3); // Stores the rational number 2/3
    Rational s = new Rational(1, 2); // Stores the rational number 1/2
    Rational t = new Rational(4, 18); // Stores the rational number 4/18

    Rational v = new Rational(4, 8);
    Object a = 42;
    Object b = "hi";
    r.add(s); // Adds r to s, changes r to 7/6.  s remains 1/2
    t.reduce(); // Changes t to 2/9

    System.out.println(r + "\tshould be 7/6");
    System.out.println(s + "\tshould be 1/2");
    System.out.println(t + "\tshould be 2/9");

    System.out.println(r.compareTo(s) + "\tshould be 1");
    System.out.println(s.compareTo(r) + "\tshould be -1");
    System.out.println(s.compareTo(s) + "\t should be 0");
    System.out.println(s.compareTo(v) + "\t should be 0");

    System.out.println(s.equals(a) + "\tshould be false");
    System.out.println(s.equals(b) + "\tshould be false");
    System.out.println(s.equals(r) + "\tshould be false");
    System.out.println(s.equals(s) + "\tshould be true");
    System.out.println(s.equals(v) + "\tshould be true");
  }
Exemple #30
0
  public static void main(String[] args) {

    Rational r = new Rational();
    Rational s = new Rational(8, 18);
    Rational t = new Rational(4, 6);
    Rational v = new Rational(7, 21);
    Rational w = new Rational(7, 21);
    /*
    System.out.println("~~--------------------------------~~");

    System.out.println("Testing toString(): \n");
    System.out.println();
    System.out.println("Rational r:");
    System.out.println(r);
    System.out.println("Rational s:");
    System.out.println(s);
    System.out.println("Rational t:");
    System.out.println(t);
    System.out.println("Rational v:");
    System.out.println(v);

    System.out.println("~~--------------------------------~~");

    System.out.println("Testing multiply(): ");
    System.out.println();
    System.out.println("s * v");
    System.out.println();
    System.out.println("BEFORE:");
    System.out.println("Rational s:");
    System.out.println(s);
    System.out.println("Rational v:");
    System.out.println(v);
    s.multiply(v);
    System.out.println("AFTER:");
    System.out.println("Rational s:");
    System.out.println(s);
    System.out.println("Rational v:");
    System.out.println(v);

    System.out.println("~~--------------------------------~~");

    System.out.println("Testing divide(): ");
    System.out.println();
    System.out.println("v / s");
    System.out.println();
    System.out.println("BEFORE:");
    System.out.println("Rational s:");
    System.out.println(s);
    System.out.println("Rational v:");
    System.out.println(v);
    v.divide(s);
    System.out.println("AFTER:");
    System.out.println("Rational s:");
    System.out.println(s);
    System.out.println("Rational v:");
    System.out.println(v);

    System.out.println("~~--------------------------------~~");

    System.out.println("Testing add(): ");
    System.out.println();
    System.out.println("r + t");
    System.out.println();
    System.out.println("BEFORE:");
    System.out.println("Rational r:");
    System.out.println(r);
    System.out.println("Rational t:");
    System.out.println(t);
    r.add(t);
    System.out.println("AFTER:");
    System.out.println("Rational r:");
    System.out.println(r);
    System.out.println("Rational t:");
    System.out.println(t);

    System.out.println("~~--------------------------------~~");

    System.out.println("Testing subtract(): ");
    System.out.println();
    System.out.println("t - r");
    System.out.println();
    System.out.println("BEFORE:");
    System.out.println("Rational t:");
    System.out.println(t);
    System.out.println("Rational r:");
    System.out.println(r);
    t.subtract(r);
    System.out.println("AFTER:");
    System.out.println("Rational t:");
    System.out.println(t);
    System.out.println("Rational r:");
    System.out.println(r);
    */
    System.out.println("~~--------------------------------------------~~");

    System.out.println("Testing compareTo(): ");
    System.out.println();
    System.out.println("Rational r:");
    System.out.println(r);
    System.out.println("Rational w:");
    System.out.println(w);
    System.out.print("compare r and w: ");
    System.out.print(r.compareTo(w) + "\n\n");

    // what how does compareTo function when numbers are equal? floats are weird
    Rational apple = new Rational(3, 9);
    Rational banana = new Rational(1, 3);
    System.out.println("Testing compareTo(): ");
    System.out.println();
    System.out.println("Rational apple:");
    System.out.println(apple);
    System.out.println("Rational banana:");
    System.out.println(banana);
    System.out.println("compare apple and banana: ");
    System.out.println(apple.compareTo(banana) + "\n\n");

    System.out.println("Rational v:");
    System.out.println(v);
    System.out.println("Rational w:");
    System.out.println(w);
    System.out.print("compare v and w: ");
    System.out.print(v.compareTo(w) + "\n\n");

    System.out.println("Rational t:");
    System.out.println(t);
    System.out.println("Rational s:");
    System.out.println(s);
    System.out.print("compare t and s: ");
    System.out.print(t.compareTo(s) + "\n\n");

    System.out.println("~~--------------Testing equals()------------------~~");

    Object a = new Rational(1, 7);
    Object b = new Rational(2, 14);
    Object c = new Rational(3, 14);
    Object d = new Rational(1, 7);

    System.out.println(a.equals(b));
    System.out.println(a.equals(c));
    System.out.println(a.equals(d));
    System.out.println(b.equals(c));

    System.out.println("~~--------------------------------~~");
  }