Tangent: Automatic differentiation using source-code transformation for dynamically typed array programming