
    sh                         S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	  Sr
SrSrSrS	rS
rSrSr\S 5       r\S 5       r\S 5       r\S 5       rS r " S S\	5      r\S:X  a  \R2                  " 5         gg)    N)njit)register_jitable)TestCaseg{Gz?g333333?g:p?g[2ֿgh^_?gxN#gC)H?gQ63E?c                 &   SSS[         R                  " U 5      -  -   -  n[        [         R                  " SU -  U -  5      -  U[        U[
        U[        U[        U[        -  -   -  -   -  -   -  -   -  -  n[         R                  " U S:  SU-
  U5      $ N      ?gqq?g      r   )
npabsRSQRT2PIexpA1A2A3A4A5wheredKret_vals      q/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_blackscholes.py	cnd_arrayr      s    sY**+A"&&A..R!rAa2B;.?)?$@@AABDG88AE3='22    c                    SSS[         R                  " U 5      -  -   -  n[        [         R                  " SU -  U -  5      -  U[        U[
        U[        U[        U[        -  -   -  -   -  -   -  -   -  -  nU S:  a  SU-
  nU$ r   )	mathfabsr   r   r   r   r   r   r   r   s      r   cndr      s    sY1--.A$((4!8a<00R!rAa2B;.?)?$@@AABDG1u-Nr   c                 N   U nUnUnUnUn	[         R                  " U5      n
[         R                  " XV-  5      USU	-  U	-  -   U-  -   X-  -  nXU
-  -
  n[        U5      n[        U5      n[         R                  " U* U-  5      nX]-  Xo-  U-  -
  nXo-  SU-
  -  USU-
  -  -
  nUU4$ )N      ?r   )r	   sqrtlogr   r   )
stockPriceoptionStrikeoptionYearsRiskfree
VolatilitySXTRVsqrtTd1d2cndd1cndd2expRT
callResult	putResults                     r   blackscholes_arrayexprr4   )   s     	AAAAAGGAJE
&&-1sQw{?a/
/AI	>B	%iBbMEbMEFFQ37OE)ai%//JcEk*Q#+->>Iy  r   c                    UnUnUn	Un
Un[        [        U5      5       H  n[        R                  " X   5      n[        R                  " X|   X   -  5      U
SU-  U-  -   X   -  -   X-  -  nXU-  -
  n[        U5      n[        U5      n[        R                  " SU
-  X   -  5      nX|   U-  X   U-  U-  -
  X'   X   U-  SU-
  -  X|   SU-
  -  -
  X'   M     g )Nr   g      r   )rangelenr   r    r!   r   r   )r2   r3   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   ir,   r-   r.   r/   r0   r1   s                      r   blackscholes_scalarr9   >   s     	AAAAA3q6]		!$hhqtad{#q37Q;!$&>>19Me)^BB#'QT)*uu(<<
ue4qtsU{7KK	 r   c                     SU -
  U-  X-  -   $ )Nr    )rand_varlowhighs      r   	randfloatr?   R   s    (Nc!HO33r   c                        \ rS rSrS rS rSrg)TestBlackScholesV   c                    Sn[        U R                  R                  U5      SS5      n[        U R                  R                  U5      SS5      n[        U R                  R                  U5      SS5      nX#U[        [        4n[
        R                  " U6 u  pg[        U6 u  p[        R                  " Xh-
  5      n
U R                  U
R                  5       S5        g 	Ni  g      @g      >@r   g      Y@g      ?g      $@r   )r?   randomrandom_sampleRISKFREE
VOLATILITYr4   py_funcr	   r
   assertAlmostEqualmax)selfOPT_Nr"   r#   r$   argscallResultGoldputResultGoldcallResultNumbaputResultNumbadeltas              r   test_array_expr TestBlackScholes.test_array_exprW   s    t{{88?dK
 !:!:5!A3N 9 9% @$Mh
J(>(F(F(M%*@$*G'~78uyy{A.r   c                 n   Sn[         R                  " U5      n[         R                  " U5      n[         R                  " U5      n[         R                  " U5      n[        U R                  R	                  U5      SS5      n[        U R                  R	                  U5      SS5      n[        U R                  R	                  U5      SS5      nXgU[
        [        4n	[        R                  " X#/U	Q76   [        XE/U	Q76   [         R                  " X$-
  5      n
U R                  U
R                  5       S5        g rD   )r	   zerosr?   rE   rF   rG   rH   r9   rI   r
   rJ   rK   )rL   rM   rO   rP   rQ   rR   r"   r#   r$   rN   rS   s              r   test_scalarTestBlackScholes.test_scalarf   s    %((5/%t{{88?dK
 !:!:5!A3N 9 9% @$Mh
J##NIDIOCdC~78uyy{A.r   r;   N)__name__
__module____qualname____firstlineno__rT   rX   __static_attributes__r;   r   r   rA   rA   V   s    //r   rA   __main__)r   numpyr	   unittestnumbar   numba.extendingr   numba.tests.supportr   rG   rH   r   r   r   r   r   r   r   r   r4   r9   r?   rA   rZ   mainr;   r   r   <module>rf      s        , ( 
 - 3 3   ! !( M M&4#/x #/L zMMO r   