def sin(angle): """ sin >>> angle = ETQ.Angle(30.0, 'deg') >>> print(angle) 30.000 deg (Angle) >>> print(round(sin(angle.get_value('rad')), 3)) 0.5 >>> sin(angle.get_uval()) UVal(0.49999999999999994, {}) >>> print(sin(angle.get_uval())) 0.5000 {} >>> print(sin(angle)) 0.500 (Scalar) >>> print(sin(ETQ.Distance(0.5, 'm'))) Traceback (most recent call last): ... EngineeringTools.tools.functions.EngineeringTools_tools_Error_units: wrong type : <class 'EngineeringTools.quantities.mechanics.Distance'> """ if isinstance(angle, float): return _np.sin(angle) elif isinstance(angle, ETQ.UVal): angle.check_units({}) return ETQ.UVal(_np.sin(angle.get_value()), {}) elif isinstance(angle, ETQ.Angle): return ETQ.Scalar(_np.sin(angle.get_value())) else: raise EngineeringTools_tools_Error_units('wrong type : %s' % type(angle))
def tan(angle): """ tan >>> angle = ETQ.Angle(30.0, 'deg') >>> print(angle) 30.000 deg (Angle) >>> print(tan(angle.get_value('rad'))) 0.5773502691... >>> tan(angle.get_uval()) UVal(0.5773502691896257, {}) >>> print(tan(angle.get_uval())) 0.5774 {} >>> print(tan(angle)) 0.577 (Scalar) >>> print(tan(ETQ.Distance(0.5, 'm'))) Traceback (most recent call last): ... EngineeringTools.tools.functions.EngineeringTools_tools_Error_units: wrong type : <class 'EngineeringTools.quantities.mechanics.Distance'> """ if isinstance(angle, float): return _np.tan(angle) elif isinstance(angle, ETQ.UVal): angle.check_units({}) return ETQ.UVal(_np.tan(angle.get_value()), {}) elif isinstance(angle, ETQ.Angle): return ETQ.Scalar(_np.tan(angle.get_value()), '1.0') else: raise EngineeringTools_tools_Error_units('wrong type : %s' % type(angle))
def test_power(self): with self.assertRaises(ETF.EngineeringTools_tools_Error_units): ETF.power("a", 2.) with self.assertRaises(ETF.EngineeringTools_tools_Error_units): ETF.power(2., "a") self.assertEqual(ETF.power(3., 2.), 9.) self.assertEqual(ETF.power(3, 2), 9.) self.assertEqual(ETF.power(3, -2.), 1 / 9.) self.assertEqual( ETF.power(ETQ.Distance(2., 'm').uval, 2), ETQ.Distance(2., 'm').uval * ETQ.Distance(2., 'm').uval) self.assertEqual( ETF.power(ETQ.Distance(2., 'm'), 2), ETQ.Distance(2., 'm').uval * ETQ.Distance(2., 'm').uval) self.assertEqual( ETF.power(ETQ.Distance(2., 'm'), ETQ.Number(2)), ETQ.Distance(2., 'm').uval * ETQ.Distance(2., 'm').uval) self.assertEqual( ETF.power(ETQ.Distance(2., 'm'), ETQ.Scalar(2.)), ETQ.Distance(2., 'm').uval * ETQ.Distance(2., 'm').uval)
def my_test(): Q.Quantity.set_displayUnitSystem('mechanicalEngineering') d = Q.Distance(1.1, 'm') print(repr(d)) print(d.get_unitsPreferred()) print('-'*10) d2 = Q.Distance(2.1, 'm', 'km') print(repr(d2)) print(d2) x = d2.get_value('m') print(x) d = Q.Distance(1.1, 'm') print(repr(d)) s1 = d.get_uval() / (3*d.get_uval()) s1 = Q.Scalar(s1) print(s1) s2 = d.get_uval() / 3 print(s2)
def test__format(self): self.assertEqual(str(ETQ.Scalar(12.3456789)), ' 12.3 (Scalar)') self.assertEqual(str(ETQ.Scalar(0.0123456789)), ' 0.0123 (Scalar)')
from .. import quantities as ETQ ################################################################################ # exceptions ################################################################################ class EngineeringTools_tools_Error(Exception): """Exception: tools""" class EngineeringTools_tools_Error_units(EngineeringTools_tools_Error): """Exception: tools""" ################################################################################ # constants ################################################################################ PI = ETQ.Scalar(_np.pi, '1.0', displayUnit='1.0') ################################################################################ # functions ################################################################################ def sin(angle): """ sin >>> angle = ETQ.Angle(30.0, 'deg') >>> print(angle) 30.000 deg (Angle) >>> print(round(sin(angle.get_value('rad')), 3)) 0.5 >>> sin(angle.get_uval()) UVal(0.49999999999999994, {})