%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Zero Freq. Centered Lorentzian %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% define zfc_fit(lo,hi,par) { variable a,f,al,ah,l; al = _A(lo); ah = _A(hi); f = par[1]; a = par[0]^2 * PI/2./f; l = a*f/(al-ah) * ( atan(al/f) - atan(ah/f) ); l = reverse(l); return l; } add_slang_function("zfc",["norm [rms]","f [Hz]"]); %% The below functions provide the parameter default values %% The first function, is a subroutine that I call for *every* %% S-lang fit function default setup. private define param_default_structure(value,freeze,pmin,pmax, hmin,hmax,pstep,prstep) { variable param_def = struct{value, freeze, min, max, hard_min, hard_max, step, relstep}; param_def.value=value; param_def.freeze=freeze; param_def.min=pmin; param_def.max=pmax; param_def.hard_min=hmin; param_def.hard_max=hmax; param_def.step=pstep; param_def.relstep=prstep; return param_def; } define zfc_defaults(i) { switch(i) {case 0: return param_default_structure(0.1,0,0.,1.e8,-1.e16,1.e16,1.e-3,1.e-3); } {case 1: return param_default_structure(1,0,1.e-6,1.e3,0,1.e16,1.e-3,1.e-3); } } set_param_default_hook("zfc","zfc_defaults");