docs: def diffuser_pipe_reducer(Di1, Di2, l, fd1, fd2=None):
      r'''Returns loss coefficient for any pipe reducer pipe expansion
      as shown in [1]. This is an approximate formula.
  
      .. math::
          K_f = f_1\frac{0.20l}{d_1} + \frac{f_1(1-\beta)}{8\sin(\alpha/2)}
          + f_2\frac{0.20l}{d_2}\beta^4
  
      .. math::
          \alpha = 2\tan^{-1}\left(\frac{d_1-d_2}{1.20l}\right)
  
      Parameters
      ----------
      Di1 : float
          Inside diameter of original pipe (smaller), [m]
      Di2 : float
          Inside diameter of following pipe (larger), [m]
      l : float
          Length of the pipe reducer along the pipe axis, [m]
      fd1 : float
          Darcy friction factor at inlet diameter [-]
      fd2 : float
          Darcy friction factor at outlet diameter, optional [-]
  
      Returns
      -------
      K : float
          Loss coefficient [-]
  
      Notes
      -----
      Industry lack of standardization prevents better formulas from being
      developed. Add 15% if the reducer is eccentric.
      Friction factor at outlet will be assumed the same as at inlet if not specified.
  
      Doubt about the validity of this equation is raised.
  
      Examples
      --------
      >>> diffuser_pipe_reducer(Di1=.5, Di2=.75, l=1.5, fd1=0.07)
      0.06873244301714816
  
      References
      ----------
      .. [1] Rennels, Donald C., and Hobart M. Hudson. Pipe Flow: A Practical
         and Comprehensive Guide. 1st edition. Hoboken, N.J: Wiley, 2012.
      '''
      if fd2 is None:
          fd2 = fd1
      beta = Di1/Di2
      angle = -2*atan((Di1-Di2)/1.20/l)
      K = fd1*0.20*l/Di1 + fd1*(1-beta)/8./sin(angle/2) + fd2*0.20*l/Di2*beta**4
      return K