





from math import factorial


def 							__snake_case							(    lowerCAmelCase_ ,							lowerCAmelCase_ ,							lowerCAmelCase_	)				->						float:
    if successes > trials:
        raise ValueError('''successes must be lower or equal to trials'''	)
    if trials < 0 or successes < 0:
        raise ValueError('''the function is defined for non-negative integers'''	)
    if not isinstance(lowerCAmelCase_ ,							lowerCAmelCase_	) or not isinstance(lowerCAmelCase_ ,							lowerCAmelCase_	):
        raise ValueError('''the function is defined for non-negative integers'''	)
    if not 0 < prob < 1:
        raise ValueError('''prob has to be in range of 1 - 0'''	)
    SCREAMING_SNAKE_CASE__											=			(prob**successes) * ((1 - prob) ** (trials - successes))
    # Calculate the binomial coefficient: n! / k!(n-k)!
    SCREAMING_SNAKE_CASE__											=			float(factorial(lowerCAmelCase_	)	)
    coefficient /= factorial(lowerCAmelCase_	) * factorial(trials - successes	)
    return probability * coefficient


if __name__ == "__main__":
  from doctest import testmod

  testmod()
  print("""Probability of 2 successes out of 4 trails""")
  print("""with probability of 0.75 is:""", end=""" """)
  print(binomial_distribution(2, 4, 0.75))







from torch import nn


def 							__snake_case							(    lowerCAmelCase_	)				->						Tuple:
    if act_fn in ["swish", "silu"]:
        return nn.SiLU()
    elif act_fn == "mish":
        return nn.Mish()
    elif act_fn == "gelu":
        return nn.GELU()
    else:
        raise ValueError(f'''Unsupported activation function: {act_fn}'''	)
