Пример использования реализации:

Эта кусочно линейная функция заданная двумя точками
Точки с одинаковым х переписывают друг друга
Входящие точки: x=0,y=100 и x=10,y=122

F = PieceWise(0,100)(10,122) #.. и т.д

Добавим еще одну точку, к примеру, x=30, y=0

F = F(30, 0)

Вычислим значение от x = 5
Cложность этого алгоритма:
O(n) - в худшем случае
O(1) - в лучшем, когда y не нужно вычислять

y = F.y(5) # Результат: y = 111

Вывод таблицы

F.table()

Результат

x1 x2 a b
(0, 100) (10, 122) 2.200 100.000
(10, 122) (30, 0) -6.100 183.000