o
    ?ß±iM  ã                   @   s†   d dl mZ dededeeef fdd„Zdededefdd„Zdededefd	d
„Zdededefdd„Zdededefdd„ZdS )é    )ÚTensorÚxÚyÚreturnc                 C   s–   | j }|j }t||ƒ}t|ƒD ]}| j| |j| ks"J d |¡ƒ‚q||k r7|  | jd||   ¡} | |fS ||k rG| |jd||   ¡}| |fS )NzDimensions not equal at axis {})é   )ÚndimÚminÚrangeÚshapeÚformatÚreshape)r   r   Zndims1Zndims2Zcommon_ndimsÚaxis© r   ú^/data/cameron/vidgen/cosmos-predict2.5/cosmos_predict2/_src/imaginaire/functional/batch_ops.pyÚcommon_broadcast   s   
$ýr   c                 C   s   t | |ƒ\} }| | S ©N©r   ©r   r   r   r   r   Ú	batch_add,   ó   r   c                 C   s   t | |ƒ\} }| | S r   r   r   r   r   r   Ú	batch_mul1   r   r   c                 C   s   t | |ƒ\} }| | S r   r   r   r   r   r   Ú	batch_sub6   r   r   c                 C   s   t | |ƒ\} }| | S r   r   r   r   r   r   Ú	batch_div;   r   r   N)Útorchr   Útupler   r   r   r   r   r   r   r   r   Ú<module>   s   