11using Base. Broadcast: Broadcasted
22struct LinearCombination{C} <: Function
3- coefficients:: C
3+ coefficients:: C
44end
55coefficients (a:: LinearCombination ) = a. coefficients
66function (f:: LinearCombination )(args... )
7- return mapreduce (* ,+ , coefficients (f),args)
7+ return mapreduce (* , + , coefficients (f), args)
88end
99
10- struct Summed{Style,N,C <: NTuple{N,Any} ,A <: NTuple{N,Any} }
11- style:: Style
12- coefficients:: C
13- arguments:: A
10+ struct Summed{Style, N, C <: NTuple{N, Any} , A <: NTuple{N, Any} }
11+ style:: Style
12+ coefficients:: C
13+ arguments:: A
1414end
1515Summed (a:: Summed ) = a
1616coefficients (a:: Summed ) = a. coefficients
@@ -20,25 +20,25 @@ LinearCombination(a::Summed) = LinearCombination(coefficients(a))
2020using Base. Broadcast: combine_axes
2121Base. axes (a:: Summed ) = combine_axes (a. arguments... )
2222function Base. eltype (a:: Summed )
23- cts = typeof .(coefficients (a))
24- elts = eltype .(arguments (a))
25- ts = map ((ct, elt) -> Base. promote_op (* , ct, elt), cts, elts)
26- return Base. promote_op (+ , ts... )
23+ cts = typeof .(coefficients (a))
24+ elts = eltype .(arguments (a))
25+ ts = map ((ct, elt) -> Base. promote_op (* , ct, elt), cts, elts)
26+ return Base. promote_op (+ , ts... )
2727end
2828function Base. getindex (a:: Summed , I... )
29- return mapreduce (+ , coefficients (a), arguments (a)) do c, a
30- return c * a[I... ]
31- end
29+ return mapreduce (+ , coefficients (a), arguments (a)) do c, a
30+ return c * a[I... ]
31+ end
3232end
3333using Base. Broadcast: combine_styles
3434function Summed (coefficients:: Tuple , arguments:: Tuple )
35- return Summed (combine_styles (arguments... ), coefficients, arguments)
35+ return Summed (combine_styles (arguments... ), coefficients, arguments)
3636end
3737Summed (a) = Summed ((one (eltype (a)),), (a,))
3838function Base.:+ (a:: Summed , b:: Summed )
39- return Summed (
40- (coefficients (a)... , coefficients (b)... ), (arguments (a)... , arguments (b)... )
41- )
39+ return Summed (
40+ (coefficients (a)... , coefficients (b)... ), (arguments (a)... , arguments (b)... )
41+ )
4242end
4343Base.:- (a:: Summed , b:: Summed ) = a + (- b)
4444Base.:+ (a:: Summed , b:: AbstractArray ) = a + Summed (b)
@@ -54,15 +54,15 @@ Base.similar(a::Summed) = similar(a, eltype(a))
5454Base. similar (a:: Summed , elt:: Type ) = similar (a, elt, axes (a))
5555Base. similar (a:: Summed , ax:: Tuple ) = similar (a, eltype (a), ax)
5656function Base. similar (a:: Summed , elt:: Type , ax:: Tuple )
57- return similar (Broadcasted (a), elt, ax)
57+ return similar (Broadcasted (a), elt, ax)
5858end
5959Base. copy (a:: Summed ) = copyto! (similar (a), a)
6060function Base. copyto! (dest:: AbstractArray , a:: Summed )
61- return copyto! (dest, Broadcasted (a))
61+ return copyto! (dest, Broadcasted (a))
6262end
6363function Broadcast. Broadcasted (a:: Summed )
64- f = LinearCombination (a)
65- return Broadcasted (style (a), f, arguments (a), axes (a))
64+ f = LinearCombination (a)
65+ return Broadcasted (style (a), f, arguments (a), axes (a))
6666end
6767
6868using Base. Broadcast: Broadcast
0 commit comments