@@ -46,18 +46,21 @@ broadcasted_sum(args) =
4646Base. broadcasted (:: NullBroadcasted , :: typeof (+ ), args... ) =
4747 broadcasted_sum (filter (arg -> ! (arg isa NullBroadcasted), args))
4848
49+ # ! format: off
50+
4951Base. broadcasted (op:: typeof (- ), :: NullBroadcasted , arg) = Base. broadcasted (op, arg)
50- Base. broadcasted (op:: typeof (- ), arg, :: NullBroadcasted ) =
51- Base. broadcasted (Base. identity, arg)
5252Base. broadcasted (op:: typeof (- ), a:: NullBroadcasted ) = NullBroadcasted ()
53- Base. broadcasted (op:: typeof (- ), a:: NullBroadcasted , :: NullBroadcasted ) =
54- Base. broadcasted (op, a)
53+ Base. broadcasted (op:: typeof (- ), a:: NullBroadcasted , :: NullBroadcasted ) = Base. broadcasted (op, a)
54+ # Specialize on identity cases:
55+ Base. broadcasted (:: typeof (- ), a, :: NullBroadcasted ) = a
56+
57+ Base. broadcasted (op:: typeof (+ ), :: NullBroadcasted , a, args... ) = Base. broadcasted (op, a, args... )
58+ Base. broadcasted (op:: typeof (+ ), arg, :: NullBroadcasted , a, args... ) = Base. broadcasted (op, arg, a, args... )
59+ Base. broadcasted (op:: typeof (+ ), a:: NullBroadcasted , :: NullBroadcasted , args... ) = Base. broadcasted (op, a, args... )
5560
56- Base. broadcasted (op:: typeof (+ ), :: NullBroadcasted , args... ) = Base. broadcasted (op, args... )
57- Base. broadcasted (op:: typeof (+ ), arg, :: NullBroadcasted , args... ) =
58- Base. broadcasted (op, arg, args... )
59- Base. broadcasted (op:: typeof (+ ), a:: NullBroadcasted , :: NullBroadcasted , args... ) =
60- Base. broadcasted (op, a, args... )
61+ # Specialize on identity cases:
62+ Base. broadcasted (:: typeof (+ ), :: NullBroadcasted , a) = a
63+ Base. broadcasted (:: typeof (+ ), a, :: NullBroadcasted ) = a
6164
6265Base. broadcasted (op:: typeof (* ), :: NullBroadcasted , args... ) = NullBroadcasted ()
6366Base. broadcasted (op:: typeof (* ), arg, :: NullBroadcasted ) = NullBroadcasted ()
@@ -68,6 +71,8 @@ Base.broadcasted(op::typeof(/), ::NullBroadcasted, ::NullBroadcasted) = NullBroa
6871
6972Base. broadcasted (op:: typeof (identity), a:: NullBroadcasted ) = a
7073
74+ # ! format: on
75+
7176function skip_materialize (dest, bc:: Base.Broadcast.Broadcasted )
7277 if typeof (bc. f) <: typeof (+ ) || typeof (bc. f) <: typeof (- )
7378 if length (bc. args) == 2 &&
0 commit comments