 }
 
 extension Array.DifferentiableView: PointwiseMultiplicative
-    where Element: PointwiseMultiplicative {
+    where Element: Differentiable & PointwiseMultiplicative
+{
     // FIXME: `one` should probably be removed from the protocol. `Array` cannot represent `one`.
     public static var one: Self {
         fatalError("One is not array-representable")

    public init() { self.init(.init()) }
}

extension Array.DifferentiableView: VectorProtocol where Element: VectorProtocol {
    public typealias VectorSpaceScalar = Element.VectorSpaceScalar

    public func adding(_ x: Element.VectorSpaceScalar) -> Array<Element>.DifferentiableView {


// MARK: - Array derivative extensions

extension Array.DifferentiableView: ElementaryFunctions
    where Element: Differentiable & ElementaryFunctions
{
    /// The square root of `x`.
    ///
    /// For real types, if `x` is negative the result is `.nan`. For complex
