Skip to content

Commit dfc26b1

Browse files
added .*/.+/.- brodcasts for fusing JOLI operators with numbers
1 parent cf5c1af commit dfc26b1

File tree

4 files changed

+59
-33
lines changed

4 files changed

+59
-33
lines changed

Diff for: CHANGES-0.7.md

+2
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@
6363

6464
1. `warn`/`info`/`error` converted to macros `@warn`/`@info`/`@error`
6565

66+
1. added `.*`/`.+`/`.-` brodcasts for fusing JOLI operators with numbers for compatibility with Julia notation
67+
6668
# Removed JOLI deprecations #
6769

6870
1. removed deprecated `joExtension`; use `joExtend`

Diff for: src/JOLI.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Base.real, Base.imag, Base.conj
2424
import Base.transpose, Base.adjoint
2525
import Base.isreal
2626
import Base.*, Base.\, Base.+, Base.-
27-
#import Base.(.*), Base.(.\), Base.(.+), Base.(.-)
27+
import Base.Broadcast.broadcasted # Base.(.*), Base.(.\), Base.(.+), Base.(.-)
2828
import Base.hcat, Base.vcat, Base.hvcat
2929
import Base.inv
3030

Diff for: src/joAbstractLinearOperator/base_functions.jl

+24
Original file line numberDiff line numberDiff line change
@@ -214,15 +214,39 @@ end
214214
############################################################
215215
## overloaded Base .*(...jo...)
216216

217+
# .*(num,jo)
218+
Base.Broadcast.broadcasted(::typeof(*),a::Number,A::joAbstractLinearOperator) = a*A
219+
Base.Broadcast.broadcasted(::typeof(*),a::joNumber,A::joAbstractLinearOperator) = a*A
220+
221+
# .*(jo,num)
222+
Base.Broadcast.broadcasted(::typeof(*),A::joAbstractLinearOperator,a::Number) = a*A
223+
Base.Broadcast.broadcasted(::typeof(*),A::joAbstractLinearOperator,a::joNumber) = a*A
224+
217225
############################################################
218226
## overloaded Base .\(...jo...)
219227

220228
############################################################
221229
## overloaded Base .+(...jo...)
222230

231+
# .+(jo,num)
232+
Base.Broadcast.broadcasted(::typeof(+),A::joAbstractLinearOperator,b::Number) = A+b
233+
Base.Broadcast.broadcasted(::typeof(+),A::joAbstractLinearOperator,b::joNumber) = A+b
234+
235+
# .+(num,jo)
236+
Base.Broadcast.broadcasted(::typeof(+),b::Number,A::joAbstractLinearOperator) = A+b
237+
Base.Broadcast.broadcasted(::typeof(+),b::joNumber,A::joAbstractLinearOperator) = A+b
238+
223239
############################################################
224240
## overloaded Base .-(...jo...)
225241

242+
# .-(jo,num)
243+
Base.Broadcast.broadcasted(::typeof(-),A::joAbstractLinearOperator,b::Number) = A+(-b)
244+
Base.Broadcast.broadcasted(::typeof(-),A::joAbstractLinearOperator,b::joNumber) = A+(-b)
245+
246+
# .-(num,jo)
247+
Base.Broadcast.broadcasted(::typeof(-),b::Number,A::joAbstractLinearOperator) = -A+b
248+
Base.Broadcast.broadcasted(::typeof(-),b::joNumber,A::joAbstractLinearOperator) = -A+b
249+
226250
############################################################
227251
## overloaded Base block methods
228252

Diff for: src/joAbstractOperator/base_functions.jl

+32-32
Original file line numberDiff line numberDiff line change
@@ -159,103 +159,103 @@ ishermitian(A::joAbstractOperator) = jo_method_error(A,"ishermitian(jo) not impl
159159

160160
############################################################
161161
## overloaded Base .*(...jo...)
162-
## function Base.broadcast(::typeof(*), ...)
162+
## function Base.Broadcast.broadcasted(::typeof(*), ...)
163163

164164
# .*(jo,jo)
165-
##.*(A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(,".*(jo,jo) not implemented")
165+
Base.Broadcast.broadcasted(::typeof(*),A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(A,B,".*(jo,jo) not implemented")
166166

167167
# .*(jo,mvec)
168-
##.*(A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(,".*(jo,mvec) not implemented")
168+
Base.Broadcast.broadcasted(::typeof(*),A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(A,mv,".*(jo,mvec) not implemented")
169169

170170
# .*(mvec,jo)
171-
##.*(mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(,".*(mvec,jo) not implemented")
171+
Base.Broadcast.broadcasted(::typeof(*),mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(mv,A,".*(mvec,jo) not implemented")
172172

173173
# .*(jo,vec)
174-
##.*(A::joAbstractOperator,v::AbstractVector) = jo_method_error(,".*(jo,vec) not implemented")
174+
Base.Broadcast.broadcasted(::typeof(*),A::joAbstractOperator,v::AbstractVector) = jo_method_error(A,v,".*(jo,vec) not implemented")
175175

176176
# .*(vec,jo)
177-
##.*(v::AbstractVector,A::joAbstractOperator) = jo_method_error(,".*(vec,jo) not implemented")
177+
Base.Broadcast.broadcasted(::typeof(*),v::AbstractVector,A::joAbstractOperator) = jo_method_error(v,A,".*(vec,jo) not implemented")
178178

179179
# .*(num,jo)
180-
##.*(a,A::joAbstractOperator) = jo_method_error(,".*(any,jo) not implemented")
180+
Base.Broadcast.broadcasted(::typeof(*),a,A::joAbstractOperator) = jo_method_error(a,A,".*(any,jo) not implemented")
181181

182182
# .*(jo,num)
183-
##.*(A::joAbstractOperator,a) = jo_method_error(,".*(jo,any) not implemented")
183+
Base.Broadcast.broadcasted(::typeof(*),A::joAbstractOperator,a) = jo_method_error(A,a,".*(jo,any) not implemented")
184184

185185
############################################################
186186
## overloaded Base .\(...jo...)
187-
## function Base.broadcast(::typeof(\), ...)
187+
## function Base.Broadcast.broadcasted(::typeof(\), ...)
188188

189189
# .\(jo,jo)
190-
##.\(A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(,".\(jo,jo) not implemented")
190+
Base.Broadcast.broadcasted(::typeof(\),A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(A,B,".(jo,jo) not implemented")
191191

192192
# .\(jo,mvec)
193-
##.\(A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(,".\(jo,mvec) not implemented")
193+
Base.Broadcast.broadcasted(::typeof(\),A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(A,mv,".(jo,mvec) not implemented")
194194

195195
# .\(mvec,jo)
196-
##.\(mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(,".\(mvec,jo) not implemented")
196+
Base.Broadcast.broadcasted(::typeof(\),mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(mv,A,".(mvec,jo) not implemented")
197197

198198
# .\(jo,vec)
199-
##.\(A::joAbstractOperator,v::AbstractVector) = jo_method_error(,".\(jo,vec) not implemented")
199+
Base.Broadcast.broadcasted(::typeof(\),A::joAbstractOperator,v::AbstractVector) = jo_method_error(A,v,".(jo,vec) not implemented")
200200

201201
# .\(vec,jo)
202-
##.\(v::AbstractVector,A::joAbstractOperator) = jo_method_error(,".\(vec,jo) not implemented")
202+
Base.Broadcast.broadcasted(::typeof(\),v::AbstractVector,A::joAbstractOperator) = jo_method_error(v,A,".(vec,jo) not implemented")
203203

204204
# .\(num,jo)
205-
##.\(a,A::joAbstractOperator) = jo_method_error(,".\(any,jo) not implemented")
205+
Base.Broadcast.broadcasted(::typeof(\),a,A::joAbstractOperator) = jo_method_error(a,A,".(any,jo) not implemented")
206206

207207
# .\(jo,num)
208-
##.\(A::joAbstractOperator,a) = jo_method_error(,".\(jo,any) not implemented")
208+
Base.Broadcast.broadcasted(::typeof(\),A::joAbstractOperator,a) = jo_method_error(A,a,".(jo,any) not implemented")
209209

210210
############################################################
211211
## overloaded Base .+(...jo...)
212-
## function Base.broadcast(::typeof(+), ...)
212+
## function Base.Broadcast.broadcasted(::typeof(+), ...)
213213

214214
# .+(jo,jo)
215-
##.+(A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(,".+(jo,jo) not implemented")
215+
Base.Broadcast.broadcasted(::typeof(+),A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(A,B,".+(jo,jo) not implemented")
216216

217217
# .+(jo,mvec)
218-
##.+(A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(,".+(jo,mvec) not implemented")
218+
Base.Broadcast.broadcasted(::typeof(+),A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(A,mv,".+(jo,mvec) not implemented")
219219

220220
# .+(mvec,jo)
221-
##.+(mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(,".+(mvec,jo) not implemented")
221+
Base.Broadcast.broadcasted(::typeof(+),mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(mv,A,".+(mvec,jo) not implemented")
222222

223223
# .+(jo,vec)
224-
##.+(A::joAbstractOperator,v::AbstractVector) = jo_method_error(,".+(jo,vec) not implemented")
224+
Base.Broadcast.broadcasted(::typeof(+),A::joAbstractOperator,v::AbstractVector) = jo_method_error(A,v,".+(jo,vec) not implemented")
225225

226226
# .+(vec,jo)
227-
##.+(v::AbstractVector,A::joAbstractOperator) = jo_method_error(,".+(vec,jo) not implemented")
227+
Base.Broadcast.broadcasted(::typeof(+),v::AbstractVector,A::joAbstractOperator) = jo_method_error(v,A,".+(vec,jo) not implemented")
228228

229229
# .+(jo,num)
230-
##.+(A::joAbstractOperator,b) = jo_method_error(,".+(jo,any) not implemented")
230+
Base.Broadcast.broadcasted(::typeof(+),A::joAbstractOperator,b) = jo_method_error(A,b,".+(jo,any) not implemented")
231231

232232
# .+(num,jo)
233-
##.+(b,A::joAbstractOperator) = jo_method_error(,".+(any,jo) not implemented")
233+
Base.Broadcast.broadcasted(::typeof(+),b,A::joAbstractOperator) = jo_method_error(b,A,".+(any,jo) not implemented")
234234

235235
############################################################
236236
## overloaded Base .-(...jo...)
237-
## function Base.broadcast(::typeof(-), ...)
237+
## function Base.Broadcast.broadcasted(::typeof(-), ...)
238238

239239
# .-(jo,jo)
240-
##.-(A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(,".-(jo,jo) not implemented")
240+
Base.Broadcast.broadcasted(::typeof(-),A::joAbstractOperator,B::joAbstractOperator) = jo_method_error(A,B,".-(jo,jo) not implemented")
241241

242242
# .-(jo,mvec)
243-
##.-(A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(,".-(jo,mvec) not implemented")
243+
Base.Broadcast.broadcasted(::typeof(-),A::joAbstractOperator,mv::AbstractMatrix) = jo_method_error(A,mv,".-(jo,mvec) not implemented")
244244

245245
# .-(mvec,jo)
246-
##.-(mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(,".-(mvec,jo) not implemented")
246+
Base.Broadcast.broadcasted(::typeof(-),mv::AbstractMatrix,A::joAbstractOperator) = jo_method_error(mv,A,".-(mvec,jo) not implemented")
247247

248248
# .-(jo,vec)
249-
##.-(A::joAbstractOperator,v::AbstractVector) = jo_method_error(,".-(jo,vec) not implemented")
249+
Base.Broadcast.broadcasted(::typeof(-),A::joAbstractOperator,v::AbstractVector) = jo_method_error(A,v,".-(jo,vec) not implemented")
250250

251251
# .-(vec,jo)
252-
##.-(v::AbstractVector,A::joAbstractOperator) = jo_method_error(,".-(vec,jo) not implemented")
252+
Base.Broadcast.broadcasted(::typeof(-),v::AbstractVector,A::joAbstractOperator) = jo_method_error(v,A,".-(vec,jo) not implemented")
253253

254254
# .-(jo,num)
255-
##.-(A::joAbstractOperator,b) = jo_method_error(,".-(jo,any) not implemented")
255+
Base.Broadcast.broadcasted(::typeof(-),A::joAbstractOperator,b) = jo_method_error(A,b,".-(jo,any) not implemented")
256256

257257
# .-(num,jo)
258-
##.-(b,A::joAbstractOperator) = jo_method_error(,".-(any,jo) not implemented")
258+
Base.Broadcast.broadcasted(::typeof(-),b,A::joAbstractOperator) = jo_method_error(b,A,".-(any,jo) not implemented")
259259

260260
############################################################
261261
## overloaded Base block methods

0 commit comments

Comments
 (0)