
    bi#                     r    d dl Z d dlmZ d dlZd dlZd dlmZ d dlZej                  d        Z
d Zd Zd Zy)    N)SimpleNamespace)sparsec                 v    t               }dddddddddd|d	|_        t        j                  | 
      |_        |S )NFgh㈵>gV瞯<gư>   i	        )verboseeps_abseps_releps_prim_infeps_dual_infscalingmax_iter	polishingcheck_terminationpolish_refine_itersolver_type)algebra)r   optsosqpOSQPmodel)r   r   atolrtoldecimal_tolnss         ]/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/osqp/tests/dual_infeasibility_test.pyselfr   
   sK    		B"BG yy)BHI    c           	         t        j                  d      | _        t        j                  ddg      | _        t        j                  dd      | _        t        j                  ddg      | _        t        j                  t        j                  t        j                  g      | _
         | j                  j                  d| j                  | j
                  | j                  | j                  | j                  d| j                   | j                  j                         }|j                  j                   | j                  j#                  d      k(  sJ |j$                  t        j&                  j)                  |j$                        z  }t        j*                  t,        j.                  j1                  t,        j.                  j3                  t4              d	d
            d   }t        j6                  ||      sJ y )N   r"   r"   cscformat        PqAluOSQP_DUAL_INFEASIBLE	solutionstest_dual_infeasibility.npz#lp_normalized_dual_inf_cert_correct )r   
csc_matrixr)   nparrayr*   eyer+   r,   infr-   r   setupr   solveinfo
status_valconstantdual_inf_certlinalgnormloadospathjoindirname__file__allcloser   resnormalized_dual_inf_cert normalized_dual_inf_cert_corrects       r   test_dual_infeasible_lprK      sX   v&DFXXq"gDFZZ%(DFXXsCj!DFXXrvvrvv&'DFDJJStvv466TVVtvvSS **


C88$**"5"56L"MMMM"00299>>#BSBS3TT')ww
RWW__X.=Z[(+(-$ ;;/1QRRRr   c           	         t        j                  ddgd      | _        t        j                  ddg      | _        t        j                  ddgddgg      | _        t        j                  t        j                   t        j                   g      | _	        t        j                  d	d
g      | _
         | j                  j                  d| j                  | j
                  | j                  | j                  | j                  d| j                   | j                  j                         }|j                  j                   | j                  j#                  d      k(  sJ |j$                  t        j&                  j)                  |j$                        z  }t        j*                  t,        j.                  j1                  t,        j.                  j3                  t4              dd            d   }t        j6                  ||      sJ y )Ng      @r'   r$   r%   r   r"         ?      g       @g      @r(   r.   r/   r0   #qp_normalized_dual_inf_cert_correctr2   )r   diagsr)   r4   r5   r*   r3   r+   r7   r,   r-   r   r8   r   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   s       r   test_dual_infeasible_qprQ   5   sm   \\3*U3DFXXq!fDFc
T3K89DFXXw()DFXXsCj!DFDJJStvv466TVVtvvSS **


C88$**"5"56L"MMMM"00299>>#BSBS3TT')ww
RWW__X.=Z[(+(-$ ;;/1QRRRr   c           	         d| _         d| _        t        j                  d      | _        t        j                  ddg      | _        t        j                  ddgddgddgddgg      | _        t        j                  g d      | _	        t
        j                  t        j                  | j                        z  | _         | j                  j                  d| j                  | j                  | j                  | j                  | j                  d| j                   d	t        j                  | j                         z  }d
t        j                  | j                        z  }| j                  j!                  ||       | j                  j#                         }|j$                  j&                  | j                  j)                  d      | j                  j)                  d      fv sJ y )Nr"   r   r!   rN   rM   r'   )rM   rM   r'   r'   r(   g      9@g       )xyOSQP_PRIMAL_INFEASIBLEr.   r2   )nmr   r3   r)   r4   r5   r*   r+   r,   r7   onesr-   r   r8   r   
warm_startr9   r:   r;   r<   )r   x0y0rH   s       r   'test_primal_and_dual_infeasible_problemr\   K   sj   DFDFv&DFXXtTl#DFddC[3*sCjQRDFXX*+DFVVbggdffo%DFDJJStvv466TVVtvvSS 
	B		BJJB"% **


C88

45

23#   r   )rA   typesr   r   numpyr4   scipyr   pytestfixturer   rK   rQ   r\   r2   r   r   <module>rb      s@    	 !      (S,S,r   