§
    �M§j  ã                   ót   — d dl Z d dl mZ d dlmZmZ  G d„ d¦  «        Z G d„ de j        j        ¦  «        ZdS )é    N)Únn)ÚCallableÚUnionc                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚLinearc                 ó   — |S ©N© ©ÚselfÚts     úFC:\Users\johnn\OneDrive\Documents\AI\models\z_image\unified_sampler.pyÚalpha_inzLinear.alpha_in   s   € Øˆó    c                 ó   — d|z
  S ©Né   r
   r   s     r   Úgamma_inzLinear.gamma_in
   s   € Ø�1‰uˆr   c                 ó   — dS r   r
   r   s     r   Úalpha_tozLinear.alpha_to   s   € Øˆqr   c                 ó   — dS )Néÿÿÿÿr
   r   s     r   Úgamma_tozLinear.gamma_to   s   € Øˆrr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r
   r   r   r   r      sP   € € € € € ðð ð ðð ð ðð ð ðð ð ð ð r   r   c                   óŒ   ‡ — e Zd ZdZˆ fd„Z	 d
deej        ef         de	j
        de	j
        dee	j
        df         fd„Zd	„ Zˆ xZS )ÚUnifiedSamplerz~
    UCGM-S: https://arxiv.org/abs/2505.07447
    Credit to https://github.com/LINs-lab/UCGM/blob/main/methodes/unigen.py
    c                 ó¦  •— t          ¦   «                              ¦   «          t          ¦   «         }|j        |j        c| _        | _        |j        |j        c| _        | _        |                      t          j        d¦  «        ¦  «         	                    ¦   «          
                    ¦   «         dk     r;d| _        | j        | j        c| _        | _        | j        | j        c| _        | _        d S |                      t          j        d¦  «        ¦  «         	                    ¦   «          
                    ¦   «         dk     r	d| _        d S t          d¦  «        ‚)Nr   g{®Gázt?r   z!Invalid Alpha and Gamma functions)ÚsuperÚ__init__r   r   r   r   r   ÚtorchÚtensorÚabsÚitemÚinteg_stÚ
ValueError)r   Ú	transportÚ	__class__s     €r   r!   zUnifiedSampler.__init__   s	  ø€ Ý‰Œ×ÒÑÔÐå‘H”Hˆ	Ø'0Ô'9¸9Ô;MÐ$ˆŒ�t”}Ø'0Ô'9¸9Ô;MÐ$ˆŒ�t”}à�=Š=�œ a™œÑ)Ô)×-Ò-Ñ/Ô/×4Ò4Ñ6Ô6¸Ò>Ð>ØˆDŒMØ+/¬=¸$¼-Ð(ˆDŒM˜4œ=Ø+/¬=¸$¼-Ð(ˆDŒM˜4œ=˜=˜=Ø�]Š]�5œ<¨™?œ?Ñ+Ô+×/Ò/Ñ1Ô1×6Ò6Ñ8Ô8¸5Ò@Ð@ØˆDŒMˆMˆMåÐ@ÑAÔAÐAr   NÚmodelÚx_tr   Úttc                 óº  — |                      ¦   «         }|                      |¦  «        |                      |¦  «        z  |                      |¦  «        |                      |¦  «        z  z
  }t          j        |                     d¦  «        |j        ¬¦  «        |                      ¦   «         z  }| j	        dk    r|nd|z
  }dd| j	        z
  z   ||f||dœ|¤Žz  }t          j
        |¦  «        }||                      |¦  «        z  ||                      |¦  «        z  z
  |z  }	||                      |¦  «        z  ||                      |¦  «        z  z
  |z  }
|
|	||fS )Nr   )Údevicer   r   )r   r,   )Úflattenr   r   r   r   r"   ÚonesÚsizer.   r&   r$   )r   r*   r+   r   r,   Úmodel_kwargsÚdentÚqÚF_tÚz_hatÚx_hats              r   ÚforwardzUnifiedSampler.forward*   sI  € ð �ZŠZ‰\Œ\ˆØ�}Š}˜QÑÔ $§-¢-°Ñ"2Ô"2Ñ2°T·]²]À1Ñ5EÔ5EÈÏÊÐVWÑHXÔHXÑ5XÑXˆÝŒJ�s—x’x ‘{”{¨3¬:Ð6Ñ6Ô6¸!¿º¹¼ÑFˆØ” !Ò#Ð#ˆAˆA¨¨Q©ˆØ�q˜4œ=Ñ(Ñ)¨E¨E°#Ð,R¸¸rÐ,RÐ,RÀ\Ð,RÐ,RÑRˆÝŒI�a‰LŒLˆØ�t—}’} QÑ'Ô'Ñ'¨#°·²¸aÑ0@Ô0@Ñ*@Ñ@ÀDÑHˆØ�t—}’} QÑ'Ô'Ñ'¨#°·²¸aÑ0@Ô0@Ñ*@Ñ@ÀDÑHˆØ�e˜S $Ð&Ð&r   c                 ó$   — dd||z  z
  |z  z
  |z  S r   r
   )r   r   ÚaÚbÚcs        r   Úkumaraswamy_transformz$UnifiedSampler.kumaraswamy_transform<   s   € Ø�Q˜˜A™‘X !‘OÑ#¨Ñ)Ð)r   r	   )r   r   r   Ú__doc__r!   r   r   ÚModuler   r"   ÚTensorr8   r=   Ú__classcell__)r)   s   @r   r   r      s¶   ø€ € € € € ðð ð
Bð Bð Bð Bð Bð* )-ð'ð 'à�R”Y Ð(Ô)ð'ð Œ\ð'ð Œ<ð	'ð
 �%”, Ð$Ô%ð'ð 'ð 'ð 'ð$*ð *ð *ð *ð *ð *ð *r   r   )r"   r   Útypingr   r   r   r?   r   r
   r   r   ú<module>rC      s˜   ðØ €€€Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ñ ô ð ð)*ð )*ð )*ð )*ð )*�U”X”_ñ )*ô )*ð )*ð )*ð )*r   