Skip to content

Commit eaa69cf

Browse files
authored
Merge pull request #10 from SebastianFlassbeck/main
DiagOp now working with @view on linear operator
2 parents 7b52781 + 18f1227 commit eaa69cf

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/DiagOp.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ function DiagOp(ops)
5353
(res,y) -> (diagOpTProd(res,y,ncol,yIdx,xIdx,ops)),
5454
(res,y) -> (diagOpCTProd(res,y,ncol,yIdx,xIdx,ops)),
5555
0, 0, 0, false, false, false, S(undef, 0), S(undef, 0),
56-
[ops...], false, xIdx, yIdx)
56+
ops, false, xIdx, yIdx)
5757

5858
return Op
5959
end

test/testOperators.jl

+17
Original file line numberDiff line numberDiff line change
@@ -317,50 +317,63 @@ function testDiagOp(N=32,K=2;arrayType = Array)
317317
op1 = DiagOp(blocks)
318318
op2 = DiagOp(blocks...)
319319
op3 = DiagOp(block, K)
320+
op4 = DiagOp(@view blocks[1:K])
321+
320322

321323
# Operations
322324
@testset "Diag Prod" begin
323325
y = Array(F * x)
324326
y1 = Array(op1 * x)
325327
y2 = Array(op2 * x)
326328
y3 = Array(op3 * x)
329+
y4 = Array(op4 * x)
330+
327331

328332
@test y y1 rtol = 1e-2
329333
@test y1 y2 rtol = 1e-2
330334
@test y2 y3 rtol = 1e-2
335+
@test y4 y1 rtol = 1e-2
336+
331337
end
332338

333339
@testset "Diag Transpose" begin
334340
y = Array(transpose(F) * x)
335341
y1 = Array(transpose(op1) * x)
336342
y2 = Array(transpose(op2) * x)
337343
y3 = Array(transpose(op3) * x)
344+
y4 = Array(transpose(op4) * x)
338345

339346
@test y y1 rtol = 1e-2
340347
@test y1 y2 rtol = 1e-2
341348
@test y2 y3 rtol = 1e-2
349+
@test y4 y1 rtol = 1e-2
342350
end
343351

344352
@testset "Diag Adjoint" begin
345353
y = Array(adjoint(F) * x)
346354
y1 = Array(adjoint(op1) * x)
347355
y2 = Array(adjoint(op2) * x)
348356
y3 = Array(adjoint(op3) * x)
357+
y4 = Array(adjoint(op4) * x)
349358

350359
@test y y1 rtol = 1e-2
351360
@test y1 y2 rtol = 1e-2
352361
@test y2 y3 rtol = 1e-2
362+
@test y4 y1 rtol = 1e-2
353363
end
354364

355365
@testset "Diag Normal" begin
356366
y = Array(adjoint(F) * F* x)
357367
y1 = Array(normalOperator(op1) * x)
358368
y2 = Array(normalOperator(op2) * x)
359369
y3 = Array(normalOperator(op3) * x)
370+
y4 = Array(normalOperator(op4) * x)
360371

361372
@test y y1 rtol = 1e-2
362373
@test y1 y2 rtol = 1e-2
363374
@test y2 y3 rtol = 1e-2
375+
@test y4 y1 rtol = 1e-2
376+
364377
end
365378

366379
@testset "Weighted Diag Normal" begin
@@ -369,15 +382,19 @@ function testDiagOp(N=32,K=2;arrayType = Array)
369382
prod1 = ProdOp(wop, op1)
370383
prod2 = ProdOp(wop, op2)
371384
prod3 = ProdOp(wop, op3)
385+
prod4 = ProdOp(wop, op4)
372386

373387
y = Array(adjoint(F) * adjoint(wop) * wop * F* x)
374388
y1 = Array(normalOperator(prod1) * x)
375389
y2 = Array(normalOperator(prod2) * x)
376390
y3 = Array(normalOperator(prod3) * x)
391+
y4 = Array(normalOperator(prod4) * x)
377392

378393
@test y y1 rtol = 1e-2
379394
@test y1 y2 rtol = 1e-2
380395
@test y2 y3 rtol = 1e-2
396+
@test y4 y1 rtol = 1e-2
397+
381398
end
382399

383400
end

0 commit comments

Comments
 (0)