package math;


/*************************************************************************
 *  Compilation:  javac BeneficialCancellation.java
 *  Execution:    java BeneficialCancellation x
 *
 *  % java BeneficialCancellation 1.0000001
 *  f(1.0000001)     = 0.9999999500000009
 *  g(1.000000001)   = 1.0

 *************************************************************************/

public class BeneficialCancellation {

    public static double f(double x) {
        double y = x - 1.0;
        double z = Math.exp(y);
        if (z == 1) return z;
        return  Math.log(z) / (z - 1.0);
    }

    public static double g(double x) {
        double y = x - 1.0;
        double z = Math.exp(y);
        if (z == 1) return z;
        return  y / (z - 1.0);
    }


    public static void main(String[] args) { 
        double x = Double.parseDouble(args[0]);
        System.out.println("f(" + x + ")     = " + f(x));
        System.out.println("g(" + x + ")     = " + g(x));
   }

}
