function numtxt=exp2text(enum,sdig)
% Converts numerical format to exponential format (multiples of a power of 10)
% to text format with addition of TeX instructions for better visualization in text labels
%
% enum = numerical value to be print
% sdig = number of significant digits (Optional, default value: 3)
%
% This routine works for both Real and Complex numbers
%
%
% ~ Written by Vasilis Kapetanidis (2007)
%
%
% Example:
% --------
%
%{
x=0.0014982; % Real Number Example
y=0.1341+0.325i; % Complex Number Example
figure
text(0.1,0.95,['\bf{Real Numbers:}'])
text(0.1,0.9,['Simple num2str: ',num2str(x)])
text(0.1,0.85,['Simple exp format: ',num2str(x,'%.3e')])
text(0.1,0.75,['exp2text: ',exp2text(x)])
text(0.1,0.55,['\bf{Complex Numbers:}'])
text(0.1,0.5,['Simple num2str: ',num2str(y)])
text(0.1,0.45,['Simple exp format: ',num2str(y,'%.3e')])
text(0.1,0.35,['exp2text: ',exp2text(y)])
%}
if nargin<2, sdig=3; end
sdig=sdig-1;
if isreal(enum)
frm=['%.',num2str(sdig),'e']; % exponential format
tmp=num2str(enum,[frm]);
idx=find(tmp=='e');
exnum=str2num(tmp(idx+1:end)); % exponent with no insignificant zeroes
numtxt=[tmp(1:idx-1),'\cdot10^{',num2str(exnum),'}'];
else % Complex Numbers
amp=abs(enum);
ang=angle(enum)/pi;
frm=['%.',num2str(sdig),'e']; % exponential format
tmp=num2str(amp,[frm]);
idx=find(tmp=='e');
exnum=str2num(tmp(idx+1:end)); % exponent with no insignificant zeroes
numamp=[tmp(1:idx-1),'\cdot10^{',num2str(exnum),'}']; % complex magnitude
% adding complex phase (3 fractional digits format)
if ang<0
numtxt=[numamp,'\cdote^{-i\cdot',num2str(abs(ang),'%.3f'),'\pi}'];
else
numtxt=[numamp,'\cdote^{i\cdot',num2str(ang,'%.3f'),'\pi}'];
end
% Remove the following { to use *10^ form on the phase
%{
tmp=num2str(ang,[frm]);
idx=find(tmp=='e');
exnum=str2num(tmp(idx+1:end));
numtxt=[numamp,'\cdote^{',tmp(1:idx-1),'\cdot10^{',num2str(exnum),'}\pii}']; % adding complex phase
%}
end