U
    9%e(                  
   @   s  d dl mZ d dlZd dlT ejjZejZej	Z	ej
Z
ejZejZedddgdddgdddggZddd	gZedd
d
dgdddd
gddddgdd d	dggZdddd
gZedd d
d
d gd ddd d
gd	ddd d gd d dddgd dd d dggZd d d d dgZedddddgdddddgddd d!d"gd#d$d%d&d'gd(d)d*d+d,ggZd-d.d/d0d1gZedddgdddgddd2ggZed3d4d5gd6d7d8gd9d:d;ggZd<d=d>gZedd?gddgddggZdddgZedddgd
d dgd
dd
gdd d
ggZdddd	gZed	ddgdddgddd@ggZdAdBdCgZedDdEdEgdFdGdHgdIdJdKggZdLdDdLgZ dMdN Z!dOdP Z"dQdR Z#dSdT Z$dUdV Z%dWdX Z&dYdZ Z'd[d\ Z(d]d^ Z)d_d` Z*e+ddadb Z,dcdd Z-dedf Z.dgdh Z/didj Z0dkdl Z1dS )m    )divisionN)*                  	   i      2   gQx$@g=
ףp=g        gQ롿gGz@gNbX9gRQ?g(\@g(\B!gHzG?gRQgQ?g rпgp=
ף"@gEg)\#@g(\@g     @1g;On?g\(8@gQ"g33333sA@gp=
ףS@gQ?g33333sP@gfffff!@g
ףp=4@gGz@ffffff@gףp=
7M@ig	?gZB>@gr3܀o@gsFZ*o@g#GGge,i9@g}.AgR#@g(~Ƅ.g     7@gQ/gQ@g      g      @
      g      /y      ?      ?g       @g      @g      @g      @g      @g       @g      "@      ?c                  C   s   t  } t}t| \} }t| ||}t| |}|ddddgksBtdd |D dddd	d
gksbtt } t}t| \} }t| ||}t| |}|ddddgkstdd |D dddddgkstt	d} |  }t| dd | |kstd S )Nr   r   r   c                 S   s   g | ]}t |d qS    round.0i r   W/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/mpmath/tests/test_linalg.py
<listcomp>O   s     z"test_LU_decomp.<locals>.<listcomp>g-P@grhA@g(mUg^ \^v@g+6CV@r   r	   c                 S   s   g | ]}t |d qS r   r   r   r   r   r   r    W   s     gw]@g_DP@gIϘ}X?gRxgE9)	overwrite)
A3copyb3	LU_decompL_solveU_solveAssertionErrorA4b4
randmatrix)AbpyxZbakr   r   r   test_LU_decompH   s4    
  

  
r1   c                  C   s<   t ttfD ],} t| }t| | t| j ddk s
tq
d S )Nr   g+=)A1A2A5inversemnormeyerowsr(   )r,   invr   r   r   test_inverse^   s    r:   c                  C   s>  dt _tt } }tt| |\}}}}|ttdtdtddgdtdtdtd	gdtd
tdtdgdtdtdtdggkst|ddtdgkstt	t
|dddkstddddddddddd d!g}d"d# }g }g }	tdd$D ]Z}
||
} tt| |\}}}}t|}t|}|t
|d |	t
t| ||d qd%d& |D d'd(d)d*d+gksptt
t|t|	 td,k std-d. }g }g }tddD ]n}
||
} t|  \}}}}|t
|d |t
t| d d d |
d/ f || d d |
d/ f d qt
t|t| td,k s:td S )0N   z3.0z-2.0z-1.0r   g      z3.333333333333333z-2.9999999999999991z2.0z-0.66666666666666674z2.8142135623730948z-2.8284271247461898r   z-1.3333333333333333z-0.20000000000000018z4.2426406871192857r   z-1.4142135623730949r   r   gv@gJ+Y@gy&1,M@g%C;B@g(\O8@g1Z1@gn(@gMb"@g(\@gq=
ףp@gʡE@gy&1,@g/$@c                    s>   g }t ddD ]& | fddt d| d D  qt|S )Nr      c                    s   g | ]}d  | d  qS )r   r   r   )r   jr   r   r   r    x   s     z3test_householder.<locals>.coeff.<locals>.<listcomp>)rangeappendmatrix)nr,   r   r>   r   coefft   s    $ztest_householder.<locals>.coeffr   c                 S   s   g | ]}t |d qS )r   r   )r   resr   r   r   r       s     z$test_householder.<locals>.<listcomp>gRmX.@g8hi\?g5Żڌ^?g?g A8C?vIh%<=c                 S   s`   t d|  | }td|  dddd}|dd }t|d d df | t|d | df  }|S )Nr   r
   r   minmaxc                 S   s   t dt  |  S )Ny              ?)exppir0   r   r   r   <lambda>       z9test_householder.<locals>.hilbert_cmplx.<locals>.<lambda>r   )Zhilbertr+   applydiag)rB   r,   vr   r   r   hilbert_cmplx   s
    ,z'test_householder.<locals>.hilbert_cmplxr   )mpdpsA8b8householderextendrA   mpfr(   r   normr?   r@   residualinfr#   )r,   r-   Hr.   r0   rr/   rC   Z	residualsZrefresrB   rQ   Zresiduals_cmplxZrefres_cmplxr   r   r   test_householderc   s^    

     @r^   c                  C   s8   t d} t| \}}}t||  ||  ddk s4td S )Nr   r   gV瞯<)r+   Zlur6   r(   )r,   PLUr   r   r   test_factorization   s    rb   c                   C   s  t tttttttdk s tt tttttttdk s@tt tt	tt	t
t
tdks`tt tttttd ttdk stt tttttd ttdk stt tt	tt	t
d t
ddkstt ttttttddk stt tttttd tddk std S )Ng|=      ?go   @r   r   g333333@)rY   rZ   A6lu_solveb6r[   r(   A7b7rT   rU   Zqr_solveA10b10r   r   r   r   
test_solve   s       $$$ rk   c                  C   sP   t ddgddgddgg} t dt dt g}tt| t| ||dk sLtd S )	Nr   y               @r   y              @r   r   r   g|a2U?)rA   r=   rY   rZ   re   r(   )r,   r-   r   r   r   test_solve_overdet_complex   s    rl   c                     sx   dt _ddgddgg} ttd}ddg}d| |f d||f d	| |f d	||f fD ] tttf fd
d qVd S )Nr;   r   g333333?g?g?r   r   zlu_solve(%s, %s)zqr_solve(%s, %s)c                      s   t  S N)evalr   r>   r   r   rL      rM   ztest_singular.<locals>.<lambda>)rR   rS   reprzerospytestZraisesZeroDivisionError
ValueError)r,   Br-   r   r>   r   test_singular   s    
 
ru   c                  C   sf   t t tt dddgdddgdddggks6tt tt} t t t| tt j	dksbtd S )Nr   r   r   r
   g      rc   )
fpZcholeskyrA   A9r(   Zcholesky_solveb9rY   rZ   r[   rK   r   r   r   test_cholesky   s    6ry   c                   C   s   t tdksttt tddks&ttt tdks:ttt tdksNtt tdks^ttt tdksrtt t	ddkstd S )	Nr   r      i*  iC ir   r   )
detr2   r(   r   r3   r"   r)   r4   rd   rp   r   r   r   r   test_det   s    r|   c                  C   sl   dt _tddgddgg} t| dd tdks4tt| d	d tdksNtt| d
d tdkshtd S )Nr;   g6?gꕲq?ga2U0*?gBiq?c                 S   s
   t | dS )Nr   r6   rK   r   r   r   rL      rM   ztest_cond.<locals>.<lambda>z327065209.73817754c                 S   s
   t | tS rm   )r6   r[   rK   r   r   r   rL      rM   c                 S   s
   t | dS )NFr}   rK   r   r   r   rL      rM   z249729266.80008656)rR   rS   rA   ZcondrX   r(   r,   r   r   r   	test_cond   s
    r   c                  C   s,   t dd} ttt| |  ddk s(td S )Nr   r   gj7֖6)r+   r6   r5   r(   r   r   r   r   test_precision   s    
r   c                  C   s   dt _dt_tdddgdddgdd	d
gg} tdddg}t| |}|d jdk s\t|d jdk snt|d jdk std|d kstd|d kstd|d kstd S )Nr;   z0.1z0.3z1.0z7.1z5.5z4.8z3.2z4.4z5.64z0.6z0.5r   rE   r   r   giE'n@gFxlbO*g'ɮ@)rR   rS   ZivrA   re   deltar(   )ar-   cr   r   r   test_interval_matrix   s    "r   c                  C   s<   t d} t| }| jt| ks"td| d< | jd ks8td S )Nr   )r   r   )r+   r%   Z_LUr(   )r,   ZLUr   r   r   test_LU_cache   s
    r   c                  C   sp   t dddd} t ddddd}t| |t dddd	d }t| ||}tt| ||d
tt| ||d
k sltd S )Nr   g#B;g@xDrF   r   r   i  gh㈵gh㈵>r   )r+   re   improve_solutionrY   rZ   r(   )r,   r-   x1Zx2r   r   r   test_improve_solution   s
    r   c                  C   s   t dD ]} d}d}|| t_d}d}t d|d }t|}tdd |D }t|dk rlt|}t|}qN|| }|d | | }	|d | | }
|t_t|	d	d
}|| t_|
| }|t_t|t	
dstqdt_d S )Nr   r;   r   r   c                 S   s   g | ]}t |qS r   )rI   )r   r0   r   r   r   r       s     z!test_exp_pade.<locals>.<listcomp>g{Gz?r
   Zpade)method)r?   rR   rS   rO   absr+   r{   ZexpmrY   r[   Zaer(   )r   rS   extradmNdgr   ZexpamZa1e2e1dr   r   r   test_exp_pade   s,    


r   c                  C   s*  dt _d} d}d}d}td}tddD ]}d}d	}t|d
 }t|t  }t|t  }	tt||	}
tt	||	}t 
|
|}|rd}d}td|D ]R}td|
D ]B}t| ||  t   }t| ||  t   }t|||||f< qqnRd}d}td|D ]>}td|
D ],}t| ||  t   }t||||f< qqt|||d\}}td}t|||  }||ks|t|dkrtt|
|j|  }||ksttt|
||j  }||kst|dkr(tt|
|j|   }||ksttt|
| |j  }||ks(tq(d S )Nr;   ir   r	   Fz0.0r   r   fullr   complexTreal)Zedpsz1.0E-11)rR   rS   rX   xrangeboolZnintZrandintrH   rG   rA   ZmpcZqrrY   r(   r7   T	conjugate)ZlowlimitZuplimitZmaxmZflgzerokZexdpsmodeZnum1Znum2r   rB   r,   Zdtyper=   r   valZval2QRZmaxnormZn1r   r   r   test_qr  sV    
r   )2
__future__r   rq   ZmpmathZlibmpbackendr   rR   r%   r&   r'   rV   r   rA   r2   b1r3   b2r"   r$   r)   r*   r4   rd   rf   rg   rh   rT   rU   rw   rx   ri   rj   r1   r:   r^   rb   rk   rl   ru   ry   r|   r   Zextradpsr   r   r   r   r   r   r   r   r   r   <module>   s   













7
		
