Account for complex value during resid and steady

kalman-mex
Johannes Pfeifer 2023-08-27 13:47:05 +02:00 committed by Sébastien Villemot
parent 7df3ff5059
commit 87ce652088
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
3 changed files with 25 additions and 7 deletions

View File

@ -51,7 +51,7 @@ if any(imag(oo_.steady_state))
end
if options_.steadystate_flag
[oo_.steady_state,M_.params,info] = ...
[oo_.steady_state,M_.params] = ...
evaluate_steady_state(oo_.steady_state,[oo_.exo_steady_state; oo_.exo_det_steady_state],M_,options_,false);
end
@ -91,7 +91,8 @@ if nargout == 0
first_eq = 1;
last_eq = M_.orig_endo_nbr;
end
disp_format_tags=sprintf('Equation number %%%uu: %%-%us: %%14.6f\n',length(num2str(M_.eq_nbr)),size(strvcat(tags(:,3)),2)+1);
disp_format_tags_real=sprintf('Equation number %%%uu: %%-%us: %%14.6f\n',length(num2str(M_.eq_nbr)),size(strvcat(tags(:,3)),2)+1);
disp_format_tags_complex=sprintf('Equation number %%%uu: %%-%us: real: %%14.6f, imaginary: %%g\n',length(num2str(M_.eq_nbr)),size(strvcat(tags(:,3)),2)+1);
for i=first_eq:last_eq
if abs(z(i)) < options_.solve_tolf/100
tmp = 0;
@ -105,9 +106,17 @@ if nargout == 0
end
if ~(non_zero && tmp == 0)
if ~istag || length(ind) == 0
disp(['Equation number ' int2str(i) ' : ' num2str(tmp)])
if ~isreal(z)
fprintf('Equation number %u: %g (imaginary part: %g)\n', i, real(tmp), imag(tmp));
else
fprintf('Equation number %u: %g\n', i, tmp);
end
else
fprintf(disp_format_tags, i, tg{ind , 2}, tmp)
if ~isreal(z)
fprintf(disp_format_tags_complex, i, tg{ind , 2}, real(tmp), imag(tmp) );
else
fprintf(disp_format_tags_real, i, tg{ind , 2}, tmp);
end
end
end
end

View File

@ -94,9 +94,18 @@ else
end
end
if options_.debug
fprintf('\nThe steady state computation failed. It terminated with the following values:\n')
fprintf('\nsteady: The steady state computation failed. It terminated with the following values:\n')
if ~isreal(oo_.steady_state)
format_string=sprintf('%%-%us= %%g%%+gi\n',size(strvcat(M_.endo_names),2)+1);
else
format_string=sprintf('%%-%us= %%14.6f\n',size(strvcat(M_.endo_names),2)+1);
end
for i=1:M_.orig_endo_nbr
fprintf('%s \t\t %g\n', M_.endo_names{i}, oo_.steady_state(i));
if ~isreal(oo_.steady_state)
fprintf(format_string, M_.endo_names{i}, real(oo_.steady_state(i)),imag(oo_.steady_state(i)));
else
fprintf(format_string, M_.endo_names{i}, oo_.steady_state(i));
end
end
end
print_info(info,options_.noprint, options_);

@ -1 +1 @@
Subproject commit d95c2f2bd81a4e8fc56552d19e62ac37b8d08a81
Subproject commit bdb5cdacf22019c75db38dcdfe696f2978ab31f9