function out = golden( fmin, fmax, a, A, b, B, D)


% D  = požadovaná hodnota èinitele odrazu


tau  = 2 / (1+sqrt(5));          % zlatý øez

f   = fmin + [0; 1-tau; tau; 1]*(fmax-fmin);
mod = fss2( f, a, A, b, B);      % poèítáme 4 funkèní hodnoty

n = 1;
while min( abs(D-mod))>0.001         % HLEDÁNÍ MAXIMA MODULU È.ODRAZU
  
  [rmx,imx] = max( abs( D-mod));         % hodnoty modulu èinitele odrazu
  out(n) = min( abs( D-mod));
  n = n+1;

  if imx==1
    f( 1:2,1)  = f( 2:3, 1);
    f( 3,  1)  = tau*(f(4,1)-f(1,1)) + f(1,1); 
    mod(1:2,1) = mod(2:3,1);
    mod(3,  1) = fss2( f(3), a, A, b, B);
  end

  if imx==4
    f( 3:4,1)  = f( 2:3, 1);
    f( 2,  1)  = (1-tau)*(f(4,1)-f(1,1)) + f(1,1); 
    mod(3:4,1) = mod(2:3,1);
    mod(2,  1) = fss2( f(2), a, A, b, B);
  end
  
end

[rmx,imx] = min( abs(D-mod));
%out = f( imx);