def test_asin(self): yl, yu = interval.asin(-0.5, 0.5, -math.inf, math.inf) self.assertEqual(yl, -math.inf) self.assertEqual(yu, math.inf) yl, yu = interval.asin(-0.5, 0.5, -math.pi, math.pi) self.assertAlmostEqual(yl, -math.pi, 12) self.assertAlmostEqual(yu, math.pi, 12) yl, yu = interval.asin(-0.5, 0.5, -math.pi / 2, math.pi / 2) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -math.pi / 2 - 0.1, math.pi / 2 + 0.1) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -math.pi / 2 + 0.1, math.pi / 2 - 0.1) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -1.5 * math.pi, 1.5 * math.pi) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12) yl, yu = interval.asin(-0.5, 0.5, -1.5 * math.pi - 0.1, 1.5 * math.pi + 0.1) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12) yl, yu = interval.asin(-0.5, 0.5, -1.5 * math.pi + 0.1, 1.5 * math.pi - 0.1) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12)
def test_asin(self): yl, yu = interval.asin(-0.5, 0.5, -math.inf, math.inf) self.assertEqual(yl, -math.inf) self.assertEqual(yu, math.inf) yl, yu = interval.asin(-0.5, 0.5, -math.pi, math.pi) self.assertAlmostEqual(yl, -math.pi, 12) self.assertAlmostEqual(yu, math.pi, 12) yl, yu = interval.asin(-0.5, 0.5, -math.pi/2, math.pi/2) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -math.pi/2-0.1, math.pi/2+0.1) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -math.pi/2+0.1, math.pi/2-0.1) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -1.5*math.pi, 1.5*math.pi) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12) yl, yu = interval.asin(-0.5, 0.5, -1.5*math.pi-0.1, 1.5*math.pi+0.1) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12) yl, yu = interval.asin(-0.5, 0.5, -1.5*math.pi+0.1, 1.5*math.pi-0.1) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12)
def test_asin(self): yl, yu = interval.asin(-0.5, 0.5, -interval.inf, interval.inf, feasibility_tol=1e-8) self.assertEqual(yl, -interval.inf) self.assertEqual(yu, interval.inf) yl, yu = interval.asin(-0.5, 0.5, -math.pi, math.pi, feasibility_tol=1e-8) self.assertAlmostEqual(yl, -math.pi, 12) self.assertAlmostEqual(yu, math.pi, 12) yl, yu = interval.asin(-0.5, 0.5, -math.pi / 2, math.pi / 2, feasibility_tol=1e-8) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -math.pi / 2 - 0.1, math.pi / 2 + 0.1, feasibility_tol=1e-8) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -math.pi / 2 + 0.1, math.pi / 2 - 0.1, feasibility_tol=1e-8) self.assertAlmostEqual(yl, math.asin(-0.5)) self.assertAlmostEqual(yu, math.asin(0.5)) yl, yu = interval.asin(-0.5, 0.5, -1.5 * math.pi, 1.5 * math.pi, feasibility_tol=1e-8) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12) yl, yu = interval.asin(-0.5, 0.5, -1.5 * math.pi - 0.1, 1.5 * math.pi + 0.1, feasibility_tol=1e-8) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12) yl, yu = interval.asin(-0.5, 0.5, -1.5 * math.pi + 0.1, 1.5 * math.pi - 0.1, feasibility_tol=1e-8) self.assertAlmostEqual(yl, -3.6651914291880920, 12) self.assertAlmostEqual(yu, 3.6651914291880920, 12)
def _prop_bnds_leaf_to_root_asin(node, bnds_dict): """ Parameters ---------- node: pyomo.core.expr.expr_pyomo5.UnaryFunctionExpression bnds_dict: ComponentMap """ assert len(node.args) == 1 arg = node.args[0] lb1, ub1 = bnds_dict[arg] bnds_dict[node] = interval.asin(lb1, ub1, -math.inf, math.inf)
def _prop_bnds_leaf_to_root_asin(node, bnds_dict): """ Parameters ---------- node: pyomo.core.expr.numeric_expr.UnaryFunctionExpression bnds_dict: ComponentMap """ assert len(node.args) == 1 arg = node.args[0] lb1, ub1 = bnds_dict[arg] bnds_dict[node] = interval.asin(lb1, ub1, -math.inf, math.inf)
def _prop_bnds_root_to_leaf_sin(node, bnds_dict): """ Parameters ---------- node: pyomo.core.expr.expr_pyomo5.UnaryFunctionExpression bnds_dict: ComponentMap """ assert len(node.args) == 1 arg = node.args[0] lb0, ub0 = bnds_dict[node] lb1, ub1 = bnds_dict[arg] _lb1, _ub1 = interval.asin(lb0, ub0, lb1, ub1) if _lb1 > lb1: lb1 = _lb1 if _ub1 < ub1: ub1 = _ub1 bnds_dict[arg] = (lb1, ub1)
def _prop_bnds_root_to_leaf_sin(node, bnds_dict): """ Parameters ---------- node: pyomo.core.expr.numeric_expr.UnaryFunctionExpression bnds_dict: ComponentMap """ assert len(node.args) == 1 arg = node.args[0] lb0, ub0 = bnds_dict[node] lb1, ub1 = bnds_dict[arg] _lb1, _ub1 = interval.asin(lb0, ub0, lb1, ub1) if _lb1 > lb1: lb1 = _lb1 if _ub1 < ub1: ub1 = _ub1 bnds_dict[arg] = (lb1, ub1)