|
"""Constants (like hbar) related to quantum mechanics.""" |
|
|
|
from sympy.core.numbers import NumberSymbol |
|
from sympy.core.singleton import Singleton |
|
from sympy.printing.pretty.stringpict import prettyForm |
|
import mpmath.libmp as mlib |
|
|
|
|
|
|
|
|
|
|
|
__all__ = [ |
|
'hbar', |
|
'HBar', |
|
] |
|
|
|
|
|
class HBar(NumberSymbol, metaclass=Singleton): |
|
"""Reduced Plank's constant in numerical and symbolic form [1]_. |
|
|
|
Examples |
|
======== |
|
|
|
>>> from sympy.physics.quantum.constants import hbar |
|
>>> hbar.evalf() |
|
1.05457162000000e-34 |
|
|
|
References |
|
========== |
|
|
|
.. [1] https://en.wikipedia.org/wiki/Planck_constant |
|
""" |
|
|
|
is_real = True |
|
is_positive = True |
|
is_negative = False |
|
is_irrational = True |
|
|
|
__slots__ = () |
|
|
|
def _as_mpf_val(self, prec): |
|
return mlib.from_float(1.05457162e-34, prec) |
|
|
|
def _sympyrepr(self, printer, *args): |
|
return 'HBar()' |
|
|
|
def _sympystr(self, printer, *args): |
|
return 'hbar' |
|
|
|
def _pretty(self, printer, *args): |
|
if printer._use_unicode: |
|
return prettyForm('\N{PLANCK CONSTANT OVER TWO PI}') |
|
return prettyForm('hbar') |
|
|
|
def _latex(self, printer, *args): |
|
return r'\hbar' |
|
|
|
|
|
hbar = HBar() |
|
|