class_docstr: Context for multiprecision arithmetic with a global precision.
class_docstr_tok: ["Context","for","multiprecision","arithmetic","with","a","global","precision","."]
docstr: Divides the numbers *x* and *y*, giving a floating-point result,
  optionally using a custom precision and rounding mode.
  
  See the documentation of :func:`~mpmath.fadd` for a detailed description
  of how to specify precision and rounding.
  
  **Examples**
  
  The result is an mpmath number::
  
      >>> from mpmath import *
      >>> mp.dps = 15; mp.pretty = False
      >>> fdiv(3, 2)
      mpf('1.5')
      >>> fdiv(2, 3)
      mpf('0.66666666666666663')
      >>> fdiv(2+4j, 0.5)
      mpc(real='4.0', imag='8.0')
  
  The rounding direction and precision can be controlled::
  
      >>> fdiv(2, 3, dps=3)    # Should be accurate to at least 3 digits
      mpf('0.6666259765625')
      >>> fdiv(2, 3, rounding='d')
      mpf('0.66666666666666663')
      >>> fdiv(2, 3, prec=60)
      mpf('0.66666666666666667')
      >>> fdiv(2, 3, rounding='u')
      mpf('0.66666666666666674')
  
  Checking the error of a division by performing it at higher precision::
  
      >>> fdiv(2, 3) - fdiv(2, 3, prec=100)
      mpf('-3.7007434154172148e-17')
  
  Unlike :func:`~mpmath.fadd`, :func:`~mpmath.fmul`, etc., exact division is not
  allowed since the quotient of two floating-point numbers generally
  does not have an exact floating-point representation. (In the
  future this might be changed to allow the case where the division
  is actually exact.)
  
      >>> fdiv(2, 3, exact=True)
      Traceback (most recent call last):
        ...
      ValueError: division is not an exact operation
docstr_tok: ["Divides","the","numbers","*","x","*","and","*","y","*",",","giving","a","floating-point","result",",","optionally","using","a","custom","precision","and","rounding","mode",".","See","the","documentation","of",":","func",":","`","~mpmath.fadd","`","for","a","detailed","description","of","how","to","specify","precision","and","rounding",".","*","*","Examples","*","*","The","result","is","an","mpmath","number",":",":",">",">",">","from","mpmath","import","*",">",">",">","mp.dps","=","15",";","mp.pretty","=","False",">",">",">","fdiv","(","3",",","2",")","mpf","(","'","1.5","'",")",">",">",">","fdiv","(","2",",","3",")","mpf","(","'","0.66666666666666663","'",")",">",">",">","fdiv","(","2+4j",",","0.5",")","mpc","(","real=","'","4.0","'",",","imag=","'","8.0","'",")","The","rounding","direction","and","precision","can","be","controlled",":",":",">",">",">","fdiv","(","2",",","3",",","dps=3",")","#","Should","be","accurate","to","at","least","3","digits","mpf","(","'","0.6666259765625","'",")",">",">",">","fdiv","(","2",",","3",",","rounding='d","'",")","mpf","(","'","0.66666666666666663","'",")",">",">",">","fdiv","(","2",",","3",",","prec=60",")","mpf","(","'","0.66666666666666667","'",")",">",">",">","fdiv","(","2",",","3",",","rounding=","'","u","'",")","mpf","(","'","0.66666666666666674","'",")","Checking","the","error","of","a","division","by","performing","it","at","higher","precision",":",":",">",">",">","fdiv","(","2",",","3",")","-","fdiv","(","2",",","3",",","prec=100",")","mpf","(","'-3.7007434154172148e-17","'",")","Unlike",":","func",":","`","~mpmath.fadd","`",",",":","func",":","`","~mpmath.fmul","`",",","etc.",",","exact","division","is","not","allowed","since","the","quotient","of","two","floating-point","numbers","generally","does","not","have","an","exact","floating-point","representation",".","(","In","the","future","this","might","be","changed","to","allow","the","case","where","the","division","is","actually","exact",".",")",">",">",">","fdiv","(","2",",","3",",","exact=True",")","Traceback","(","most","recent","call","last",")",":","...","ValueError",":","division","is","not","an","exact","operation"]
code: def fdiv(ctx, x, y, **kwargs):
      """
      Divides the numbers *x* and *y*, giving a floating-point result,
      optionally using a custom precision and rounding mode.
  
      See the documentation of :func:`~mpmath.fadd` for a detailed description
      of how to specify precision and rounding.
  
      **Examples**
  
      The result is an mpmath number::
  
          >>> from mpmath import *
          >>> mp.dps = 15; mp.pretty = False
          >>> fdiv(3, 2)
          mpf('1.5')
          >>> fdiv(2, 3)
          mpf('0.66666666666666663')
          >>> fdiv(2+4j, 0.5)
          mpc(real='4.0', imag='8.0')
  
      The rounding direction and precision can be controlled::
  
          >>> fdiv(2, 3, dps=3)    # Should be accurate to at least 3 digits
          mpf('0.6666259765625')
          >>> fdiv(2, 3, rounding='d')
          mpf('0.66666666666666663')
          >>> fdiv(2, 3, prec=60)
          mpf('0.66666666666666667')
          >>> fdiv(2, 3, rounding='u')
          mpf('0.66666666666666674')
  
      Checking the error of a division by performing it at higher precision::
  
          >>> fdiv(2, 3) - fdiv(2, 3, prec=100)
          mpf('-3.7007434154172148e-17')
  
      Unlike :func:`~mpmath.fadd`, :func:`~mpmath.fmul`, etc., exact division is not
      allowed since the quotient of two floating-point numbers generally
      does not have an exact floating-point representation. (In the
      future this might be changed to allow the case where the division
      is actually exact.)
  
          >>> fdiv(2, 3, exact=True)
          Traceback (most recent call last):
            ...
          ValueError: division is not an exact operation
  
      """
      prec, rounding = ctx._parse_prec(kwargs)
      if not prec:
          raise ValueError("division is not an exact operation")
      x = ctx.convert(x)
      y = ctx.convert(y)
      if hasattr(x, "_mpf_"):
          if hasattr(y, "_mpf_"):
              return ctx.make_mpf(
                  mpf_div(x._mpf_, y._mpf_, prec, rounding)
              )
          if hasattr(y, "_mpc_"):
              return ctx.make_mpc(
                  mpc_div((x._mpf_, fzero), y._mpc_, prec, rounding)
              )
      if hasattr(x, "_mpc_"):
          if hasattr(y, "_mpf_"):
              return ctx.make_mpc(
                  mpc_div_mpf(x._mpc_, y._mpf_, prec, rounding)
              )
          if hasattr(y, "_mpc_"):
              return ctx.make_mpc(
                  mpc_div(x._mpc_, y._mpc_, prec, rounding)
              )
      raise ValueError(
          "Arguments need to be mpf or mpc compatible numbers"
      )
  
imports: import functools
  import re
  from .ctx_base import StandardBaseContext
  from .libmp.backend import basestring, BACKEND
  from .None import libmp
  from .libmp import MPZ, MPZ_ZERO, MPZ_ONE, int_types, repr_dps, round_floor, round_ceiling, dps_to_prec, round_nearest, prec_to_dps, ComplexResult, to_pickable, from_pickable, normalize, from_int, from_float, from_str, to_int, to_float, to_str, from_rational, from_man_exp, fone, fzero, finf, fninf, fnan, mpf_abs, mpf_pos, mpf_neg, mpf_add, mpf_sub, mpf_mul, mpf_mul_int, mpf_div, mpf_rdiv_int, mpf_pow_int, mpf_mod, mpf_eq, mpf_cmp, mpf_lt, mpf_gt, mpf_le, mpf_ge, mpf_hash, mpf_rand, mpf_sum, bitcount, to_fixed, mpc_to_str, mpc_to_complex, mpc_hash, mpc_pos, mpc_is_nonzero, mpc_neg, mpc_conjugate, mpc_abs, mpc_add, mpc_add_mpf, mpc_sub, mpc_sub_mpf, mpc_mul, mpc_mul_mpf, mpc_mul_int, mpc_div, mpc_div_mpf, mpc_pow, mpc_pow_mpf, mpc_pow_int, mpc_mpf_div, mpf_pow, mpf_pi, mpf_degree, mpf_e, mpf_phi, mpf_ln2, mpf_ln10, mpf_euler, mpf_catalan, mpf_apery, mpf_khinchin, mpf_glaisher, mpf_twinprime, mpf_mertens, int_types
  from .None import function_docs
  from .None import rational
  from .ctx_mp_python import _mpf, _mpc, mpnumeric
label_desc: Use image node_id 41 for calling the MPContext obj's underlying member method code with example usage: obj.fdiv(ctx, x, y) and returns: ctx, ctx, ctx, ctx