§
    OŠtj?  ã                   ó~   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
  G d„ de¦  «        Z G d	„ d
e¦  «        ZdS )z
Physical quantities.
é    )Ú
AtomicExpr)ÚSymbol)Úsympify)Ú_QuantityMapper)ÚPrefixc                   óð   — e Zd ZdZdZdZdZdZdZdZ		 	 	 	 dd„Z
d„ Zd„ Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚQuantityzX
    Physical quantity: can be a unit of measure, a constant or a generic quantity.
    TFNc                 ó<  — t          |t          ¦  «        st          |¦  «        }|€|}n$t          |t          ¦  «        rt          |¦  «        }|| _        t	          j        | ||¦  «        }	||	_        ||	_        ||	_        ||	_	        ||	_
        ||	_        ||	_        |	S ©N)Ú
isinstancer   ÚstrÚ_is_prefixedr   Ú__new__Ú_nameÚ_abbrevÚ_latex_reprÚ_unicode_reprÚ_ascii_reprÚ_mathml_repr)
ÚclsÚnameÚabbrevÚ
latex_reprÚpretty_unicode_reprÚpretty_ascii_reprÚmathml_presentation_reprÚis_prefixedÚassumptionsÚobjs
             ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/units/quantities.pyr   zQuantity.__new__   s¡   € õ ˜$¥Ñ'Ô'ð 	 Ý˜$‘<”<ˆDàˆ>ØˆFˆFÝ˜¥Ñ$Ô$ð 	$Ý˜F‘^”^ˆFð 'ˆÔåÔ   d¨FÑ3Ô3ˆØˆŒ	ØˆŒØ$ˆŒØ/ˆÔØ+ˆŒØ3ˆÔØ&ˆÔØˆ
ó    c                 ó$   — |t           j        | <   d S r   )r   Ú_quantity_dimension_global)ÚselfÚ	dimensions     r    Úset_global_dimensionzQuantity.set_global_dimension3   s   € Ø;D�Ô2°4Ñ8Ð8Ð8r!   c                 óâ   — ddl m} t          |¦  «        }t          |t          ¦  «        rd| _        |                     d„ d„ ¦  «        }t          |¦  «        }||f|j        | <   ||j        | <   dS )zN
        Setting a scale factor that is valid across all unit system.
        r   ©Ú
UnitSystemTc                 ó,   — t          | t          ¦  «        S r   )r   r   ©Úxs    r    ú<lambda>z;Quantity.set_global_relative_scale_factor.<locals>.<lambda>@   s   € •j ¥FÑ+Ô+€ r!   c                 ó   — | j         S r   )Úscale_factorr+   s    r    r-   z;Quantity.set_global_relative_scale_factor.<locals>.<lambda>A   s   € �a”n€ r!   N)	Úsympy.physics.unitsr)   r   r   r   r   ÚreplaceÚ_quantity_scale_factors_globalÚ,_quantity_dimensional_equivalence_map_global)r$   r/   Úreference_quantityr)   s       r    Ú set_global_relative_scale_factorz)Quantity.set_global_relative_scale_factor6   s“   € ð 	3Ð2Ð2Ð2Ð2Ð2Ý˜|Ñ,Ô,ˆÝ�l¥FÑ+Ô+ð 	%Ø $ˆDÔà#×+Ò+Ø+Ð+Ø$Ð$ñ
ô 
ˆõ ˜|Ñ,Ô,ˆØ;GÐI[Ð:\ˆ
Ô1°$Ñ7ØHZˆ
Ô?ÀÑEÐEÐEr!   c                 ó   — | j         S r   )r   ©r$   s    r    r   zQuantity.nameG   s
   € àŒzÐr!   c                 ó`   — ddl m} |                     ¦   «         }|                     | ¦  «        S )Nr   r(   )r0   r)   Úget_default_unit_systemÚget_quantity_dimension©r$   r)   Úunit_systems      r    r%   zQuantity.dimensionK   s9   € à2Ð2Ð2Ð2Ð2Ð2Ø ×8Ò8Ñ:Ô:ˆØ×1Ò1°$Ñ7Ô7Ð7r!   c                 ó   — | j         S )z
        Symbol representing the unit name.

        Prepend the abbreviation with the prefix symbol if it is defines.
        )r   r7   s    r    r   zQuantity.abbrevQ   s   € ð Œ|Ðr!   c                 ó`   — ddl m} |                     ¦   «         }|                     | ¦  «        S )zW
        Overall magnitude of the quantity as compared to the canonical units.
        r   r(   )r0   r)   r9   Úget_quantity_scale_factorr;   s      r    r/   zQuantity.scale_factorZ   s;   € ð
 	3Ð2Ð2Ð2Ð2Ð2Ø ×8Ò8Ñ:Ô:ˆØ×4Ò4°TÑ:Ô:Ð:r!   c                 ó   — dS ©NT© r7   s    r    Ú_eval_is_positivezQuantity._eval_is_positivec   ó   € Øˆtr!   c                 ó   — dS rA   rB   r7   s    r    Ú_eval_is_constantzQuantity._eval_is_constantf   rD   r!   c                 ó   — | S r   rB   r7   s    r    Ú	_eval_AbszQuantity._eval_Absi   s   € Øˆr!   c                 óD   — t          |t          ¦  «        r| |k    r| S d S d S r   )r   r	   )r$   ÚoldÚnews      r    Ú
_eval_subszQuantity._eval_subsl   s/   € Ý�c�8Ñ$Ô$ð 	¨°ª¨ØˆKð	ð 	¨¨r!   c                 ó¨   — | j         r| j         S d                     t          | j        ¦  «        dk    r| j        d         n| j        d         ¦  «        S )Nz\text{{{}}}é   é   r   )r   ÚformatÚlenÚargs)r$   Úprinters     r    Ú_latexzQuantity._latexp   s[   € ØÔð 	DØÔ#Ð#à!×(Ò(Ý  ¤™^œ^¨qÒ0Ð0ð *.¬°1¬¨Ø6:´iÀ´lñDô Dð Dr!   ÚSIc                 ó(   — ddl m}  || ||¦  «        S )a±  
        Convert the quantity to another quantity of same dimensions.

        Examples
        ========

        >>> from sympy.physics.units import speed_of_light, meter, second
        >>> speed_of_light
        speed_of_light
        >>> speed_of_light.convert_to(meter/second)
        299792458*meter/second

        >>> from sympy.physics.units import liter
        >>> liter.convert_to(meter**3)
        meter**3/1000
        rO   )Ú
convert_to)ÚutilrW   )r$   Úotherr<   rW   s       r    rW   zQuantity.convert_tow   s*   € ð" 	%Ð$Ð$Ð$Ð$Ð$Øˆz˜$  {Ñ3Ô3Ð3r!   c                 ó   — t          ¦   «         S )z"Return free symbols from quantity.)Úsetr7   s    r    Úfree_symbolszQuantity.free_symbols‹   s   € õ ‰uŒuˆr!   c                 ó   — | j         S )zWWhether or not the quantity is prefixed. Eg. `kilogram` is prefixed, but `gram` is not.)r   r7   s    r    r   zQuantity.is_prefixed�   s   € ð Ô Ð r!   )NNNNNF)rU   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_commutativeÚis_realÚ	is_numberÚ
is_nonzeroÚis_physical_constantÚ	_diff_wrtr   r&   r5   Úpropertyr   r%   r   r/   rC   rF   rH   rL   rT   rW   r\   r   rB   r!   r    r	   r	      s‡  € € € € € ðð ð €NØ€GØ€IØ€JØ ÐØ€Ià"&Ø59ØAEØ!ðð ð ð ð6Eð Eð Eð[ð [ð [ð" ðð ñ „Xðð ð8ð 8ñ „Xð8ð
 ðð ñ „Xðð ð;ð ;ñ „Xð;ðð ð ðð ð ðð ð ðð ð ðDð Dð Dð4ð 4ð 4ð 4ð( ðð ñ „Xðð ð!ð !ñ „Xð!ð !ð !r!   r	   c                   ó   — e Zd ZdZdZdS )ÚPhysicalConstantzLRepresents a physical constant, eg. `speed_of_light` or `avogadro_constant`.TN)r^   r_   r`   ra   rf   rB   r!   r    rj   rj   •   s   € € € € € ØVÐVàÐÐÐr!   rj   N)ra   Úsympy.core.exprr   Úsympy.core.symbolr   Úsympy.core.sympifyr   Úsympy.physics.units.dimensionsr   Úsympy.physics.units.prefixesr   r	   rj   rB   r!   r    ú<module>rp      sÒ   ððð ð 'Ð &Ð &Ð &Ð &Ð &Ø $Ð $Ð $Ð $Ð $Ð $Ø &Ð &Ð &Ð &Ð &Ð &Ø :Ð :Ð :Ð :Ð :Ð :Ø /Ð /Ð /Ð /Ð /Ð /ðG!ð G!ð G!ð G!ð G!ˆzñ G!ô G!ð G!ðR ð  ð  ð  ð  �xñ  ô  ð  ð  ð  r!   