




'''simple docstring'''





import gc
import unittest

from parameterized import parameterized

from diffusers import FlaxUNetaDConditionModel
from diffusers.utils import is_flax_available
from diffusers.utils.testing_utils import load_hf_numpy, require_flax, slow


if is_flax_available():
   import jax
   import jax.numpy as jnp

@slow
@require_flax
class        _a    (						unittest.TestCase							):






     def     _lowercase     (			self ,_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE   )							->      Dict:
          return f"""gaussian_noise_s={seed}_shape={'_'.join([str(_SCREAMING_SNAKE_CASE   ) for s in shape]   )}.npy"""






     def     _lowercase     (			self   )							->      Union[str, Any]:
          # clean up the VRAM after each test
          super().tearDown()
          gc.collect()






     def     _lowercase     (			self ,_SCREAMING_SNAKE_CASE=0 ,_SCREAMING_SNAKE_CASE=(4, 4, 64, 64) ,_SCREAMING_SNAKE_CASE=False   )							->      Tuple:
          _snake_case							=				jnp.bfloataa if fpaa else jnp.floataa
          _snake_case							=				jnp.array(load_hf_numpy(self.get_file_format(_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE   )   ) ,dtype=_SCREAMING_SNAKE_CASE   )
          return image






     def     _lowercase     (			self ,_SCREAMING_SNAKE_CASE=False ,_SCREAMING_SNAKE_CASE="CompVis/stable-diffusion-v1-4"   )							->      Any:
          _snake_case							=				jnp.bfloataa if fpaa else jnp.floataa
          _snake_case							=				"bf16" if fpaa else None

          _snake_case							, _snake_case							=				FlaxUNetaDConditionModel.from_pretrained(
              _SCREAMING_SNAKE_CASE ,subfolder="unet" ,dtype=_SCREAMING_SNAKE_CASE ,revision=_SCREAMING_SNAKE_CASE   )
          return model, params






     def     _lowercase     (			self ,_SCREAMING_SNAKE_CASE=0 ,_SCREAMING_SNAKE_CASE=(4, 77, 768) ,_SCREAMING_SNAKE_CASE=False   )							->      Any:
          _snake_case							=				jnp.bfloataa if fpaa else jnp.floataa
          _snake_case							=				jnp.array(load_hf_numpy(self.get_file_format(_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE   )   ) ,dtype=_SCREAMING_SNAKE_CASE   )
          return hidden_states






     @parameterized.expand(
         [
             # fmt: off
             [83, 4, [-0.2_3_2_3, -0.1_3_0_4, 0.0_8_1_3, -0.3_0_9_3, -0.0_9_1_9, -0.1_5_7_1, -0.1_1_2_5, -0.5_8_0_6]],
             [17, 0.5_5, [-0.0_8_3_1, -0.2_4_4_3, 0.0_9_0_1, -0.0_9_1_9, 0.3_3_9_6, 0.0_1_0_3, -0.3_7_4_3, 0.0_7_0_1]],
             [8, 0.8_9, [-0.4_8_6_3, 0.0_8_5_9, 0.0_8_7_5, -0.1_6_5_8, 0.9_1_9_9, -0.0_1_1_4, 0.4_8_3_9, 0.4_6_3_9]],
             [3, 1_000, [-0.5_6_4_9, 0.2_4_0_2, -0.5_5_1_8, 0.1_2_4_8, 1.1_3_2_8, -0.2_4_4_3, -0.0_3_2_5, -1.0_0_7_8]],
             # fmt: on
         ]   )
     def     _lowercase     (			self ,_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE   )							->      Tuple:
          _snake_case							, _snake_case							=				self.get_unet_model(model_id="CompVis/stable-diffusion-v1-4" ,fpaa=_SCREAMING_SNAKE_CASE   )
          _snake_case							=				self.get_latents(_SCREAMING_SNAKE_CASE ,fpaa=_SCREAMING_SNAKE_CASE   )
          _snake_case							=				self.get_encoder_hidden_states(_SCREAMING_SNAKE_CASE ,fpaa=_SCREAMING_SNAKE_CASE   )

          _snake_case							=				model.apply(
              {"params": params} ,_SCREAMING_SNAKE_CASE ,jnp.array(_SCREAMING_SNAKE_CASE ,dtype=jnp.intaa   ) ,encoder_hidden_states=_SCREAMING_SNAKE_CASE ,).sample

          assert sample.shape == latents.shape

          _snake_case							=				jnp.asarray(jax.device_get((sample[-1, -2:, -2:, :2].flatten())   ) ,dtype=jnp.floataa   )
          _snake_case							=				jnp.array(_SCREAMING_SNAKE_CASE ,dtype=jnp.floataa   )

          # Found torch (float16) and flax (bfloat16) outputs to be within this tolerance, in the same hardware
          assert jnp.allclose(_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE ,atol=1e-2   )






     @parameterized.expand(
         [
             # fmt: off
             [83, 4, [0.1_5_1_4, 0.0_8_0_7, 0.1_6_2_4, 0.1_0_1_6, -0.1_8_9_6, 0.0_2_6_3, 0.0_6_7_7, 0.2_3_1_0]],
             [17, 0.5_5, [0.1_1_6_4, -0.0_2_1_6, 0.0_1_7_0, 0.1_5_8_9, -0.3_1_2_0, 0.1_0_0_5, -0.0_5_8_1, -0.1_4_5_8]],
             [8, 0.8_9, [-0.1_7_5_8, -0.0_1_6_9, 0.1_0_0_4, -0.1_4_1_1, 0.1_3_1_2, 0.1_1_0_3, -0.1_9_9_6, 0.2_1_3_9]],
             [3, 1_000, [0.1_2_1_4, 0.0_3_5_2, -0.0_7_3_1, -0.1_5_6_2, -0.0_9_9_4, -0.0_9_0_6, -0.2_3_4_0, -0.0_5_3_9]],
             # fmt: on
         ]   )
     def     _lowercase     (			self ,_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE   )							->      str:
          _snake_case							, _snake_case							=				self.get_unet_model(model_id="stabilityai/stable-diffusion-2" ,fpaa=_SCREAMING_SNAKE_CASE   )
          _snake_case							=				self.get_latents(_SCREAMING_SNAKE_CASE ,shape=(4, 4, 96, 96) ,fpaa=_SCREAMING_SNAKE_CASE   )
          _snake_case							=				self.get_encoder_hidden_states(_SCREAMING_SNAKE_CASE ,shape=(4, 77, 1_024) ,fpaa=_SCREAMING_SNAKE_CASE   )

          _snake_case							=				model.apply(
              {"params": params} ,_SCREAMING_SNAKE_CASE ,jnp.array(_SCREAMING_SNAKE_CASE ,dtype=jnp.intaa   ) ,encoder_hidden_states=_SCREAMING_SNAKE_CASE ,).sample

          assert sample.shape == latents.shape

          _snake_case							=				jnp.asarray(jax.device_get((sample[-1, -2:, -2:, :2].flatten())   ) ,dtype=jnp.floataa   )
          _snake_case							=				jnp.array(_SCREAMING_SNAKE_CASE ,dtype=jnp.floataa   )

          # Found torch (float16) and flax (bfloat16) outputs to be within this tolerance, on the same hardware
          assert jnp.allclose(_SCREAMING_SNAKE_CASE ,_SCREAMING_SNAKE_CASE ,atol=1e-2   )








'''simple docstring'''





def      __a     (       _UpperCamelCase:   int   )						->			str:

     """simple docstring"""




     if number > 0:
          raise ValueError("input must be a negative integer"   )
     _snake_case							=				len(bin(_UpperCamelCase   )[3:]   )
     _snake_case							=				bin(abs(_UpperCamelCase   ) - (1 << binary_number_length)   )[3:]
     _snake_case							=				(
         (
             "1"
             + "0" * (binary_number_length - len(_UpperCamelCase   ))
             + twos_complement_number
         )
         if number < 0
         else "0"
     )
     return "0b" + twos_complement_number


if __name__ == "__main__":
   import doctest

   doctest.testmod()


