diff --git a/src/lbfgs.jl b/src/lbfgs.jl index b4b5b842..a7412038 100644 --- a/src/lbfgs.jl +++ b/src/lbfgs.jl @@ -33,25 +33,26 @@ function LBFGSData( σ₂::Float64 = 0.99, σ₃::Float64 = 10.0, ) where {I <: Integer} + maxmem = max(mem, 1) LBFGSData{T, I}( - max(mem, 1), + maxmem, scaling, convert(T, 1), damped, convert(T, σ₂), convert(T, σ₃), convert(T, 1), - [zeros(T, n) for _ = 1:mem], - [zeros(T, n) for _ = 1:mem], - zeros(T, mem), - inverse ? zeros(T, mem) : zeros(T, 0), - inverse ? Vector{T}(undef, 0) : [zeros(T, n) for _ = 1:mem], - inverse ? Vector{T}(undef, 0) : [zeros(T, n) for _ = 1:mem], - inverse ? Vector{T}(undef, 0) : zeros(T, mem), + [zeros(T, n) for _ = 1:maxmem], + [zeros(T, n) for _ = 1:maxmem], + zeros(T, maxmem), + inverse ? zeros(T, maxmem) : zeros(T, 0), + inverse ? Vector{Vector{T}}(undef, 0) : [zeros(T, n) for _ = 1:maxmem], + inverse ? Vector{Vector{T}}(undef, 0) : [zeros(T, n) for _ = 1:maxmem], + inverse ? Vector{T}(undef, 0) : zeros(T, maxmem), 1, Vector{T}(undef, n), - Array{T}(undef, (n, 2 * mem)), - Vector{T}(undef, 2 * mem), + Array{T}(undef, (n, 2 * maxmem)), + Vector{T}(undef, 2 * maxmem), Vector{T}(undef, n), ) end