function [varargout] = algotest2_gm(varargin)
    
    % Auswahl ob mit zufälligen Zahlen oder realen Zahlen gearbeitet werden
    % soll
    if 1 == 0
        % Test mit zufälligen Zahlen
        % Anzahl der Zeilen bestimmen
        zeilen = 10000;

        testdaten = ones(zeilen,5);

        load([pwd, '\testdaten.mat'],'fg');

        testdaten(:,4) = rand(zeilen,1).*(130-50) + 50;
        testdaten(:,5) = fg(testdaten(:,4));


        testdaten(:,5) = testdaten(:,5) .* rand(zeilen,1) .*2./10;
        testdaten(:,4) = testdaten(:,4)./10;
    else
        % Test mit Zahlen aus Comsol
        % Testdaten einlesen
        load([pwd, '\testdaten.mat'],'testdaten','fg');
    end
    
    tic
    % Nicht funktionierende Variante
    % Beginn der eigentlichen Berechnung
    % r in mm
%     rlr = unique(testdaten(:,4).*10);
    
    % z und r in cm
%     zzm = fg(rlr)./10;
%     rlr = rlr./10;
    
    % funktionierende Variante
    rlr = unique(testdaten(:,4));
    zzm = fg(rlr.*10)./10;
    
    nerf = length(testdaten);
    testdaten = [testdaten, linspace(1, nerf, nerf)'];
    
    testdaten = sortrows(testdaten,4);
    
    % Bis hier gibt es keine Probleme
    % Ab hier könnte das Problem stecken
    
    teiler = 24;
    
    di = ceil(nerf/teiler);
    rr = cell(teiler,1);
    zz = cell(teiler,1);
    rhor = cell(teiler,1);
    for indi = 1:teiler
        i1 = (indi-1)*di+1;
        i2 = indi*di;
        if i2 > nerf
            i2 = nerf;
        end
        rr{indi} = testdaten(i1:i2,4);
        zz{indi} = testdaten(i1:i2,5);
        rhor{indi} = testdaten(i1:i2,3);
    end
    
    % Meines erachtens liegt das Problem zwischen hier
    fhnf = @(nrr, nzz, nrlr, nzzm, nrhor)(NF_set3(nrr, nzz, nrlr, nzzm, nrhor));
%     fhnf = @(nrr, nzz, nrlr, nzzm, nrhor)(NF_set3_2(nrr, nzz, nrlr, nzzm, nrhor));
    
    whos
    
    parfor indi = 1:teiler
        rhor{indi} = fhnf(rr{indi},zz{indi},rlr, zzm, rhor{indi});
    end
    % und hier.
    
    d3 = [];
    for indi = 1:teiler
        d3 = [d3; rhor{indi}];
    end
    
    testdaten(:,3) = d3;
    
    testdaten = sortrows(testdaten,6);
    testdaten(:,6) = [];
    
    
    
    % Nachbereitung um Fehler zu erkennen
    pd = sortrows(testdaten,4);
    pd2 = fg(pd(:,4).*10)./10;
    pdd = (pd2-pd(:,5)).*max(pd(:,3))./max(abs(pd2));
    pdd(pdd<0) = -1;
    pdd(pdd>0) = 9;
    
    disp('Die Summe in jeder Zeile müssen übereinstimmen');
    fprintf('Summe dz < 0 %d, Summe d3 = 10: %d\n', sum(pdd>0),sum(pd(:,3) == 10));
    fprintf('Summe dz > 0 %d, Summe d3 < 10: %d\n', sum(pdd<0),sum(pd(:,3) < 10));
    
    toc
    
    
    function [nrhor] = NF_set3(nrr, nzz, nrlr, nzzm, nrhor)
        for NFindi = 1:length(nrlr)
            nrhor((nrr == nrlr(NFindi)) & (nzz < nzzm(NFindi))) = 10;
        end
    end
    function [nrhor] = NF_set3_2(nrr, nzz, nrlr, nzzm, nrhor)
        for NFindi = 1:length(nrlr)
            nrhor((nrr >= (nrlr(NFindi) - eps)) & (nrr <= (nrlr(NFindi) + eps)) & (nzz < nzzm(NFindi))) = 10;
        end
    end
end