function [Q,FCNT]=quadAdaptive(fhandle,tol,a,b,fa,fab,fb,a0b0)
if (b-a)/a0b0 < 0.00000001 %Abbruchbedingung über Intervalllänge
    Q=0;
    FCNT=0;
else
    % Berechne trapez mit n = 4 auf [a,b]
    h = (b-a)/4;
    ferster = fhandle((3*a+b)/4);     % Funktionswert des Mittelpunkts auf [a,(a+b)/2]
    fzweiter = fhandle((a+3*b)/4);     % Funktionswert des Mittelpunkts auf [(a+b)/2,b]
    trapez = h*(fa/2+ferster+fab+fzweiter+fb/2);
    Tabs = h/24 * (-3*fa + 4*ferster - 2*fab + 4*fzweiter - 3*fb); %Tdach - Trapez
    FCNT = 2; % 6 Funktionsauswertungen von Trapezdach
        
    if abs(Tabs) < tol
        Q=trapez;
    else
       [irgendeins, irgendzwei] = quadAdaptive(fhandle,tol/2,a,(a+b)/2,fa,ferster,fab,a0b0);
       [irgenddrei, irgendvier] = quadAdaptive(fhandle,tol/2,(a+b)/2,b,fab,fzweiter,fb,a0b0);
       Q = irgendeins + irgenddrei;
       FCNT = FCNT + irgendzwei + irgendvier;
    end
end


    




































%copyright phx ltd