code: def convex_conj(self):
          r
          if self.quadratic_coeff == 0:
              cconj = self.functional.convex_conj.translated(self.linear_term)
              if self.constant != 0:
                  cconj = cconj - self.constant
              return cconj
          else:
              return super(FunctionalQuadraticPerturb, self).convex_conj
docs: r"""Convex conjugate functional of the functional.
  
          Notes
          -----
          Given a functional :math:`f`, the convex conjugate of a linearly
          perturbed version :math:`f(x) + <y, x>` is given by a translation of
          the convex conjugate of :math:`f`:
  
          .. math::
              (f + \langle y, \cdot \rangle)^* (x^*) = f^*(x^* - y).
  
          For reference on the identity used, see `[KP2015]`_. Moreover, the
          convex conjugate of :math:`f + c` is by definition
  
          .. math::
              (f + c)^* (x^*) = f^*(x^*) - c.
  
  
          References
          ----------
          [KP2015] Komodakis, N, and Pesquet, J-C. *Playing with Duality: An
          overview of recent primal-dual approaches for solving large-scale
          optimization problems*. IEEE Signal Processing Magazine, 32.6 (2015),
          pp 31--54.
  
          .. _[KP2015]:  https://arxiv.org/abs/1406.5429