sisl.constant.PhysicalConstant

class sisl.constant.PhysicalConstant(value, unit)

Bases: float

Class to create a physical constant with unit-conversion capability, works exactly like a float.

To change the units simply call it like a method with the desired unit:

>>> m = PhysicalConstant(1., 'm')
>>> m.unit
'm'
>>> m2nm = m('nm')
>>> m2nm
1000000000.0 nm
>>> m2nm.unit
'nm'
>>> m2nm * 2
1000000000.0

Methods

as_integer_ratio()

Return a pair of integers, whose ratio is exactly equal to the original float.

conjugate()

Return self, the complex conjugate of any float.

fromhex()

Create a floating-point number from a hexadecimal string.

hex()

Return a hexadecimal representation of a floating-point number.

is_integer()

Return True if the float is an integer.

imag

the imaginary part of a complex number

real

the real part of a complex number

unit

Unit of constant

__call__(unit=None)[source]

Return the value for the constant in the given unit, otherwise will return the units in SI units

__init__(value, unit)[source]
as_integer_ratio()

Return a pair of integers, whose ratio is exactly equal to the original float.

The ratio is in lowest terms and has a positive denominator. Raise OverflowError on infinities and a ValueError on NaNs.

>>> (10.0).as_integer_ratio()
(10, 1)
>>> (0.0).as_integer_ratio()
(0, 1)
>>> (-.25).as_integer_ratio()
(-1, 4)
conjugate()

Return self, the complex conjugate of any float.

fromhex()

Create a floating-point number from a hexadecimal string.

>>> float.fromhex('0x1.ffffp10')
2047.984375
>>> float.fromhex('-0x1p-1074')
-5e-324
hex()

Return a hexadecimal representation of a floating-point number.

>>> (-0.1).hex()
'-0x1.999999999999ap-4'
>>> 3.14159.hex()
'0x1.921f9f01b866ep+1'
imag

the imaginary part of a complex number

is_integer()

Return True if the float is an integer.

real

the real part of a complex number

property unit

Unit of constant