o
    ý°“iâ	  ã                   @   s"   d dl Z d dlZdgZdd„ ZdS )é    NÚget_permutations_24c              	      s”  g }t dƒD ]Z‰ g }ˆ d }|d }dD ]8}dˆ d  dˆ d  d dˆ d d  dˆ d d  d fD ]}| d| |d  d|d   d|  ¡ q4qt dƒD ]‰| ‡fd	d
„|D ƒ¡ qQqt |¡}| dkrrt g d¢¡}n| dkr~t g d¢¡}ntd | ¡ƒ‚| dt|ƒf¡d d …|f  	¡ }t
 |¡}g }	t dƒD ]‰ |	 ‡ fdd
„dD ƒ¡ q¡g }
t dƒD ]‰ |
 ‡ fdd
„dD ƒ¡ q¶||	|
fS )Né    é   é   )r   é   r   é   é   é   c                    s   g | ]}|d ˆ   ‘qS )r   © )Ú.0Úp)Újr
   ú\/home/ubuntu/.local/lib/python3.10/site-packages/compressed_tensors/utils/permutations_24.pyÚ
<listcomp>/   ó    z'get_permutations_24.<locals>.<listcomp>)r   r   r   é   r   é   é   é   )r   r   r   r   znum_bits must be 4 or 8, got {}éÿÿÿÿc                    s   g | ]}ˆ d  | ‘qS ©r	   r
   ©r   r   ©Úir
   r   r   =   r   )r   r   r   r   r   r   r   r   c                    s   g | ]}d ˆ  | ‘qS r   r
   r   r   r
   r   r   @   r   )r   r   r   r   r   r   r   r   )ÚrangeÚappendÚextendÚnumpyÚarrayÚ
ValueErrorÚformatÚreshapeÚlenÚravelÚtorchÚ
from_numpy)Únum_bitsÚ	perm_listÚperm1ÚcolÚcol_oÚblockÚrowÚpermÚ
interleaveÚ
scale_permÚscale_perm_singler
   )r   r   r   r       s>   
ü,úÿ
"

)r   r$   Ú__all__r   r
   r
   r
   r   Ú<module>   s   