@@ -552,51 +552,45 @@ class polynomial : ordered_euclidean_ring_operators< polynomial<T> >
552552
553553
554554template <class T , class U >
555- inline polynomial<T> operator + (const polynomial<T>& a, const U& b)
555+ inline polynomial<T> operator + (polynomial<T> a, const U& b)
556556{
557- polynomial<T> result (a);
558- result += b;
559- return result;
557+ a += b;
558+ return a;
560559}
561560
562561template <class T , class U >
563- inline polynomial<T> operator - (const polynomial<T>& a, const U& b)
562+ inline polynomial<T> operator - (polynomial<T> a, const U& b)
564563{
565- polynomial<T> result (a);
566- result -= b;
567- return result;
564+ a -= b;
565+ return a;
568566}
569567
570568template <class T , class U >
571- inline polynomial<T> operator * (const polynomial<T>& a, const U& b)
569+ inline polynomial<T> operator * (polynomial<T> a, const U& b)
572570{
573- polynomial<T> result (a);
574- result *= b;
575- return result;
571+ a *= b;
572+ return a;
576573}
577574
578575template <class T , class U >
579- inline polynomial<T> operator / (const polynomial<T>& a, const U& b)
576+ inline polynomial<T> operator / (polynomial<T> a, const U& b)
580577{
581- polynomial<T> result (a);
582- result /= b;
583- return result;
578+ a /= b;
579+ return a;
584580}
585581
586582template <class T , class U >
587- inline polynomial<T> operator % (const polynomial<T>& a, const U& b)
583+ inline polynomial<T> operator % (polynomial<T> a, const U& b)
588584{
589- polynomial<T> result (a);
590- result %= b;
591- return result;
585+ a %= b;
586+ return a;
592587}
593588
594589template <class U , class T >
595- inline polynomial<T> operator + (const U& a, const polynomial<T>& b)
590+ inline polynomial<T> operator + (const U& a, polynomial<T> b)
596591{
597- polynomial<T> result (b);
598- result += a;
599- return result;
592+ b += a;
593+ return b;
600594}
601595
602596template <class U , class T >
@@ -608,11 +602,10 @@ inline polynomial<T> operator - (const U& a, const polynomial<T>& b)
608602}
609603
610604template <class U , class T >
611- inline polynomial<T> operator * (const U& a, const polynomial<T>& b)
605+ inline polynomial<T> operator * (const U& a, polynomial<T> b)
612606{
613- polynomial<T> result (b);
614- result *= a;
615- return result;
607+ b *= a;
608+ return b;
616609}
617610
618611template <class T >
@@ -631,19 +624,17 @@ inline bool operator < (const polynomial<T> &a, const polynomial<T> &b)
631624}
632625
633626template <typename T, typename U>
634- inline polynomial<T> operator >> (const polynomial<T>& a, const U& b)
627+ inline polynomial<T> operator >> (polynomial<T> a, const U& b)
635628{
636- polynomial<T> result (a);
637- result >>= b;
638- return result;
629+ a >>= b;
630+ return a;
639631}
640632
641633template <typename T, typename U>
642- inline polynomial<T> operator << (const polynomial<T>& a, const U& b)
634+ inline polynomial<T> operator << (polynomial<T> a, const U& b)
643635{
644- polynomial<T> result (a);
645- result <<= b;
646- return result;
636+ a <<= b;
637+ return a;
647638}
648639
649640// Unary minus (negate).
0 commit comments