def METHOD_NAME(self, X):
    """Analytic solution of integral for NFW profile to compute deflection angel and
    gamma.
    :param x: R/Rs
    :type x: float >0
    """
    c = 0.000001
    if isinstance(X, int) or isinstance(X, float):
        if X < 1:
            x = max(c, X)
            a = np.log(x / 2.0) + 1 / np.sqrt(1 - x**2) * np.arccosh(1.0 / x)
        elif X == 1:
            a = 1 + np.log(1.0 / 2.0)
        else:  # X > 1:
            a = np.log(X / 2) + 1 / np.sqrt(X**2 - 1) * np.arccos(1.0 / X)
    else:
        a = np.empty_like(X)
        X[X <= c] = c
        x = X[X < 1]
        a[X < 1] = np.log(x / 2.0) + 1 / np.sqrt(1 - x**2) * np.arccosh(1.0 / x)
        a[X == 1] = 1 + np.log(1.0 / 2.0)
        x = X[X > 1]
        a[X > 1] = np.log(x / 2) + 1 / np.sqrt(x**2 - 1) * np.arccos(1.0 / x)
    return a