Я провел несколько простых тестов функций abs() и fabs(), и я не понимаю, каковы преимущества использования fabs(), если это:
1) медленнее
2) работает только на поплавках
3) генерирует исключение, если оно используется в другом типе
In [1]: %timeit abs(5)
10000000 loops, best of 3: 86.5 ns per loop
In [3]: %timeit fabs(5)
10000000 loops, best of 3: 115 ns per loop
In [4]: %timeit abs(-5)
10000000 loops, best of 3: 88.3 ns per loop
In [5]: %timeit fabs(-5)
10000000 loops, best of 3: 114 ns per loop
In [6]: %timeit abs(5.0)
10000000 loops, best of 3: 92.5 ns per loop
In [7]: %timeit fabs(5.0)
10000000 loops, best of 3: 93.2 ns per loop
он еще медленнее на поплавках!
От того, где я стою, единственное преимущество использования fabs() - сделать ваш код более читаемым, потому что, используя его, вы четко заявляете о своем намерении работать с значениями float/double point
Есть ли другое использование fabs()?