





from collections.abc import Callable






def 							_lowerCAmelCase (  _a   :					Callable[[float], float]					,   _a   :					float					,   _a   :					float			)	->			float:
     lowerCAmelCase_					:       float    =		a
     lowerCAmelCase_					:       float    =		b
     if function(_a			) == 0:  # one of the a or b is a root for the function
          return a
     elif function(_a			) == 0:
          return b
     elif (
         function(_a			) * function(_a			) > 0
     ):  # if none of these are root and they are both positive or negative,
          # then this algorithm can't find the root
          raise ValueError("""could not find root in given interval."""			)
     else:
          lowerCAmelCase_					:       float    =		start + (end - start) / 2.0
          while abs(start - mid			) > 10**-7:  # until precisely equals to 10^-7
               if function(_a			) == 0:
                    return mid
               elif function(_a			) * function(_a			) < 0:
                    lowerCAmelCase_					:       str    =		mid
               else:
                    lowerCAmelCase_					:       Optional[int]    =		mid
               lowerCAmelCase_					:       int    =		start + (end - start) / 2.0
          return mid






def 							_lowerCAmelCase (  _a   :					float			)	->			float:
     return x**3 - 2 * x - 5


if __name__ == "__main__":
      print(bisection(f, 1, 10_00))

      import doctest

      doctest.testmod()







from ...configuration_utils import PretrainedConfig
from ...utils import logging


UpperCAmelCase_					:   Tuple 							=						logging.get_logger(__name__)

UpperCAmelCase_					:   List[str] 							=						{
    """google/fnet-base""": """https://huggingface.co/google/fnet-base/resolve/main/config.json""",
    """google/fnet-large""": """https://huggingface.co/google/fnet-large/resolve/main/config.json"""
    # See all FNet models at https://huggingface.co/models?filter=fnet
}





class      lowercase__    (							__A  ):
  __UpperCamelCase	     =  """fnet"""







  def __init__(	self    ,						_lowercase=32_000    ,						_lowercase=768    ,						_lowercase=12    ,						_lowercase=3_072    ,						_lowercase="gelu_new"    ,						_lowercase=0.1    ,						_lowercase=512    ,						_lowercase=4    ,						_lowercase=0.02    ,						_lowercase=1e-12    ,						_lowercase=False    ,						_lowercase=512    ,						_lowercase=3    ,						_lowercase=1    ,						_lowercase=2    ,						**_lowercase    ,						):
       super().__init__(pad_token_id=_lowercase    ,						bos_token_id=_lowercase    ,						eos_token_id=_lowercase    ,						**_lowercase						)

       lowerCAmelCase_					:       Optional[Any]    =		vocab_size
       lowerCAmelCase_					:       List[str]    =		max_position_embeddings
       lowerCAmelCase_					:       str    =		hidden_size
       lowerCAmelCase_					:       Any    =		num_hidden_layers
       lowerCAmelCase_					:       Optional[int]    =		intermediate_size
       lowerCAmelCase_					:       int    =		hidden_act
       lowerCAmelCase_					:       List[str]    =		hidden_dropout_prob
       lowerCAmelCase_					:       Tuple    =		initializer_range
       lowerCAmelCase_					:       int    =		type_vocab_size
       lowerCAmelCase_					:       str    =		layer_norm_eps
       lowerCAmelCase_					:       Optional[Any]    =		use_tpu_fourier_optimizations
       lowerCAmelCase_					:       Union[str, Any]    =		tpu_short_seq_length
