Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
 def test__format(self):
     self.assertEqual(str(ETQ.Scalar(12.3456789)),   '        12.3    (Scalar)')
     self.assertEqual(str(ETQ.Scalar(0.0123456789)), '         0.0123  (Scalar)')
Exemplo n.º 6
0
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, {})