
    E#i"                          " S  S5      r g)c                      \ rS rSrS6S j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S7S j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% 5       r'\&S7S& j5       r(\&S' 5       r)\&S( 5       r*\&S) 5       r+\&S* 5       r,\&S+ 5       r-\&S, 5       r.\&S- 5       r/\&S. 5       r0\&S/ 5       r1\&S0 5       r2\&S1 5       r3\&S2 5       r4\&S3 5       r5\&S4 5       r6S5r7g)8Precise   Nc                    Uc  SnUR                  5       nSU;   a  UR                  S5      u  p[        U5      nUR                  S5      nUS:  a7  [	        U5      U-
  S-
  U l        [        UR                  SS5      5      U l        OSU l        [        U5      U l        U R
                  U-
  U l        OXl        X l        SU l        g )N    e.    
   )	lowersplitintfindlendecimalsreplaceintegerbase)selfnumberr   modifierdecimal_indexs        K/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/base/precise.py__init__Precise.__init__   s    H\\^Ff}#)<<#4 x="KK,Mr! #Fm ;a ?"6>>#r#:; !"6{ MMH4DM!L$M	    c                 $    U R                  U5      $ N)addr   others     r   __add__Precise.__add__#       xxr   c                 $    U R                  U5      $ r   )subr!   s     r   __sub__Precise.__sub__&   r%   r   c                 $    U R                  U5      $ r   )mulr!   s     r   __mul__Precise.__mul__)   r%   r   c                 $    U R                  U5      $ r   )divr!   s     r   __truediv__Precise.__truediv__,   r%   r   c                 $    U R                  U5      $ r   )modr!   s     r   __mod__Precise.__mod__/   r%   r   c                 "    U R                  5       $ r   )negr   s    r   __neg__Precise.__neg__2       xxzr   c                 "    U R                  5       $ r   )absr8   s    r   __abs__Precise.__abs__5   r;   r   c                 $    U R                  U5      $ r   )minr!   s     r   __min__Precise.__min__8   r%   r   c                 $    U R                  U5      $ r   )maxr!   s     r   __max__Precise.__max__;   r%   r   c                 $    U R                  U5      $ r   ltr!   s     r   __lt__Precise.__lt__>       wwu~r   c                 $    U R                  U5      $ r   )ler!   s     r   __le__Precise.__le__A   rM   r   c                 $    U R                  U5      $ r   gtr!   s     r   __gt__Precise.__gt__D   rM   r   c                 $    U R                  U5      $ r   ger!   s     r   __ge__Precise.__ge__G   rM   r   c                 j    [        U[        5      (       a  [        U 5      U:H  $ U R                  U5      $ r   )
isinstancestrequalsr!   s     r   __eq__Precise.__eq__J   s-    eS!!t9%%{{5!!r   c                 x    U R                   UR                   -  n[        X R                  UR                  -   5      $ r   r   r   r   r   r"   integer_results      r   r+   Precise.mulP   s,    5~}}u~~'EFFr   c                 R   X R                   -
  UR                   -   nUS:X  a  U R                  nODUS:  a   U R                  U* -  nU R                  U-  nOU R                  U-  nU R                  U-  n[        XAR                  5      u  pgUS:  a  U(       a  US-   OUn[	        Xb5      $ )Nr   r
   )r   r   r   divmodr   )r   r"   	precisiondistance	numeratorexponentresultr3   s           r   r/   Precise.divT   s    }},u~~=q=I\yyXI-H0IyyH,Hx/IY6  &zc!vv))r   c                    U R                   UR                   :X  a.  U R                  UR                  -   n[        X R                   5      $ U R                   UR                   :  a  X/OX/u  p4UR                   UR                   -
  nUR                  U R                  U-  -  nXdR                  -   n[        XtR                   5      $ r   )r   r   r   r   )r   r"   re   smallerbiggerrl   
normalisedrm   s           r   r    Precise.addd   s    ==ENN*!\\EMM9N>==99/3}}u~~/MumTXS`OG)9)99H DII,ABJ..0F6??33r   c                 f    [        UR                  * UR                  5      nU R                  U5      $ r   )r   r   r   r    )r   r"   negatives      r   r'   Precise.subo   s'    EMM>5>>:xx!!r   c                 T    [        [        U R                  5      U R                  5      $ r   )r   r=   r   r   r8   s    r   r=   Precise.abss   s    s4<<($--88r   c                 D    [        U R                  * U R                  5      $ r   )r   r   r   r8   s    r   r7   Precise.negv   s    }dmm44r   c                 :   [        U R                  * UR                  -   S5      nU R                  U R                  U-  -  n[        UR                  * U R                  -   S5      nUR                  U R                  U-  -  nX5-  n[	        XdUR                  -   5      $ Nr   )rE   r   r   r   r   )r   r"   rationizerNumberatorrk   rationizerDenominatordenominatorrm   s          r   r3   Precise.mody   s    "DMM>ENN#BAFLLDII1E$EF	 #U^^Odmm$CQ Gmmtyy4I'IJ(vu~~EFFr   c                 ^    U R                   UR                   -  n[        X R                  5      $ r   rc   rd   s      r   ornPrecise.orn   s#    5~}}55r   c                 6    U R                  U5      (       a  U $ U$ r   rI   r!   s     r   rA   Precise.min       wwu~~t050r   c                 6    U R                  U5      (       a  U $ U$ r   rS   r!   s     r   rE   Precise.max   r   r   c                 B    U R                  U5      nUR                  S:  $ r|   r'   r   r   r"   r    s      r   rT   
Precise.gt   s    hhuo{{Qr   c                 B    U R                  U5      nUR                  S:  $ r|   r   r   s      r   rY   
Precise.ge   s    hhuo{{ar   c                 $    UR                  U 5      $ r   rS   r!   s     r   rJ   
Precise.lt       xx~r   c                 $    UR                  U 5      $ r   rX   r!   s     r   rO   
Precise.le   r   r   c                     [        U R                  5      n[        U5      S-
  nUS:X  a  US:X  a  SU l        U $ [	        USS5       H  nX   S:w  d  M    O   UW-
  nUS:X  a  U $ U =R                  U-  sl        [        US US-    5      U l        g )Nr
   r   0r	   )r^   r   r   r   ranger   )r   stringstarti
differences        r   reducePrecise.reduce   s    T\\"FaA:} !Kub"%AyC & QY
?K#6&1q5>*r   c                     U R                  5         UR                  5         U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r   r   r   r!   s     r   r_   Precise.equals   s9    }}.P4<<5==3PPr   c                    U R                  5         U R                  S:  a  SOSn[        [        [	        U R                  5      5      R                  U R                  S5      5      n[        U5      U R                  -
  nUS:X  a  SnO6U R                  S:  a  SU R                  * -  nOU R                  S:X  a  SnOSnUR                  X45        USR                  U5      -   $ )Nr   -r   r   z0.r   )
r   r   listr^   r=   rjustr   r   insertjoin)r   signinteger_arrayindexitems        r   __str__Precise.__str__   s    llQ&sBST\\!2399$--MNM"T]]2A:D]]Q4==.)D]]aDDU)bggm,,,r   c                 $    S[        U 5      -   S-   $ )NzPrecise())r^   r8   s    r   __repr__Precise.__repr__   s    CI%++r   c                 *    [        [        U 5      5      $ r   )floatr^   r8   s    r   	__float__Precise.__float__   s    SYr   c                 h    U b  Uc  g [        [        U 5      R                  [        U5      5      5      $ r   )r^   r   r+   string1string2s     r   
string_mulPrecise.string_mul   .    ?go77#''(89::r   c                     U b  Uc  g [        U5      nUR                  S:X  a  g [        [        U 5      R                  X25      5      $ r|   )r   r   r^   r/   )r   r   ri   string2_precises       r   
string_divPrecise.string_div   sD    ?go!'*""a'77#''CDDr   c                 |    U c  Uc  g U c  U$ Uc  U $ [        [        U 5      R                  [        U5      5      5      $ r   )r^   r   r    r   s     r   
string_addPrecise.string_add   sB    ?w?N_N77#''(89::r   c                 h    U b  Uc  g [        [        U 5      R                  [        U5      5      5      $ r   )r^   r   r'   r   s     r   
string_subPrecise.string_sub   r   r   c                 N    U c  g [        [        U 5      R                  5       5      $ r   )r^   r   r=   r   s    r   
string_absPrecise.string_abs   "    >76?&&())r   c                 N    U c  g [        [        U 5      R                  5       5      $ r   )r^   r   r7   r   s    r   
string_negPrecise.string_neg   r   r   c                 h    U b  Uc  g [        [        U 5      R                  [        U5      5      5      $ r   )r^   r   r3   r   s     r   
string_modPrecise.string_mod   r   r   c                 h    U b  Uc  g [        [        U 5      R                  [        U5      5      5      $ r   )r^   r   r   r   s     r   	string_orPrecise.string_or   r   r   c                 V    U b  Uc  g [        U 5      R                  [        U5      5      $ r   r   r_   r   s     r   string_equalsPrecise.string_equals   )    ?gow&&ww'788r   c                 V    U b  Uc  g [        U 5      R                  [        U5      5      $ r   r   r   s     r   	string_eqPrecise.string_eq  r   r   c                 h    U b  Uc  g [        [        U 5      R                  [        U5      5      5      $ r   )r^   r   rA   r   s     r   
string_minPrecise.string_min  r   r   c                 h    U b  Uc  g [        [        U 5      R                  [        U5      5      5      $ r   )r^   r   rE   r   s     r   
string_maxPrecise.string_max  r   r   c                 V    U b  Uc  g [        U 5      R                  [        U5      5      $ r   )r   rT   r   s     r   	string_gtPrecise.string_gt  )    ?gow""77#344r   c                 V    U b  Uc  g [        U 5      R                  [        U5      5      $ r   )r   rY   r   s     r   	string_gePrecise.string_ge  r   r   c                 V    U b  Uc  g [        U 5      R                  [        U5      5      $ r   )r   rJ   r   s     r   	string_ltPrecise.string_lt  r   r   c                 V    U b  Uc  g [        U 5      R                  [        U5      5      $ r   )r   rO   r   s     r   	string_lePrecise.string_le%  r   r   )r   r   r   r   )   )8__name__
__module____qualname____firstlineno__r   r#   r(   r,   r0   r4   r9   r>   rB   rF   rK   rP   rU   rZ   r`   r+   r/   r    r'   r=   r7   r3   r   rA   rE   rT   rY   rJ   rO   r   r_   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__ r   r   r   r      s   ("G* 	4"95G611 + Q
- ,  ; ;
 E E ; ; ; ;
 * *
 * *
 ; ;
 ; ;
 9 9
 9 9
 ; ;
 ; ;
 5 5
 5 5
 5 5
 5 5r   r   N)r   r   r   r   <module>r      s   [5 [5r   