Ë
    täiÂ  ã                   ó8   — d Z ddlmZ ddlmZmZ  G d„ d«      Zy)a(  

Module for the DomainScalar class.

A DomainScalar represents an element which is in a particular
Domain. The idea is that the DomainScalar class provides the
convenience routines for unifying elements with different domains.

It assists in Scalar Multiplication and getitem for DomainMatrix.

é   )Úconstruct_domainé    )ÚDomainÚZZc                   ó®   ‡ — e Zd ZdZd„ Zeˆ fd„«       Zd„ Zed„ «       Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚDomainScalarz
    docstring
    c                 ó    — t        |t        «      st        d«      ‚|j                  |«      st        d|›d|›�«      ‚| j	                  ||«      S )Nzdomain should be of type Domainzelement z should be in domain )Ú
isinstancer   Ú	TypeErrorÚof_typeÚnew)ÚclsÚelementÚdomains      úp/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/polys/matrices/domainscalar.pyÚ__new__zDomainScalar.__new__   sE   € Ü˜&¤&Ô)ÜÐ=Ó>Ð>Ø�~‰~˜gÔ&ÝÂ7ÉFÐSÓTÐTØ�w‰w�w Ó'Ð'ó    c                 óB   •— t         ‰| �  | «      }||_        ||_        |S ©N)Úsuperr   r   r   )r   r   r   ÚobjÚ	__class__s       €r   r   zDomainScalar.new   s$   ø€ ä‰g‰o˜cÓ"ˆØˆŒØˆŒ
Øˆ
r   c                 ó,   — t        | j                  «      S r   )Úreprr   ©Úselfs    r   Ú__repr__zDomainScalar.__repr__$   ó   € Ü�D—L‘LÓ!Ð!r   c                 óH   — t        |g«      \  }\  }| j                  ||«      S r   )r   r   )r   Úexprr   r   s       r   Ú
from_sympyzDomainScalar.from_sympy'   s&   € ä.°¨vÓ6Ñˆ‘�'Ø�w‰w�w Ó'Ð'r   c                 óL   — | j                   j                  | j                  «      S r   )r   Úto_sympyr   r   s    r   r#   zDomainScalar.to_sympy,   s   € Ø�{‰{×#Ñ# D§L¡LÓ1Ð1r   c                 ór   — |j                  | j                  | j                  «      }| j                  ||«      S r   )Úconvert_fromr   r   r   )r   r   r   s      r   Ú	to_domainzDomainScalar.to_domain/   s-   € Ø×%Ñ% d§l¡l°D·K±KÓ@ˆØ�x‰x˜ Ó(Ð(r   c                 ó$   — | j                  |«      S r   )r&   )r   r   s     r   Ú
convert_tozDomainScalar.convert_to3   s   € Ø�~‰~˜fÓ%Ð%r   c                 ó�   — | j                   j                  |j                   «      }| j                  |«      |j                  |«      fS r   )r   Úunifyr&   )r   Úotherr   s      r   r*   zDomainScalar.unify6   s7   € Ø—‘×"Ñ" 5§<¡<Ó0ˆØ�~‰~˜fÓ% u§¡°vÓ'>Ð>Ð>r   c                 ó,   — t        | j                  «      S r   )Úboolr   r   s    r   Ú__bool__zDomainScalar.__bool__:   r   r   c                 ó¼   — t        |t        «      st        S | j                  |«      \  } }| j	                  | j
                  |j
                  z   | j                  «      S r   ©r
   r   ÚNotImplementedr*   r   r   r   ©r   r+   s     r   Ú__add__zDomainScalar.__add__=   óF   € Ü˜%¤Ô.Ü!Ð!Ø—j‘j Ó'‰ˆˆeØ�x‰x˜Ÿ™ u§}¡}Ñ4°d·k±kÓBÐBr   c                 ó¼   — t        |t        «      st        S | j                  |«      \  } }| j	                  | j
                  |j
                  z
  | j                  «      S r   r0   r2   s     r   Ú__sub__zDomainScalar.__sub__C   r4   r   c                 ó  — t        |t        «      s0t        |t        «      rt        t        |«      t        «      }nt        S | j                  |«      \  } }| j                  | j                  |j                  z  | j                  «      S r   )	r
   r   Úintr   r1   r*   r   r   r   r2   s     r   Ú__mul__zDomainScalar.__mul__I   s`   € Ü˜%¤Ô.Ü˜%¤Ô%Ü$¤R¨£Y´Ó3‘ä%Ð%à—j‘j Ó'‰ˆˆeØ�x‰x˜Ÿ™ u§}¡}Ñ4°d·k±kÓBÐBr   c                 óê   — t        |t        «      st        S | j                  |«      \  } }| j	                  | j
                  j                  | j                  |j                  «      | j
                  «      S r   )r
   r   r1   r*   r   r   Úquor   r2   s     r   Ú__floordiv__zDomainScalar.__floordiv__S   óP   € Ü˜%¤Ô.Ü!Ð!Ø—j‘j Ó'‰ˆˆeØ�x‰x˜Ÿ™Ÿ™¨¯©°e·m±mÓDÀdÇkÁkÓRÐRr   c                 óê   — t        |t        «      st        S | j                  |«      \  } }| j	                  | j
                  j                  | j                  |j                  «      | j
                  «      S r   )r
   r   r1   r*   r   r   Úremr   r2   s     r   Ú__mod__zDomainScalar.__mod__Y   r=   r   c                 ó,  — t        |t        «      st        S | j                  |«      \  } }| j                  j                  | j                  |j                  «      \  }}| j                  || j                  «      | j                  || j                  «      fS r   )r
   r   r1   r*   r   Údivr   r   )r   r+   ÚqÚrs       r   Ú
__divmod__zDomainScalar.__divmod___   sm   € Ü˜%¤Ô.Ü!Ð!Ø—j‘j Ó'‰ˆˆeØ�{‰{�‰˜tŸ|™|¨U¯]©]Ó;‰ˆˆ1Ø—‘˜˜DŸK™KÓ(¨$¯(©(°1°d·k±kÓ*BÐCÐCr   c                 ó€   — t        |t        «      st        S | j                  | j                  |z  | j
                  «      S r   )r
   r8   r1   r   r   r   )r   Úns     r   Ú__pow__zDomainScalar.__pow__f   s/   € Ü˜!œSÔ!Ü!Ð!Ø�x‰x˜Ÿ™ a™¨¯©Ó5Ð5r   c                 óP   — | j                  | j                  ­| j                  «      S r   ©r   r   r   r   s    r   Ú__pos__zDomainScalar.__pos__k   ó   € Ø�x‰x˜Ÿ™˜ t§{¡{Ó3Ð3r   c                 óP   — | j                  | j                   | j                  «      S r   rJ   r   s    r   Ú__neg__zDomainScalar.__neg__n   rL   r   c                 ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r   )r
   r   r1   r   r   r2   s     r   Ú__eq__zDomainScalar.__eq__q   s7   € Ü˜%¤Ô.Ü!Ð!Ø�|‰|˜uŸ}™}Ñ,ÒL°·±ÀÇÁÑ1LÐLr   c                 óH   — | j                   | j                  j                  k(  S r   )r   r   Úzeror   s    r   Úis_zerozDomainScalar.is_zerov   s   € Ø�|‰|˜tŸ{™{×/Ñ/Ñ/Ð/r   c                 óH   — | j                   | j                  j                  k(  S r   )r   r   Úoner   s    r   Úis_onezDomainScalar.is_oney   s   € Ø�|‰|˜tŸ{™{Ÿ™Ñ.Ð.r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr   r   r!   r#   r&   r(   r*   r.   r3   r6   r9   r<   r@   rE   rH   rK   rN   rP   rS   rV   Ú__classcell__)r   s   @r   r   r      s–   ø„ ñò(ð óó ðò"ð ñ(ó ð(ò2ò)ò&ò?ò"òCòCòCòSòSòDò6ò
4ò4òMò
0ö/r   r   N)rZ   Úconstructorr   Úsympy.polys.domainsr   r   r   © r   r   Ú<module>r`      s   ðñ
õ +ç *÷i/ò i/r   