ic, good idea.

i did a little more investigation, i think i know the reason for the "bug".

I have a feeling about the "bug" when the values for p and f are not exactly as they seems.
for example p = 1.8, but the computer instead stored it as 1.80000000000000000000001

so i constructed a code

[code]if(f>0)dv1=0.5; // trying to solve bug of f = 1.8, p = 1.8, lines are drawn in wrong, should be invisible
else if(f<0)dv1=-0.5;
else dv1=0;
//f = ((int)(f*100000+dv))/100000.;
f = (int)(f*10+dv1)/10.;

if(p>0)dv2=0.5; // trying to solve bug of f = 1.8, p = 1.8, lines are drawn in wrong, should be invisible
else if(p<0)dv2=-0.5;
else dv2=0;
//f = ((int)(f*100000+dv))/100000.;
p = (int)(p*10+dv2)/10.;[/code]

to put on the left [b][color=red](this is important the sequence) [/color][/b]of [code]q=f*p/(f+s*p);[/code]

the idea i think is to force the computer to store p = 1.8 instead of 1.80000000000000000000001
and sub into the equation,  q=f*p/(f+s*p);

the slider bars default may have caused the 1.8000000000001  i believe.

i think it is ok now! thanks for help and ideas :)

i will find out more bugs to overcome, still can do more : ;D