Огонь!) Буду нагло пользоваться!!
А скажи пожалуйста, откуда в linear_interpolate два последних условия берутся и для чего они?
Это для устойчивости.. Дело в том, что если разность fb-fa окажется большой, а интервал b-a очень маленьким, то из-за ограничения машинной точности, в результате можете ерунду получить.. Вот чтобы этого не было мы подстраховываемся теми двумя условиями..)