
    bi                         d dl mZ d dlZd dlmZ d dlZd dlmZ	 d dl
mZ d dlmZ ej                  d        Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)    )SimpleNamespaceN)sparse)OSQP)load_high_accuracyc                    t               }t        j                  ddgd      |_        t	        j
                  ddg      |_        t        j                  ddgddgdd	gd
dgddgg      |_        t	        j
                  g d      |_	        dt	        j                  t        |j                              z  |_        |j                  j                  d   |_        |j                  j                  d   |_        ddddddddd|d
|_        t#        |       |_         |j$                  j&                  d|j                  |j                  |j                  |j                  |j                  d|j                    ||_        ||_        ||_        |S )Ng      &@        cscformat      r         )r   r   id   P   g    .Fg&.>i	  g?   T)
verboseeps_abseps_relmax_iterrhoadaptive_rho	polishingcheck_terminationwarm_startingsolver_typealgebraPqAlu )r   r   diagsr"   nparrayr#   
csc_matrixr$   r&   oneslenr%   shapenmoptsr   modelsetupatolrtoldecimal_tol)r    r   r4   r5   r6   nss         P/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/osqp/tests/basic_test.pyselfr9   
   sB   		B<<sE2BD88QFBDr1g2wR1a&1a&IJBD88,-BD2773rtt9%%BD44::a=BD44::a=BD"BG G$BHBHHNNERTTRTTRTTRTTRTTERWWEBGBG BNI    c                    | j                   j                         }t        d      \  }}}t        j                  |j
                  || j                  | j                         t        j                  |j                  || j                  | j                         t        j                  |j                  j                  || j                         y )Ntest_basic_QPr5   r4   decimal)r2   solver   nptestassert_allclosexr5   r4   yassert_almost_equalinfoobj_valr6   )r9   resx_soly_solobj_sols        r8   r<   r<   (   s    
**


C.?E5'
355%diidiiH
355%diidiiH
sxx//$BRBRSr:   c                    t        j                  ddg      }| j                  j                  |       | j                  j	                         }t        d      \  }}}t        j                  |j                  || j                  | j                         t        j                  |j                  || j                  | j                         t        j                  |j                  j                  || j                         y )N
      )r#   test_update_qr=   r>   )r)   r*   r2   updater@   r   rA   rB   rC   r5   r4   rD   rE   rF   rG   r6   )r9   q_newrH   rI   rJ   rK   s         r8   rO   rO   1   s    HHb"XEJJ
**


C.?E5'
355%diidiiH
355%diidiiH
sxx//$BRBRSr:   c                    dt        j                  | j                        z  }| j                  j	                  |       | j                  j                         }t        d      \  }}}t        j                  |j                  || j                  | j                         t        j                  |j                  || j                  | j                         t        j                  |j                  j                  || j                          y )Ni)r%   test_update_lr=   r>   r)   r,   r0   r2   rP   r@   r   rA   rB   rC   r5   r4   rD   rE   rF   rG   r6   )r9   l_newrH   rI   rJ   rK   s         r8   rS   rS   =   s    "''$&&/!EJJ
**


C.?E5'
355%diidiiH
355%diidiiH
sxx//$BRBRSr:   c                    dt        j                  | j                        z  }| j                  j	                  |       | j                  j                         }t        d      \  }}}t        j                  |j                  || j                  | j                         t        j                  |j                  || j                  | j                         t        j                  |j                  j                  || j                          y )N  )r&   test_update_ur=   r>   rT   )r9   u_newrH   rI   rJ   rK   s         r8   rX   rX   I   s    277466?"EJJ
**


C.?E5'
355%diidiiH
355%diidiiH
sxx//$BRBRSr:   c                    dt        j                  | j                        z  }dt        j                  | j                        z  }| j                  j	                  ||       | j                  j                         }t        d      \  }}}| j                  j                  dk7  rt        j                  |j                  || j                  | j                         t        j                  |j                  || j                  | j                         t        j                  |j                  j                   || j"                         y |j                  j$                  | j                  j'                  d      k(  sJ y )	NirW   )r&   r%   test_update_boundscudar=   r>   OSQP_PRIMAL_INFEASIBLE)r)   r,   r0   r2   rP   r@   r   r    rA   rB   rC   r5   r4   rD   rE   rF   rG   r6   
status_valconstant)r9   rU   rY   rH   rI   rJ   rK   s          r8   r[   r[   U   s   277466?"E277466?"EJJ'
**


C./CDE5'zzV#suue$))$))Lsuue$))$))L""388#3#3WdFVFVWxx""djj&9&9:R&SSSSr:   c                     | j                   j                  d       | j                   j                         }|j                  j                  | j                   j                  d      k(  sJ y )Nr   )r   OSQP_MAX_ITER_REACHED)r2   update_settingsr@   rF   r^   r_   r9   rH   s     r8   test_update_max_iterrd   f   sQ    JJ+
**


C88$**"5"56M"NNNNr:   c                     | j                   j                  d       | j                   j                         }|j                  j                  | j
                  d   k(  sJ y )Nr   )r   r   )r2   rb   r@   rF   iterr1   rc   s     r8   test_update_check_terminationrg   m   sH    JJ3
**


C88==DIIj1111r:   c           	         | j                   j                         }| j                  j                         }d|d<   t	        | j                   j
                        } |j                  d| j                  | j                  | j                  | j                  | j                  d| |j                  | j                  d          |j                         }|j                  j                  |j                  j                  k(  sJ y )Ngffffff?r   r   r!   )r   r'   )r2   r@   r1   copyr   r    r3   r"   r#   r$   r%   r&   rb   rF   rf   )r9   res_defaultdefault_optsr2   res_updated_rhos        r8   test_update_rhorm   t   s    **""$K 99>>#LL++,EEKKQ$&&DFFdff$&&QLQ	dii./kkmO   O$8$8$=$====r:   c           	         | j                   j                         }t        j                  | j                  d      }t        | j                   j                        } |j                  d|| j                  | j                  | j                  | j                  d| j                   |j                         }t        j                  |j                  |j                  | j                   | j"                         t        j                  |j$                  |j$                  | j                   | j"                         t        j&                  |j(                  j*                  |j(                  j*                  | j,                         y )Nr	   r
   r   r!   r=   r>   r'   )r2   r@   r   triur"   r   r    r3   r#   r$   r%   r&   r1   rA   rB   rC   r5   r4   rD   rE   rF   rG   r6   )r9   rj   P_triur2   res_trius        r8   test_upper_triangular_Prr      s    **""$K [[.F ++,EEKKN&DFFdff$&&NDIIN{{}H
;==(**499499U
;==(**499499U
    r:   c                     t        j                  t              5  | j                  j	                  d       d d d        y # 1 sw Y   y xY w)N*   )foo)pytestraises
ValueErrorr2   rb   )r9   s    r8   test_update_invalidry      s8    	z	" +

""r"*+ + +s   A  A	)typesr   rv   scipyr   numpyr)   numpy.testingtestingrA   osqpr   osqp.tests.utilsr   fixturer9   r<   rO   rS   rX   r[   rd   rg   rm   rr   ry   r'   r:   r8   <module>r      sj    !      /  :T	T	T	TT"O2>(+r:   