Замечания
Сложные объекты (всё, кроме базовых типов, то есть полиномы и кватернионы в частности) нужно передавать по константной ссылке, а не копируя. Кроме того, у вас в некоторых местах они передаются по ссылке, а внутри не модифицируются, значит тоже должны передаваться по констанстной ссылке.