@@ -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
4646end
4747
4848# default constructor
49+
4950function 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))
5860end
5961
6062function 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)
6365end
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)
6971end
7072
7173"""
@@ -127,8 +129,9 @@ function loop2!(d::T, idx::Int, L::LBFGS{R, T, M, I}) where {R, T, M, I}
127129end
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
133136size (A:: LBFGS ) = (blocksize (A. s), blocksize (A. s))
134137
0 commit comments