public class Util {

  //for exercises 1,2,4,5

  public static double twice(double x) {
    return add(x, x);
  }

  private static double add(double x, double y) {
    return x + y;
  }

  public static int simpleFibonacci(int n) {
    //direct translation from Haskell program
    assert (n > -1) : "Only non-negative integers can have Fibonacci numbers.";
    if (n == 0) {
      return 0;
    }
    if (n == 1) {
      return 1;
    }
    if (n == 2) {
      return 1;
    }
    return simpleFibonacci(n - 1) + simpleFibonacci(n - 2);
  }

  public static int sumOrProduct(int n, int m) {
    int sum = n + m;
    int prod = n * m;
    return (BigLibrary.bigger(prod, BigLibrary.biggest(n, m, sum)));
  }

  public static int absolute(int a) {
    if (a >= 0) {
      return a;
    } else {
      return -a;
    }
  }
}