
    \h                     8    S r SSKJr  SSKJrJr   " S S5      rg)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                      ^  \ rS rSrSrS r\U 4S j5       rS r\S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rSrU =r$ )DomainScalar   z
docstring
c                     [        U[        5      (       d  [        S5      eUR                  U5      (       d  [        SU< SU< 35      eU R	                  X5      $ )Nzdomain should be of type Domainzelement z should be in domain )
isinstancer   	TypeErrorof_typenew)clselementdomains      Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/matrices/domainscalar.py__new__DomainScalar.__new__   sI    &&))=>>~~g&&7FSTTwww''    c                 >   > [         TU ]  U 5      nXl        X#l        U$ N)superr   r   r   )r   r   r   obj	__class__s       r   r   DomainScalar.new   s     goc"

r   c                 ,    [        U R                  5      $ r   )reprr   selfs    r   __repr__DomainScalar.__repr__$       DLL!!r   c                 F    [        U/5      u  nu  nU R                  X25      $ r   )r   r   )r   exprr   r   s       r   
from_sympyDomainScalar.from_sympy'   s$    .v6'www''r   c                 L    U R                   R                  U R                  5      $ r   )r   to_sympyr   r   s    r   r(   DomainScalar.to_sympy,   s    {{##DLL11r   c                 p    UR                  U R                  U R                  5      nU R                  X!5      $ r   )convert_fromr   r   r   )r   r   r   s      r   	to_domainDomainScalar.to_domain/   s+    %%dllDKK@xx((r   c                 $    U R                  U5      $ r   )r,   )r   r   s     r   
convert_toDomainScalar.convert_to3   s    ~~f%%r   c                     U R                   R                  UR                   5      nU R                  U5      UR                  U5      4$ r   )r   unifyr,   )r   otherr   s      r   r2   DomainScalar.unify6   s7    ""5<<0~~f%uv'>>>r   c                 ,    [        U R                  5      $ r   )boolr   r   s    r   __bool__DomainScalar.__bool__:   r"   r   c                     [        U[        5      (       d  [        $ U R                  U5      u  pU R	                  U R
                  UR
                  -   U R                  5      $ r   r   r   NotImplementedr2   r   r   r   r   r3   s     r   __add__DomainScalar.__add__=   G    %..!!jj'xxu}}4dkkBBr   c                     [        U[        5      (       d  [        $ U R                  U5      u  pU R	                  U R
                  UR
                  -
  U R                  5      $ r   r:   r<   s     r   __sub__DomainScalar.__sub__C   r?   r   c                 "   [        U[        5      (       d5  [        U[        5      (       a  [        [        U5      [        5      nO[        $ U R                  U5      u  pU R                  U R                  UR                  -  U R                  5      $ r   )	r   r   intr   r;   r2   r   r   r   r<   s     r   __mul__DomainScalar.__mul__I   sd    %..%%%$RY3%%jj'xxu}}4dkkBBr   c                     [        U[        5      (       d  [        $ U R                  U5      u  pU R	                  U R
                  R                  U R                  UR                  5      U R
                  5      $ r   )r   r   r;   r2   r   r   quor   r<   s     r   __floordiv__DomainScalar.__floordiv__S   Q    %..!!jj'xxemmDdkkRRr   c                     [        U[        5      (       d  [        $ U R                  U5      u  pU R	                  U R
                  R                  U R                  UR                  5      U R
                  5      $ r   )r   r   r;   r2   r   r   remr   r<   s     r   __mod__DomainScalar.__mod__Y   rK   r   c                 .   [        U[        5      (       d  [        $ U R                  U5      u  pU R                  R                  U R                  UR                  5      u  p#U R                  X R                  5      U R                  X0R                  5      4$ r   )r   r   r;   r2   r   divr   r   )r   r3   qrs       r   
__divmod__DomainScalar.__divmod___   sh    %..!!jj'{{t||U]];KK($((1kk*BCCr   c                     [        U[        5      (       d  [        $ U R                  U R                  U-  U R
                  5      $ r   )r   rD   r;   r   r   r   )r   ns     r   __pow__DomainScalar.__pow__f   s2    !S!!!!xxa55r   c                 P    U R                  U R                  7U R                  5      $ r   r   r   r   r   s    r   __pos__DomainScalar.__pos__k       xxt{{33r   c                 P    U R                  U R                  * U R                  5      $ r   r[   r   s    r   __neg__DomainScalar.__neg__n   r^   r   c                     [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r   r   r;   r   r   r<   s     r   __eq__DomainScalar.__eq__q   s:    %..!!||u}},L1LLr   c                 H    U R                   U R                  R                  :H  $ r   )r   r   zeror   s    r   is_zeroDomainScalar.is_zerov   s    ||t{{////r   c                 H    U R                   U R                  R                  :H  $ r   )r   r   oner   s    r   is_oneDomainScalar.is_oney   s    ||t{{..r    )__name__
__module____qualname____firstlineno____doc__r   classmethodr   r    r%   r(   r,   r/   r2   r7   r=   rA   rE   rI   rN   rT   rX   r\   r`   rc   rg   rk   __static_attributes____classcell__)r   s   @r   r   r      s    (  " ( (2)&?"CCCSSD6
44M
0/ /r   r   N)rr   constructorr   sympy.polys.domainsr   r   r   rm   r   r   <module>rx      s   
 + *i/ i/r   