a
    <b(                     @   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sXJ t } t}t| \} }t| ||}t| |}|g dksJ dd |D g dksJ td} |  }t| d	d
 | |ksJ d S )N)r   r   r   r   c                 S   s   g | ]}t |d qS    round.0i r    h/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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   s   g | ]}t |d qS 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xZbakr    r    r!   test_LU_decompH   s$    

r3   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sJ |ddtdgksJ tt	|dddksJ g d}dd }g }g }	t
ddD ]Z}
||
} tt| |\}}}}t|}t|}|t	|d |	t	t| ||d qdd |D g dksVJ t	t|t|	 tdk svJ 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 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   r#   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"      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r2   r    r    r!   <lambda>   r#   z9test_householder.<locals>.hilbert_cmplx.<locals>.<lambda>r   )Zhilbertr-   applydiag)rD   r.   vr    r    r!   hilbert_cmplx   s
    ,z'test_householder.<locals>.hilbert_cmplxr   )mpdpsA8b8householderextendrC   mpfr   normrA   rB   residualinfr&   )r.   r/   Hr0   r2   rr1   rE   Z	residualsZrefresrD   rR   Zresiduals_cmplxZrefres_cmplxr    r    r!   test_householderc   sL    

 @r_   c                  C   s8   t d} t| \}}}t||  ||  ddk s4J d S )Nr   r   gV瞯<)r-   Zlur8   )r.   PLUr    r    r!   test_factorization   s    rc   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s`J t ttt
ttd ttdk sJ t ttt
ttd ttdk sJ t ttt
tt	d t	ddksJ t ttttttddk sJ t ttt
ttd tddk sJ d S )Ng|=      ?go   @r   r   g333333@)rZ   r[   A6lu_solveb6r\   A7b7rU   rV   Zqr_solveA10b10r    r    r    r!   
test_solve   s       $$$ rl   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 sLJ d S )	Nr   y               @r   y              @r   r   r   g|a2U?)rC   r?   rZ   r[   rf   )r.   r/   r    r    r!   test_solve_overdet_complex   s    rm   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!   rN      r#   ztest_singular.<locals>.<lambda>)rS   rT   reprzerospytestZraisesZeroDivisionError
ValueError)r.   Br/   r    r@   r!   test_singular   s    rv   c                  C   s`   t t tt g dg dg dgks0J t tt} t t t| tt jdks\J d S )N)r   r   r   )r   r   r   )r
   g      rd   r   )	fpZcholeskyrC   A9Zcholesky_solveb9rZ   r[   r\   rM   r    r    r!   test_cholesky   s    0rz   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sNJ t tdks^J tt tdksrJ t tddksJ d S )	Nr   r      i*  iC ir   r   )	detr4   r   r5   r%   r+   r6   re   rq   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s4J t| d	d tdksNJ t| d
d tdkshJ d S )Nr=   g6?gꕲq?ga2U0*?gBiq?c                 S   s
   t | dS )Nr   r8   rM   r    r    r!   rN      r#   ztest_cond.<locals>.<lambda>z327065209.73817754c                 S   s
   t | tS rn   )r8   r\   rM   r    r    r!   rN      r#   c                 S   s
   t | dS )NFr~   rM   r    r    r!   rN      r#   z249729266.80008656)rS   rT   rC   ZcondrY   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-   r8   r7   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 sTJ |d jdk sfJ |d	 jdk sxJ d
|d v sJ d|d v sJ d|d	 v sJ 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   rG   r   r   giE'n@gFxlbO*g'ɮ@)rS   rT   ZivrC   rf   delta)ar/   cr    r    r!   test_interval_matrix   s    r   c                  C   s<   t d} t| }| jt| ks"J d| d< | jd u s8J d S )Nr   )r   r   )r-   r(   Z_LU)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 slJ d S )Nr   g#B;g@xDrH   r   r   i  gh㈵gh㈵>r   )r-   rf   improve_solutionrZ   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J qdt_d S )Nr   r=   r   r   c                 S   s   g | ]}t |qS r    )rK   )r   r2   r    r    r!   r"      r#   z!test_exp_pade.<locals>.<listcomp>g{Gz?r
   Zpade)method)rA   rS   rT   rP   absr-   r|   ZexpmrZ   r\   Zae)r   rT   extradmNZ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d
|d
 t   }td
|d
 t   }	tt||	}
tt	||	}t 
|
|}|rd}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sJ |dkrtt|
|j|  }||ksJ tt|
||j  }||ksJ |dkr(tt|
|j|   }||ksJ tt|
| |j  }||ks(J q(d S )Nr=   ir   r	   Fz0.0r   r   fullr   complexTreal)Zedpsz1.0E-11)rS   rT   rY   xrangeboolZnintZrandintrJ   rI   rC   ZmpcZqrrZ   r9   T	conjugate)ZlowlimitZuplimitZmaxmZflgZzerokZexdpsmodeZnum1Znum2r   rD   r.   Zdtyper?   r   valZval2QRZmaxnormZn1r    r    r!   test_qr  sV    
r   )2
__future__r   rr   ZmpmathZlibmpbackendr   rS   r(   r)   r*   rW   r   rC   r4   b1r5   b2r%   r'   r+   r,   r6   re   rg   rh   ri   rU   rV   rx   ry   rj   rk   r3   r<   r_   rc   rl   rm   rv   rz   r}   r   Zextradpsr   r   r   r   r   r   r    r    r    r!   <module>   s   7
		
