Funções em java

Boa noite, preciso de um algoritmo que mostre a abcissa do ponto de interseção entre 3 funções, 2 a 2. São elas f(x) = 4 - x, g (x) = arctg (x) e h(x) = pow (e , -x). Nesse meu código todos os resultados estão dando 0, tentei com double e com BigDecimal. Podem me ajudar?

 import static java.lang.Math.pow;
 import java.math.BigDecimal;


 public class Abscissas {
 public static BigDecimal Funcaoh (double x) {
    BigDecimal y = new BigDecimal("4.000");
    double num = y.doubleValue();
    num = num - x;
    BigDecimal z = new BigDecimal(num);
    return z;
}

public static BigDecimal Funcaog (double x) {
    BigDecimal y = new BigDecimal("0.000");
    BigDecimal e = new BigDecimal("2.718");
    double i = -1*x;
    double num = y.doubleValue();
    double num2 = e.doubleValue();
    num = pow(num2,(i));
    BigDecimal z = new BigDecimal(num);
    return z;
}

public static BigDecimal Funcaof (double x) {
    BigDecimal y = new BigDecimal("0.000");
    double num = y.doubleValue();
    num=Math.atan(x);
    BigDecimal z = new BigDecimal(num);
    return z;
}

 public static BigDecimal CalculaAbscissafg (double x) {
    BigDecimal resultado = new BigDecimal("0");
    for (x=0.000;x<10.000;x+=0.001) {
    if (Funcaof(x) == Funcaog(x))
        resultado = new BigDecimal(x);
    }
    return resultado;
}

public static BigDecimal CalculaAbscissafh (double x) {
    BigDecimal resultado = new BigDecimal("000");
    for (x=0.000;x<10.000;x+= 0.001) {
        if (Funcaof(x) == Funcaoh (x))
            resultado = new BigDecimal(x);
    }
    return resultado;
}

public static BigDecimal CalculaAbscissagh (double x) {
    BigDecimal resultado = new BigDecimal("000");
    for (x=0.000;x<10.000;x+= 0.001) {
        if (Funcaog(x) == Funcaoh(x))
            resultado = new BigDecimal(x);
    }
    return resultado;
}

public static void main(String[] args) {
    double x=0.000;
System.out.println("Abscissa da interesecao entre f(x) e g(x):" + CalculaAbscissafg(x).toString());
System.out.println("Abscissa da intersecao entre f(x) e g(x):" + CalculaAbscissafh(x).toString());
System.out.println("Abscissa da interesecao entre g(x) e h(x):" + CalculaAbscissagh(x).toString());
}

}

Dei uma leve analisada no código e percebi que ele nunca entrar nesse if

if (Funcaog(x) == Funcaoh(x)){

como você inicializa a variavel como 0 e ela nunca é alterada o resultado sempre será 0

percebi que a o método FuncaoOh sempre retorna negativo e a FunçãoOg sempre positivo, acho que o problema estar nestes métodos.

Belíssimo trabalho, esperando que você conclua esse projeto

Abraço