function data = computesupersetafsCAA(object, data, Footnote, Polysettings)

data.isAFSC = 0;
data.isAFSA = 0;

k = data.k;
n = data.n;
s = data.s;
noiseC = data.noiseC;
V = data.V;
U = data.U;
S = data.S;

MaxLang = 10000;
MaxFunC = 20000;
epsFun = 1.e-10;
epsKante = getsetvar(Polysettings(3), 1.E-8, 1.E-1, 0, 1);
epsRand = getsetvar(Polysettings(2), 1.E-8, 1.E-1, 0, 1);
noiseC = -getsetvar(Polysettings(1), 1.E-12, data.maxnoise, 0, 0);
noiseA = noiseC;

actpwd = pwd;
cd(data.calca);

dlmwrite('wrap/allg.txt',[n; k; s; MaxLang; MaxFunC],'precision','%d');
dlmwrite('wrap/allg.txt',[epsFun; epsKante; epsRand; noiseC; noiseA],'-append','precision','%e');
dlmwrite('wrap/L.txt',V*S(:,1:s),'precision','%15.15e','delimiter',' ');
dlmwrite('wrap/R.txt',(U(:,1:s))','precision','%15.15e','delimiter',' ');
dlmwrite('wrap/InitT.txt',[1 0 0;1 0 0;1 0 0],'precision','%15.15e','delimiter',' ');
dlmwrite('wrap/tim.txt',0,'precision','%d');
opt = 1;

arch = computer('arch');

fprintf(' C routine (FIRPOL for factor C) in progress ... (press CTRL + C to cancel) ... ');
set(object,'Enable','off');

set(gcf,'Pointer','Watch');
pause(0.5);
tic
if (strcmp(arch,'maci64') == 1) || (strcmp(arch,'maca64') == 1)
    system(['./AFScomputationMAC64.exe ',num2str(opt)]);
elseif strcmp(arch,'win32') == 1
    system(['AFScomputationWINDOWS32.exe ',num2str(opt)]);
elseif strcmp(arch,'win64') == 1
    system(['AFScomputationWINDOWS64.exe ',num2str(opt)]);
elseif strcmp(arch,'glnx86') == 1
    system(['./AFScomputationUNIX32.exe ',num2str(opt)]);
elseif strcmp(arch,'glnxa64') == 1
    system(['./AFScomputationUNIX64.exe ',num2str(opt)]);
else
    fprintf(2,'No executable version for this type of system.\n');
    set(gcf,'Pointer','arrow');
    set(object,'Enable','on');
    cd(actpwd);
    return;
end

tim = load('wrap/tim.txt');
AFSC = load('wrap/PunkteOut.txt');
AFSC(:,1) = AFSC(:,1)*S(1,1)/S(2,2);
AFSC(:,2) = AFSC(:,2)*S(1,1)/S(3,3);

if (max(max(abs(AFSC))) == 0) || (tim(1) == 0)
    fprintf('computation canceled or failed.\n');
    data.isAFSC = 0;
else
    fprintf('ready, time: %2.2f s.\n',tim(2));
    data.isAFSC = 1;
end

colfn = 'k';
if data.isAFSC == 1
    strfn = [' FIRPOL computation time for C: ',num2str(tim(2),'%2.2f'),' s'];
else
    strfn = ' FIRPOL computation for C failed: (increase "e-neg. entr" or other control parameter)';
    colfn = 'r';
end
set(Footnote,'String',strfn,'ForegroundColor',colfn);

dlmwrite('wrap/allg.txt',[k; n; s; MaxLang; MaxFunC],'precision','%d');
dlmwrite('wrap/allg.txt',[epsFun; epsKante; epsRand; noiseC; noiseA],'-append','precision','%e');
dlmwrite('wrap/L.txt',U*S(:,1:s),'precision','%15.15e','delimiter',' ');
dlmwrite('wrap/R.txt',V(:,1:s)','precision','%15.15e','delimiter',' ');
dlmwrite('wrap/InitT.txt',[1 0 0;1 0 0;1 0 0],'precision','%15.15e','delimiter',' ');
dlmwrite('wrap/tim.txt',0,'precision','%d');

fprintf(' C routine (FIRPOL for factor S) in progress ... (press CTRL + C to cancel) ... ');
tic
if (strcmp(arch,'maci64') == 1) || (strcmp(arch,'maca64') == 1)
    system(['./AFScomputationMAC64.exe ',num2str(opt)]);
elseif strcmp(arch,'win32') == 1
    system(['AFScomputationWINDOWS32.exe ',num2str(opt)]);
elseif strcmp(arch,'win64') == 1
    system(['AFScomputationWINDOWS64.exe ',num2str(opt)]);
elseif strcmp(arch,'glnx86') == 1
    system(['./AFScomputationUNIX32.exe ',num2str(opt)]);
elseif strcmp(arch,'glnxa64') == 1
    system(['./AFScomputationUNIX64.exe ',num2str(opt)]);
else
    fprintf(2,'No executable version for this type of system.\n');
    set(gcf,'Pointer','arrow');
    set(hObject,'Enable','on');
    cd(actpwd);
    return;
end
set(gcf,'Pointer','arrow');
set(object,'Enable','on');

tim = load('wrap/tim.txt');
AFSA = load('wrap/PunkteOut.txt');
if (max(max(abs(AFSA))) == 0) || (tim(1) == 0)
    data.isAFSA = 0;
    fprintf('computation canceled or failed.\n');
else
    data.isAFSA = 1;
    fprintf('ready, time: %2.2f s.\n',tim(2));
end

if data.isAFSA == 1
    strfn = [strfn,',  FIRPOL computation time for S: ',num2str(tim(2),'%2.2f'),' s'];
else
    strfn = [strfn,',  FIRPOL computation for S failed: (increase "e-neg. entr" or other control parameter)'];
    colfn = 'r';
end
set(Footnote,'String',strfn,'ForegroundColor',colfn);

cd(actpwd);

if data.isAFSC
    data.xlc = 1.5*[min(AFSC(:,1)) max(AFSC(:,1))];
    data.ylc = 1.5*[min(AFSC(:,2)) max(AFSC(:,2))];
else
    data.xlc = [0 2];
    data.ylc = [-1 1];
end

if data.isAFSA
    data.xla = 1.5*[min(AFSA(:,1)) max(AFSA(:,1))];
    data.yla = 1.5*[min(AFSA(:,2)) max(AFSA(:,2))];
else
    data.xla = [0 2];
    data.yla = [-1 1];
end

data.AFSC = AFSC;
data.AFSA = AFSA;
