parameters: (c1,r1,c2,r2)
return_statement: return stack(c1 + minimum(d,r1)/d * diff,c2 - minimum(d,r2)/d * diff)
docstring: Autodiff function CP(c1,r1,c2,r2)->R^2n giving the closest points 
      between a sphere with center c1, radius r1 to a sphere with center c2, 
      radius r2. The two points are stacked into a length 2n vector.
docstring_summary: Autodiff function CP(c1,r1,c2,r2)->R^2n giving the closest points 
      between a sphere with center c1, radius r1 to a sphere with center c2, 
      radius r2. The two points are stacked into a length 2n vector.
docstring_tokens: Autodiff function CP ( c1 r1 c2 r2 ) - > R^2n giving the closest points between a sphere with center c1 radius r1 to a sphere with center c2 radius r2 . The two points are stacked into a length 2n vector .
function: def sphere_sphere_closest(c1,r1,c2,r2):
      """Autodiff function CP(c1,r1,c2,r2)->R^2n giving the closest points 
      between a sphere with center c1, radius r1 to a sphere with center c2, 
      radius r2. The two points are stacked into a length 2n vector. """
      diff = c1 - c2
      d = math_ad.norm(diff)
      return stack(c1 + minimum(d,r1)/d * diff,c2 - minimum(d,r2)/d * diff)
function_tokens: def sphere_sphere_closest ( c1 , r1 , c2 , r2 ) : diff = c1 - c2 d = math_ad . norm ( diff ) return stack ( c1 + minimum ( d , r1 ) / d * diff , c2 - minimum ( d , r2 ) / d * diff )