Display of decision rules: deal with overflow of fields

trustregion
Johannes Pfeifer 2022-02-20 11:00:34 +01:00
parent e2694381dd
commit d79895b66a
1 changed files with 14 additions and 9 deletions

View File

@ -72,6 +72,7 @@ if options_.loglinear
end
header_label_format = sprintf('%%%ds',header_label_length);
value_format_float = sprintf('%%%d.6f',header_label_length);
value_format_overflow = sprintf('%%%d.6e',header_label_length);
value_format_zero = sprintf('%%%dd',header_label_length);
% account for additional characters introduced by auxiliary variables
@ -122,7 +123,7 @@ for i=1:nvar
if order > 1
x = x + dr.ghs2(ivar(i))/2;
end
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_);
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,value_format_overflow,header_label_length,flag,options_);
end
if flag
disp(str)
@ -132,7 +133,7 @@ if order > 1
flag = 0;
for i=1:nvar
x = dr.ghs2(ivar(i))/2;
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_);
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,value_format_overflow,header_label_length,flag,options_);
end
if flag
disp(str)
@ -155,7 +156,7 @@ for k=1:nx
end
for i=1:nvar
x = dr.ghx(ivar(i),k);
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_);
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,value_format_overflow,header_label_length,flag,options_);
end
if flag
disp(str)
@ -169,7 +170,7 @@ for k=1:nu
str = sprintf(label_format, M_.exo_names{k});
for i=1:nvar
x = dr.ghu(ivar(i),k);
[str,flag] = get_print_string(str, x, value_format_zero, value_format_float, flag, options_);
[str,flag] = get_print_string(str, x, value_format_zero, value_format_float, value_format_overflow, header_label_length, flag, options_);
end
if flag
disp(str)
@ -190,7 +191,7 @@ if order > 1
else
x = dr.ghxx(ivar(i),(k-1)*nx+j);
end
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_);
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,value_format_overflow,header_label_length,flag,options_);
end
if flag
disp(str)
@ -210,7 +211,7 @@ if order > 1
else
x = dr.ghuu(ivar(i),(k-1)*nu+j);
end
[str,flag]=get_print_string(str, x, value_format_zero, value_format_float, flag, options_);
[str,flag]=get_print_string(str, x, value_format_zero, value_format_float, value_format_overflow, header_label_length, flag, options_);
end
if flag
disp(str)
@ -227,7 +228,7 @@ if order > 1
str = sprintf(label_format,str1);
for i=1:nvar
x = dr.ghxu(ivar(i),(k-1)*nu+j);
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_);
[str,flag]=get_print_string(str,x,value_format_zero,value_format_float,value_format_overflow,header_label_length,flag,options_);
end
if flag
disp(str)
@ -238,10 +239,14 @@ end
end
function [str,flag]=get_print_string(str, x, value_format_zero, value_format_float, flag, options_)
function [str,flag]=get_print_string(str, x, value_format_zero, value_format_float, value_format_overflow, max_length, flag, options_)
if abs(x) >= options_.dr_display_tol
flag = 1;
str = [str sprintf(value_format_float, x)];
temp=sprintf(value_format_float, x);
if length(temp)>max_length
temp=sprintf(value_format_overflow, x);
end
str = [str temp];
else
str = [str sprintf(value_format_zero, 0)];
end