
    sh                         S SK rS SKrS SKJrJrJr  S SKJr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 S\	5      r\S:X  a  \R.                  " 5         gg)    N)cudadoublevoid)unittestCUDATestCaseg{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      }/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_blackscholes.pycndr      s    sY**+A"&&A..R!rAa2B;.?)?$@@AABDG88AE3='22    c                 X   UnUnUn	Un
Un[         R                  " U	5      n[         R                  " Xx-  5      U
SU-  U-  -   U	-  -   X-  -  nXU-  -
  n[        U5      n[        U5      n[         R                  " U
* U	-  5      nX-  UU-  U-  -
  U S S & UU-  SU-
  -  USU-
  -  -
  US S & g )N      ?r
   )r   sqrtlogr   r   )
callResult	putResult
stockPriceoptionStrikeoptionYearsRiskfree
VolatilitySXTRVsqrtTd1d2cndd1cndd2expRTs                     r   black_scholesr2      s    AAAAAGGAJE
&&-1sQw{?a/
/AI	>B	%iBGEGEFFQ37OEYUU!22JqMIu-S5[0AAIaLr   c                     SU -
  U-  X-  -   $ )Nr
    )rand_varlowhighs      r   	randfloatr8   +   s    (Nc!HO33r   c                       \ rS rSrS rSrg)TestBlackScholes/   c                 D  ^ SnSn[        [        R                  R                  U5      SS5      n[        [        R                  R                  U5      SS5      n[        [        R                  R                  U5      SS5      n[        R                  " U5      n[        R                  " U5      * n[        R                  " U5      n[        R                  " U5      * n	[        U5       H  n
[        XgUXE[        [        5        M     [        R                  " [        [        5      S	S	S
9S 5       m[        R                  " [        [        S S  [        S S  [        S S  [        S S  [        S S  [        [        5      5      U4S j5       nSn[        [        R                  " [!        U5      US   -  5      5      S4n[        R"                  " 5       n[        R$                  " X5      n[        R$                  " X5      n[        R$                  " X>5      n[        R$                  " XN5      n[        R$                  " X^5      n[        U5       H  n
XX4   " UUUUU[        [        5        M     UR'                  X5        UR'                  X5        UR)                  5         [        R*                  " Xh-
  5      nUR-                  5       [        R*                  " U5      R-                  5       -  nUR/                  5       nU R1                  US:  5        U R1                  US:  5        g )Ni     g      @g      >@r
   g      Y@g      ?g      $@T)deviceinlinec                    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   cnd_cuda4TestBlackScholes.test_blackscholes.<locals>.cnd_cudaC   s    sY1556A$((4!8a<"88R!rAa2B;6G1G,H'H"IIJLG1u-Nr   c                 (  > [         R                  R                  [         R                  R                  [         R                  R                  -  -   nXrR
                  S   :  a  g [        R                  " XG   5      n[        R                  " X'   X7   -  5      USU-  U-  -   XG   -  -   Xh-  -  n	XU-  -
  n
T" U	5      nT" U
5      n[        R                  " SU-  XG   -  5      nX'   U-  X7   U-  U-  -
  X'   X7   U-  SU-
  -  X'   SU-
  -  -
  X'   g )Nr   r   g      r
   )
r   	threadIdxxblockIdxblockDimshaperA   r   r   r   )r    r!   r'   r(   r)   r*   r+   ir,   r-   r.   r/   r0   r1   rC   s                 r   black_scholes_cuda>TestBlackScholes.test_blackscholes.<locals>.black_scholes_cudaL   s       4==??T]]__#DDAGGAJIIadOE88AD14K(Aa!Oqt+CCY B%iBRLERLEHHcAg-.ETE\AD5L5,@@JMD5LC%K8143;;OOILr   )i      r   rN   gvIh%<=)r8   r   randomzerosonesranger2   RISKFREE
VOLATILITYr   jitr   r   intrA   ceilfloatstream	to_devicecopy_to_hostsynchronizer   summax
assertTrue)selfOPT_N
iterationsr"   r#   r$   callResultNumpyputResultNumpycallResultNumbaputResultNumbarK   rL   blockdimgriddimrY   d_callResultd_putResultd_stockPriced_optionStriked_optionYearsdeltaL1normmax_abs_errrC   s                          @r   test_blackscholes"TestBlackScholes.test_blackscholes0   sd   
ryy//6TB
 !1!1%!8#uE		 0 0 7tD((5/''%.((5/''%. z"A/:&XzK # 
&.d	;	 
<	 
$vay&)VAYq	6!9v' 
(	Q
(	Q  diiex{ :;<a?~~o>nn^<~~j9={;z"A89k<x5 # 	!!/:  889rvvo6::<<iik'e+,r   r4   N)__name__
__module____qualname____firstlineno__rq   __static_attributes__r4   r   r   r:   r:   /   s    D-r   r:   __main__)numpyr   rA   numbar   r   r   numba.cuda.testingr   r   rS   rT   r   r   r   r   r   r   r   r2   r8   r:   rs   mainr4   r   r   <module>r}      su      $ $ 5 
-3C$4E-| E-P zMMO r   