To break up the expression into distinct sub-expressions, you can try separating out each part of the calculation into its own intermediate variable. Here is one example.way you could do this:
internal static let EaseOutBack = { (elapsed: TimeInterval, duration: TimeInterval) -> Double in
let s: TimeInterval = 1.70158
var position: TimeInterval = elapsed / duration
position -= 1.0
let a = position * position
let b = (s + 1.0) * position
let c = a * (b + s)
let result = c + 1.0
return Double(result)
}