Skip to content

Commit c01c4de

Browse files
committed
minor simplifications and refactoring
1 parent b0fc2f2 commit c01c4de

File tree

2 files changed

+32
-42
lines changed

2 files changed

+32
-42
lines changed

src/linearoperators/LBFGS.jl

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,41 +31,43 @@ mutable struct LBFGS{R, T <: BlockArray, M, I <: Integer} <: LinearOperator
3131
alphas::Array{R, 1}
3232
H::R
3333

34-
LBFGS(currmem::I,
35-
curridx::I,
36-
s::T,
37-
y::T,
38-
s_M::Array{T,1},
39-
y_M::Array{T,1},
40-
ys_M::Array{R,1},
41-
alphas::Array{R,1},
42-
H::R,
43-
M) where {R, T, I} =
44-
new{R,T,M,I}(currmem, curridx, s, y, s_M, y_M, ys_M,alphas, H)
34+
# LBFGS(currmem::I,
35+
# curridx::I,
36+
# s::T,
37+
# y::T,
38+
# s_M::Array{T,1},
39+
# y_M::Array{T,1},
40+
# ys_M::Array{R,1},
41+
# alphas::Array{R,1},
42+
# H::R,
43+
# M) where {R, T, I} =
44+
# new{R,T,M,I}(currmem, curridx, s, y, s_M, y_M, ys_M,alphas, H)
4545

4646
end
4747

4848
#default constructor
49+
4950
function LBFGS(domainType, dim_in, M::I) where {I <: Integer}
50-
s_M = [blockzeros(domainType,dim_in) for i = 1:M]
51-
y_M = [blockzeros(domainType,dim_in) for i = 1:M]
52-
s = blockzeros(domainType,dim_in)
53-
y = blockzeros(domainType,dim_in)
54-
R = typeof(domainType) <: Tuple ? real(domainType[1]) : real(domainType)
55-
ys_M = zeros(R,M)
56-
alphas = zeros(R,M)
57-
LBFGS(0, 0, s, y, s_M, y_M, ys_M, alphas, one(R), M)
51+
s_M = [blockzeros(domainType, dim_in) for i = 1:M]
52+
y_M = [blockzeros(domainType, dim_in) for i = 1:M]
53+
s = blockzeros(domainType, dim_in)
54+
y = blockzeros(domainType, dim_in)
55+
T = typeof(s)
56+
R = typeof(domainType) <: Tuple ? real(domainType[1]) : real(domainType)
57+
ys_M = zeros(R, M)
58+
alphas = zeros(R, M)
59+
LBFGS{R, T, M, I}(0, 0, s, y, s_M, y_M, ys_M, alphas, one(R))
5860
end
5961

6062
function LBFGS(dim_in, M::I) where {I <: Integer}
61-
domainType = eltype(dim_in) <: Integer ? Float64 : ([Float64 for i in eachindex(dim_in)]...)
62-
LBFGS(domainType,dim_in,M)
63+
domainType = eltype(dim_in) <: Integer ? Float64 : ([Float64 for i in eachindex(dim_in)]...)
64+
LBFGS(domainType, dim_in, M)
6365
end
6466

65-
function LBFGS(x::T, M::I) where { T <: BlockArray, I <: Integer}
67+
function LBFGS(x::T, M::I) where {T <: BlockArray, I <: Integer}
6668
domainType = blockeltype(x)
6769
dim_in = blocksize(x)
68-
LBFGS(domainType,dim_in,M)
70+
LBFGS(domainType, dim_in, M)
6971
end
7072

7173
"""
@@ -127,8 +129,9 @@ function loop2!(d::T, idx::Int, L::LBFGS{R, T, M, I}) where {R, T, M, I}
127129
end
128130

129131
# Properties
130-
domainType(L::LBFGS{R, T, M}) where {R, T, M} = blockeltype(L.y_M[1])
131-
codomainType(L::LBFGS{R, T, M}) where {R, T, M} = blockeltype(L.y_M[1])
132+
133+
domainType(L::LBFGS{R, T, M, I}) where {R, T, M, I} = blockeltype(L.y_M[1])
134+
codomainType(L::LBFGS{R, T, M, I}) where {R, T, M, I} = blockeltype(L.y_M[1])
132135

133136
size(A::LBFGS) = (blocksize(A.s), blocksize(A.s))
134137

src/utilities/block.jl

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,10 @@
1-
# not sure about exporting this!
2-
#export RealOrComplex, BlockArray
3-
#export blocksize,
4-
# blockeltype,
5-
# blocklength,
6-
# blockvecnorm,
7-
# blockmaxabs,
8-
# blocksimilar,
9-
# blockcopy,
10-
# blockcopy!,
11-
# blockset!,
12-
# blockvecdot,
13-
# blockzeros,
14-
# blockaxpy!
15-
161
# Define block-arrays
172

183
const RealOrComplex{R} = Union{R, Complex{R}}
19-
const BlockArray{R} = Union{AbstractArray{C, N} where {C <: RealOrComplex{R}, N},
20-
Tuple{Vararg{AbstractArray{C, N} where {C <: RealOrComplex{R}, N}}}}
4+
const BlockArray{R} = Union{
5+
AbstractArray{C, N} where {C <: RealOrComplex{R}, N},
6+
Tuple{Vararg{AbstractArray{C, N} where {C <: RealOrComplex{R}, N}}}
7+
}
218

229
# Operations on block-arrays
2310

0 commit comments

Comments
 (0)