def arctanh(inp): if isinstance(inp, ooarray) and any([isinstance(elem, oofun) for elem in atleast_1d(inp)]): return ooarray([arctanh(elem) for elem in inp]) if hasStochastic and isinstance(inp, distribution.stochasticDistribution): return distribution.stochasticDistribution(arctanh(inp.values), inp.probabilities.copy())._update(inp) if not isinstance(inp, oofun): return np.arctanh(inp) r = oofun(st_arctanh, inp, d = lambda x: Diag(1.0/(1.0-x**2)), vectorized = True, criticalPoints = False) r.getDefiniteRange = get_box1_DefiniteRange r._interval_ = lambda domain, dtype: box_1_interval(inp, np.arctanh, domain, dtype, -np.inf, np.inf) return r
def arccos(inp): if isinstance(inp, ooarray) and any([isinstance(elem, oofun) for elem in atleast_1d(inp)]): return ooarray([arccos(elem) for elem in inp]) if hasStochastic and isinstance(inp, distribution.stochasticDistribution): return distribution.stochasticDistribution(arccos(inp.values), inp.probabilities.copy())._update(inp) if not isinstance(inp, oofun): return np.arccos(inp) r = oofun(st_arccos, inp, d = lambda x: Diag(-1.0 / np.sqrt(1.0 - x**2)), vectorized = True) r.getDefiniteRange = get_box1_DefiniteRange F_l, F_u = np.arccos((-1, 1)) r._interval_ = lambda domain, dtype: box_1_interval(inp, np.arccos, domain, dtype, F_l, F_u) r.attach((inp>-1)('arccos_domain_lower_bound_%d' % r._id, tol=-1e-7), (inp<1)('arccos_domain_upper_bound_%d' % r._id, tol=-1e-7)) return r