
    bi}                        d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ  eej                  ej                  eej                   ej"                  ej$                  ej&                  ej(                  ej*                  g	      Zd Zd	 Zy)
a+  
Copyright, the CVXPY authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
    N)atoms)AddExpression)DivExpression)Sum)NegExpressionc                     t               t        j                  k(  rd S t               t        j                  k(  rd S t               t        k(  rd S t               t        j
                  k(  rd S t               t        j                  k(  rd S t               t        j                  k(  rd S t               t        j                  k(  rd S t               t        j                  k(  r fd}|S t               t        j                  k(  rA j                  d	   j                         r j                  d	   n j                  d
   fdS t               t        k(  rE j                  d	   j                         r j                  d	   fdS  j                  d
   fdS t               t        k(  rA j                  d	   j                         r j                  d	   n j                  d
   fdS t               t        j                  k(  r@ j                  d	   }|j!                         rd S |j#                         rd S t%        d      t               t&        t        j(                  fv rd S t$        )Nc                 ,    t        j                  |       S N)r   floorts    \/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/cvxpy/reductions/dqcp2dcp/inverse.py<lambda>zinverse.<locals>.<lambda>#   s    Q     c                 ,    t        j                  |       S r
   )r   ceilr   s    r   r   zinverse.<locals>.<lambda>%   s    A r   c                     |  S r
    r   s    r   r   zinverse.<locals>.<lambda>'   s    ! r   c                 n    | j                         rt        j                  |       S t        j                   S r
   )	is_nonnegr   lognpinfr   s    r   r   zinverse.<locals>.<lambda>)   s     1 RVVG r   c                 ,    t        j                  |       S r
   r   expr   s    r   r   zinverse.<locals>.<lambda>+   s    1 r   c                 2    t        j                  |       dz
  S N   r   r   s    r   r   zinverse.<locals>.<lambda>-   s    1) r   c                     | j                         r+t        j                  t        j                  |       dz
        S t        j
                   S r   )r   r   r   r   r   r   r   s    r   r   zinverse.<locals>.<lambda>/   s.    599Q<!#34 BFF7 r   c                     j                   j                  dk(  r| S | j                         r-t        j                  | dj                   j                  z        S t
        j                  S r   )pvaluer   r   powerr   r   )r   exprs    r   	power_invzinverse.<locals>.power_inv1   sF    vv||q 56[[]5;;q!DFFLL.1NNr   r   r   c                     | z  S r
   r   r   consts    r   r   zinverse.<locals>.<lambda>;       U r   c                     | z  S r
   r   r(   s    r   r   zinverse.<locals>.<lambda>A       UQY r   c                     | z  S r
   r   r(   s    r   r   zinverse.<locals>.<lambda>E   r,   r   c                     | z
  S r
   r   r(   s    r   r   zinverse.<locals>.<lambda>K   r*   r   c                     | S r
   r   r   s    r   r   zinverse.<locals>.<lambda>O   s    Q r   c                     |  S r
   r   r   s    r   r   zinverse.<locals>.<lambda>Q   s    aR r   zSign of argument must be known.c                     | S r
   r   r   s    r   r   zinverse.<locals>.<lambda>U   s     r   )typer   r   r   r   r   r   log1plogisticr$   multiplyargsis_constantr   r   absr   	is_nonpos
ValueErrorr   cumsum)r%   r&   argr)   s   `  @r   inverser=   !   s   DzUZZ''	du{{	"&&	d}	$	duyy	 CC	duyy	 %%	du{{	"))	du~~	%RR	du{{	"	O 	du~~	%99Q<##%IIaLEIIaLE""	d}	$99Q<##%IIaLE&& IIaLE&&	d}	$99Q<##%IIaLEIIaLE""	duyy	 iil==?]]_>??	dU\\*	*r   c                 0   t        | t        j                        s t        | t              st        | t              rt        | j                               dk(  S t        | t        t        j                  f      r| j                         S t        |       t        v S r   )
isinstancer   r5   r   r   len_non_const_idxr   r;   _is_realr2   
INVERTIBLE)r%   s    r   
invertiblerD   Z   sj    4(Jt],Kt]+4&&()Q..	D3-	.}}DzZ''r   )__doc__numpyr   cvxpyr   cvxpy.atoms.affine.add_exprr   #cvxpy.atoms.affine.binary_operatorsr   cvxpy.atoms.affine.sumr   "cvxpy.atoms.affine.unary_operatorsr   setr   r   r   r   r3   r4   r$   r8   rC   r=   rD   r   r   r   <module>rM      sn      5 = & <
 
ZZmUYY		5;;
^^U[[%))-.
6r(r   