nx = 2 
 
ny = 1 
 
ns = 0 
 
nv = 3 
 
ne = 3 
 
jumps_to_approximate = [1] 
 
variables = ["z", "k", "c"] 
 
function nlsolve_static_equations(f::Array{T,1},x::Array{T,1}) where {T<:Number} 
 
  f[1] = x[1] - (0.8*x[1])
  f[2] = x[3]^(-1.1) - (0.99*x[3]^(-1.1)*(1.0 - 0.025 + 0.30*exp(x[1])*x[2]^(0.30 - 1.0)))
  f[3] = x[2] - ((1.0 - 0.025)*x[2] + exp(x[1])*x[2]^0.30 - x[3])

end 
 
function static_equations(x::Array{T,1}) where {T<:Number} 
 
  f = Array{T,1}(undef,length(x)) 
 
  f[1] = x[1] - (0.8*x[1])
  f[2] = x[3]^(-1.1) - (0.99*x[3]^(-1.1)*(1.0 - 0.025 + 0.30*exp(x[1])*x[2]^(0.30 - 1.0)))
  f[3] = x[2] - ((1.0 - 0.025)*x[2] + exp(x[1])*x[2]^0.30 - x[3])

  return f 
 
end 
 
function dynamic_equations(x::Array{T,1}) where {T<:Number} 
 
  f = Array{T,1}(undef,3) 
 
  f[1] = x[4] - (0.8*x[1])
  f[2] = x[3]^(-1.1) - (0.99*x[6]^(-1.1)*(1.0 - 0.025 + 0.30*exp(x[4])*x[5]^(0.30 - 1.0)))
  f[3] = x[5] - ((1.0 - 0.025)*x[2] + exp(x[1])*x[2]^0.30 - x[3])

  return f 
 
end 

function dynamic_eqn_1(x::Array{T,1}) where {T<:Number} 
 
  f = x[4] - (0.8*x[1])

  return f 
 
end 

function dynamic_eqn_2(x::Array{T,1}) where {T<:Number} 
 
  f = x[3]^(-1.1) - (0.99*x[6]^(-1.1)*(1.0 - 0.025 + 0.30*exp(x[4])*x[5]^(0.30 - 1.0)))

  return f 
 
end 

function dynamic_eqn_3(x::Array{T,1}) where {T<:Number} 
 
  f = x[5] - ((1.0 - 0.025)*x[2] + exp(x[1])*x[2]^0.30 - x[3])

  return f 
 
end 

individual_equations = Array{Function}(undef,3) 
individual_equations[1] = dynamic_eqn_1
individual_equations[2] = dynamic_eqn_2
individual_equations[3] = dynamic_eqn_3

function closure_projection_equations(state,scaled_weights,order,domain,approximate) 
 
  function projection_equations(f::Array{T,1},x::Array{T,1}) where {T<:Number} 
 
    approx1 = approximate(scaled_weights[1],x[1+1:end],order,domain)

    #f = Array{T,1}(undef,3) 
 
    f[1] = x[2] - (0.8*state[1])
    f[2] = x[1]^(-1.1) - (0.99*approx1^(-1.1)*(1.0 - 0.025 + 0.30*exp(x[2])*x[3]^(0.30 - 1.0)))
    f[3] = x[3] - ((1.0 - 0.025)*state[2] + exp(state[1])*state[2]^0.30 - x[1])

    #return f 
 
  end 
 
  return projection_equations 
 
end 

function closure_projection_equations_pl(variables,grid,state,approximate) 
 
  function projection_equations_pl(f::Array{T,1},x::Array{T,1}) where {T<:Number} 
 
    approx1 = approximate(variables[1],grid,x[1+1:end])

    #f = Array{T,1}(undef,3) 
 
    f[1] = x[2] - (0.8*state[1])
    f[2] = x[1]^(-1.1) - (0.99*approx1^(-1.1)*(1.0 - 0.025 + 0.30*exp(x[2])*x[3]^(0.30 - 1.0)))
    f[3] = x[3] - ((1.0 - 0.025)*state[2] + exp(state[1])*state[2]^0.30 - x[1])

    #return f 
 
  end 
 
  return projection_equations_pl 
 
end 

unassigned_parameters = String[]