o
    lh(                     @   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g dg dg dgZg dZeg dg d	g d
g dgZg dZeg dg dg dg dg dgZg dZeg dg dg dg dg dgZg dZeg dg dg dgZeg dg dg dgZg dZed d!gd"d gd#d$ggZg d%Zeg d&g d'g d(g d)gZg d*Zeg d+g d,g d-gZg d.Zeg d/g d0g d1gZg d2Z d3d4 Z!d5d6 Z"d7d8 Z#d9d: Z$d;d< Z%d=d> Z&d?d@ Z'dAdB Z(dCdD Z)dEdF Z*e+dGdHdI Z,dJdK Z-dLdM Z.dNdO Z/dPdQ Z0dRdS Z1dS )T    )divisionN)*)         )   r   r   )r   r   r   )r         )r   r
   r   )r   r   r
   )r   r   r   )r   r   r	   )r   r   r   r
   )r   r   r
   r
   r   )r   r   r   r   r
   )r	   r   r   r   )r   r   r   	   i)r      r   r      )r   r   r   r   2   )gQx$@g=
ףp=g        gQ롿gGz@)gNbX9gRQ?g(\@g(\B!gHzG?)gRQgQ?g rпgp=
ף"@gE)g)\#@g(\@g     @1g;On?g\(8@)gQ"g33333sA@gp=
ףS@gQ?g33333sP@)gfffff!@g
ףp=4@gGz@ffffff@gףp=
7M@)r   r   r   )r   r   r   )r   r   i)g	?gZB>@gr3܀o@)gsFZ*o@g#GGge,i9@)g}.AgR#@g(~Ƅ.)g     7@gQ/gQ@r   g      r   r   r   )r   r   r   )r   r   r   )r
   r   r   )r
   r   r
   )r   r   r
   )r   r   r   r	   )r	   r   r   )r   r   r   )r   r   g      @)
      g      /)      ?      ?       @r   )g      @g      @g      @)g      @g       @g      "@)      ?r   r   c                  C   s   t  } t}t| \} }t| ||}t| |}|g dksJ dd |D g dks,J t } t}t| \} }t| ||}t| |}|g dksKJ dd |D g dksXJ td} |  }t| d	d
 | |kslJ d S )N)r   r   r   r   c                 S      g | ]}t |d qS    round.0i r!   l/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/tests/test_linalg.py
<listcomp>O       z"test_LU_decomp.<locals>.<listcomp>)g-P@grhA@g(mUg^ \^v@g+6CV@)r   r   r	   r   c                 S   r   r   r   r   r!   r!   r"   r#   W   r$   )gw]@g_DP@gIϘ}X?gRxgE9r   r   )	overwrite)	A3copyb3	LU_decompL_solveU_solveA4b4
randmatrix)Abpyxbakr!   r!   r"   test_LU_decompH   s$   

r5   c                  C   s<   t ttfD ]} t| }t| | t| j ddk sJ qd S )Nr   g+=)A1A2A5inversemnormeyerows)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sGJ |ddtdgksRJ tt	|dddks^J g d}dd }g }g }	t
ddD ]-}
||
} tt| |\}}}}t|}t|}|t	|d |	t	t| ||d qodd |D g dksJ t	t|t|	 tdk sJ dd }g }g }t
ddD ]6}
||
} t|  \}}}}|t	|d |t	t| d d d |
d  f || d d |
d  f d qt	t|t| tdk sJ d S )!N   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!   rB   r"   coefft   s   $ztest_householder.<locals>.coeffr   c                 S   r   )r   r   )r   resr!   r!   r"   r#      r$   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r3   r!   r!   r"   <lambda>   s    z9test_householder.<locals>.hilbert_cmplx.<locals>.<lambda>r   )hilbertr.   applydiag)rF   r/   vr!   r!   r"   hilbert_cmplx   s
   ,z'test_householder.<locals>.hilbert_cmplxr   )mpdpsA8b8householderextendrE   mpfr   normrC   rD   residualinfr'   )r/   r0   Hr1   r3   rr2   rG   	residualsrefresrF   rU   residuals_cmplxrefres_cmplxr!   r!   r"   test_householderc   sL   

>$rf   c                  C   s8   t d} t| \}}}t||  ||  ddk sJ d S )Nr   r   gV瞯<)r.   lur:   )r/   PLUr!   r!   r"   test_factorization   s   "rk   c                   C   s  t tttttttdk sJ t tttttttdk s J t ttttt	t	tdks0J t ttt
ttd ttdk sBJ t ttt
ttd ttdk sTJ t ttt
tt	d t	ddksfJ t ttttttddk svJ t ttt
ttd tddk sJ d S )Ng|=      ?go   @r   r   g333333@)r]   r^   A6lu_solveb6r_   A7b7rX   rY   qr_solveA10b10r!   r!   r!   r"   
test_solve   s      $$$ (ru   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 s&J d S )	Nr   y               @r   y              @r   r   r   g|a2U?)rE   rA   r]   r^   rn   )r/   r0   r!   r!   r"   test_solve_overdet_complex   s   "rv   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 q+d S )Nr?   r   g333333?g?g?r   r   zlu_solve(%s, %s)zqr_solve(%s, %s)c                      s   t  S N)evalr!   rB   r!   r"   rP      s    ztest_singular.<locals>.<lambda>)rV   rW   reprzerospytestraisesZeroDivisionError
ValueError)r/   Br0   r!   rB   r"   test_singular   s   r   c                  C   s`   t t tt g dg dg dgksJ t tt} t t t| tt jdks.J d S )N)r   r   r   )r   r   r   )r
   g      rl   r   )	fpcholeskyrE   A9cholesky_solveb9r]   r^   r_   rO   r!   r!   r"   test_cholesky   s   0$r   c                   C   s   t tdksJ tt tddksJ tt tdksJ tt tdks'J t tdks/J tt tdks9J t tddksCJ d S )	Nr   r      i*  iC ir   r   )	detr6   r   r7   r&   r,   r8   rm   rz   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sJ t| d	d tdks'J t| d
d tdks4J d S )Nr?   g6?gꕲq?ga2U0*?gBiq?c                 S   
   t | dS )Nr   r:   rO   r!   r!   r"   rP         
 ztest_cond.<locals>.<lambda>z327065209.73817754c                 S   s
   t | tS rw   )r:   r_   rO   r!   r!   r"   rP      r   c                 S   r   )NFr   rO   r!   r!   r"   rP      r   z249729266.80008656)rV   rW   rE   condr\   r/   r!   r!   r"   	test_cond   s
   r   r   c                  C   s,   t dd} ttt| |  ddk sJ d S )Nr   r   gj7֖6)r.   r:   r9   r   r!   r!   r"   test_precision   s   
"r   c                  C   s   dt _dt_tg dg dg dg} tg d}t| |}|d jdk s*J |d jdk s3J |d	 jdk s<J d
|d v sDJ d|d v sLJ d|d	 v sTJ d S )Nr?   )z0.1z0.3z1.0)z7.1z5.5z4.8)z3.2z4.4z5.6)4z0.6z0.5r   rI   r   r   giE'n@gFxlbO*g'ɮ@)rV   rW   ivrE   rn   delta)ar0   cr!   r!   r"   test_interval_matrix   s   r   c                  C   s<   t d} t| }| jt| ksJ d| d< | jd u sJ d S )Nr   )r   r   )r.   r)   _LU)r/   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 s6J d S )Nr   g#B;g@xDrJ   r   r   i  gh㈵gh㈵>r   )r.   rn   improve_solutionr]   r^   )r/   r0   x1x2r!   r!   r"   test_improve_solution   s
   ,r   c                  C   s   t dD ]j} d}d}|| t_d}d}t d|d }t|}tdd |D }t|dk r;t|}t|}t|dk s-|| }|d | | }	|d | | }
|t_t|	d	d
}|| t_|
| }|t_t|t	
dsnJ qdt_d S )Nr   r?   r   r   c                 S   s   g | ]}t |qS r!   )rM   )r   r3   r!   r!   r"   r#      s    z!test_exp_pade.<locals>.<listcomp>g{Gz?r
   pade)method)rC   rV   rW   rS   absr.   r   expmr]   r_   ae)r    rW   extradmNdgr   expam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 
|
|}|rxd}d}td|D ])}td|
D ]!}t| ||  t   }t| ||  t   }t|||||f< qTqMn'd}d}td|D ]}td|
D ]}t| ||  t   }t||||f< qqt|||d\}}td}t|||  }||ksJ |dkrtt|
|j|  }||ksJ tt|
||j  }||ksJ |dkrtt|
|j|   }||ksJ tt|
| |j  }||ksJ qd S )Nr?   ir   r	   Fz0.0r   r   fullr   complexTreal)edpsz1.0E-11)rV   rW   r\   xrangeboolnintrandintrL   rK   rE   mpcqrr]   r;   T	conjugate)lowlimituplimitmaxmflgzerokexdpsmodenum1num2r   rF   r/   dtyperA   r    valval2QRmaxnormn1r!   r!   r"   test_qr  s`   
r   )2
__future__r   r{   mpmathlibmpbackendr   rV   r)   r*   r+   rZ   r   rE   r6   b1r7   b2r&   r(   r,   r-   r8   rm   ro   rp   rq   rX   rY   r   r   rs   rt   r5   r>   rf   rk   ru   rv   r   r   r   r   extradpsr   r   r   r   r   r   r!   r!   r!   r"   <module>   s   7
		
