a
    
d                     @   s^   d dl Z d dlmZ ddlmZ G dd dZddd	ZdddZdd Zdd Z	dd Z
dS )    N)	integrate   )append_dimsc                   @   s   e Zd Zdd ZdS )NoDynamicThresholdingc                 C   s   ||||   S N )selfZuncondcondscaler   r   r/var/www/html/stable-diffusion-webui/repositories/generative-models/sgm/modules/diffusionmodules/sampling_utils.py__call__   s    zNoDynamicThresholding.__call__N)__name__
__module____qualname__r   r   r   r   r   r      s   r   -C6?c                    sT   d  kr t d d   fdd}tj|   d  |dd S )N   zOrder z too high for step c                    sL   d}t D ]:}|krq||  |       |    9 }q|S )N      ?)range)tauprodkijordertr   r   fn   s    .z"linear_multistep_coeff.<locals>.fn)epsrelr   )
ValueErrorr   quad)r   r   r   r   r   r   r   r   r   linear_multistep_coeff   s    r    r   c                 C   sX   |s|dfS t |||d | d |d   | d  d  }|d |d  d }||fS )Ng           g      ?)torchminimum)Z
sigma_fromZsigma_toetasigma_up
sigma_downr   r   r   get_ancestral_step   s    "r'   c                 C   s   | | t || j S r   )r   ndim)xsigmadenoisedr   r   r   to_d'   s    r,   c                 C   s   |    S r   )logneg)r*   r   r   r   to_neg_log_sigma+   s    r/   c                 C   s   |    S r   )r.   exp)Zneg_log_sigmar   r   r   to_sigma/   s    r1   )r   )r   )r"   scipyr   utilr   r   r    r'   r,   r/   r1   r   r   r   r   <module>   s   

