class_docstr: The SCAD penalty of Fan and Li, quadratically smoothed around zero.
  
  This follows Fan and Li 2001 equation (3.7).
  
  Parameterization follows Boo, Johnson, Li and Tan 2011
  see docstring of SCAD
  
  Parameters
  ----------
  tau : float
      slope and threshold for linear segment
  c : float
      factor for second threshold
  c0 : float
      threshold for quadratically smoothed segment
  restriction : None or array
      linear constraints for
  
  Notes
  -----
  TODO: Use delegation instead of subclassing, so smoothing can be added to
  all penalty classes.
class_docstr_tok: ["The","SCAD","penalty","of","Fan","and","Li",",","quadratically","smoothed","around","zero",".","This","follows","Fan","and","Li","2001","equation","(","3.7",")",".","Parameterization","follows","Boo",",","Johnson",",","Li","and","Tan","2011","see","docstring","of","SCAD","Parameters","--","--","--","--","--","tau",":","float","slope","and","threshold","for","linear","segment","c",":","float","factor","for","second","threshold","c0",":","float","threshold","for","quadratically","smoothed","segment","restriction",":","None","or","array","linear","constraints","for","Notes","--","--","-","TODO",":","Use","delegation","instead","of","subclassing",",","so","smoothing","can","be","added","to","all","penalty","classes","."]
code: def __init__(
      self, tau, c=3.7, c0=None, weights=1.0, restriction=None
  ):
      super().__init__(tau, c=c, weights=weights)
      self.tau = tau
      self.c = c
      self.c0 = c0 if c0 is not None else tau * 0.1
      if self.c0 > tau:
          raise ValueError("c0 cannot be larger than tau")
  
      # get coefficients for quadratic approximation
      c0 = self.c0
      # need to temporarily override weights for call to super
      weights = self.weights
      self.weights = 1.0
      deriv_c0 = super().deriv(c0)
      value_c0 = super().func(c0)
      self.weights = weights
  
      self.aq1 = value_c0 - 0.5 * deriv_c0 * c0
      self.aq2 = 0.5 * deriv_c0 / c0
      self.restriction = restriction
  
imports: import numpy
label_desc: Use image node_id 1 to create a new SCADSmoothed object from inherited base classes: SCAD with example: obj = SCADSmoothed(tau, c, c0, weights, restriction)