
    xf                     4   d dl Zd dlmZmZ d dlmZmZ d dlZd Z	d Z
d Zd Zej                  j                  d eg d	g d
g dg      d df eg d	g d
g dg      ddf eg d	g d
g dg      ddf eg dg dg dg      d dfg      d        Zd Zd Zy)    N)assert_array_almost_equalassert_)
csr_matrixhstackc                     || |f   }|| |f   }t        ||j                         d          t        t        |      t        u        y )Nr   )r   toarrayr   typer   )islXXcsrnp_slice	csr_slices         =/usr/lib/python3/dist-packages/scipy/sparse/tests/test_csr.py_check_csr_rowslicer      sE    BxHQUIh	(9(9(;A(>?DOz)*    c                  \   d} t         j                  j                  d       t         j                  j                  | | f      }d||dkD  <   t        |      }t	        d d d       t	        d d d      t	        ddd      t	        ddd      g}t        |       D ]  }|D ]  }t        ||||         y )N
   r   ffffff?      )nprandomseedr   sliceranger   )Nr   r   slicesr
   r   s         r   test_csr_rowslicer!      s    
AIINN1
		!Q AAa#gJa=DD$%D$#Ar1oB2 F
 1X 0 	0B2q$/	00r   c                  t   d} t         j                  j                  d       t         j                  j                  | | f      }d||dkD  <   t        |      }t	        |       D ]U  }|||dz   d d f   }|j                  |      }t        ||j                                t        t        |      t        u        W y Nr   r   r   r   )
r   r   r   r   r   getrowr   r   r   r	   )r   r   r   r
   arr_rowcsr_rows         r   test_csr_getrowr'      s    
AIINN1
		!Q AAa#gJa=D1X -Aa!eGQJ-++a.!'7??+<=W+,-r   c                  t   d} t         j                  j                  d       t         j                  j                  | | f      }d||dkD  <   t        |      }t	        |       D ]U  }|d d ||dz   f   }|j                  |      }t        ||j                                t        t        |      t        u        W y r#   )
r   r   r   r   r   getcolr   r   r   r	   )r   r   r   r
   arr_colcsr_cols         r   test_csr_getcolr,   .   s    
AIINN1
		!Q AAa#gJa=D1X -AqQwJ-++a.!'7??+<=W+,-r   z"matrix_input, axis, expected_shape)r   r   r   r   )r   r   r   r   )r   r      r   )r      r   )r-   r   both)r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r-   r   )r      c                    | j                   j                  d   dz
  }|}|dz
  }|dk(  r?| ||d d f   j                   j                  }| ||d d f   j                   j                  }n|dk(  r?| d d ||f   j                   j                  }| d d ||f   j                   j                  }nC|dk(  r>| ||||f   j                   j                  }| ||||f   j                   j                  }|k(  sJ |k(  sJ y )Nr   r   r/   )Ashape)matrix_inputaxisexpected_shapeslice_1slice_2slice_3actual_shape_1actual_shape_2s           r   test_csr_empty_slicesr<   <   s   & nn""1%)GGkGqy%ggoq&89;;AA%ggoq&89;;AA	%a&89;;AA%a&89;;AA	%ggoww&FGIIOO%ggoww&FGIIOO^+++^+++r   c                      t        g dg dg dg      } g d}t        j                  |      }g dg dg dg}t        j                  |      }g dg df}t        j                  |d         t        j                  |d         f}| |   j                         }| |   j                         }| |   }	| |   }
| |   }| |   }||k(  j	                         sJ |	|
k(  j	                         sJ ||k(  j	                         sJ y )N)r   r   r   )r-   r.   r0   )         )FTFr   r   )r   r   arrayr   all)datalist_indices1array_indices1list_indices2array_indices2list_indices3array_indices3slice_list1slice_array1slice_list2slice_array2slice_list3slice_array3s                r   test_csr_bool_indexingrP   a   s   y)Y78D(MXXm,N)+?AUVMXXm,N)+?@Mhh}Q/0"((=;K2LMN}%--/K'//1L}%K'L}%K'L<',,...<',,...<',,...r   c                     t        j                  t         j                        j                  } dg}dg}| dz
  }d}|dz
  g}|dz
  g}t	        |||ff      }t	        |||ff      }t        |dz
  |dz
        | k  sJ |j
                  j                  |j                  j                  cxk(  rt         j                  k(  sJ  J |j
                  j                  |j                  j                  cxk(  rt         j                  k(  sJ  J t        ||gd      }	|	j
                  j                         ||z   dz
  k(  sJ ||z   dz
  | kD  sJ |	j
                  j                  |	j                  j                  cxk(  rt         j                  k(  sJ  J t	        |j                        }
t	        |j                        }t        |
|gd      }|j                  |	j                  k(  sJ |j
                  j                  t         j                  k(  sJ | |z
  dz
  g}t	        |||ff      }t        ||gd      }|j
                  j                  t         j                  k(  sJ |j
                  j                         | dz
  k(  sJ y)z
    Tests if hstack properly promotes to indices and indptr arrays to np.int64
    when using np.int32 during concatenation would result in either array
    overflowing.
    g      ?r   r   r-   csr)formatN)r   iinfoint32maxr   indicesdtypeindptrr   int64r3   )	max_int32rC   rowmax_indices_1max_indices_2col_1col_2X_1X_2X_hs	X_1_empty	X_2_empty
X_hs_emptycol_3X_3X_hs_32s                   r   test_csr_hstack_int64rj   t   sT    "&&I 5D#CMMM QEQE
dS%L)
*C
dS%L)
*C}q -!"34y@@@;;

 0 0<BHH<<<<<;;

 0 0<BHH<<<<< 3*U+D<<!>!BBBB=(1,y888<<!2!2>bhh>>>>> 399%I399%II.u=Jtzz)))##rxx/// &*+E
dS%L)
*Cc3Z.G??  BHH,,,?? IM111r   )numpyr   numpy.testingr   r   scipy.sparser   r   pytestr   r!   r'   r,   markparametrizer<   rP   rj    r   r   <module>rr      s     < + +0"-- =,   ,   ,  f /! " ",#",(/&52r   