@@ -553,51 +553,45 @@ class polynomial : ordered_euclidean_ring_operators< polynomial<T> >
553553
554554
555555template <class T , class U >
556- inline polynomial<T> operator + (const polynomial<T>& a, const U& b)
556+ inline polynomial<T> operator + (polynomial<T> a, const U& b)
557557{
558- polynomial<T> result (a);
559- result += b;
560- return result;
558+ a += b;
559+ return a;
561560}
562561
563562template <class T , class U >
564- inline polynomial<T> operator - (const polynomial<T>& a, const U& b)
563+ inline polynomial<T> operator - (polynomial<T> a, const U& b)
565564{
566- polynomial<T> result (a);
567- result -= b;
568- return result;
565+ a -= b;
566+ return a;
569567}
570568
571569template <class T , class U >
572- inline polynomial<T> operator * (const polynomial<T>& a, const U& b)
570+ inline polynomial<T> operator * (polynomial<T> a, const U& b)
573571{
574- polynomial<T> result (a);
575- result *= b;
576- return result;
572+ a *= b;
573+ return a;
577574}
578575
579576template <class T , class U >
580- inline polynomial<T> operator / (const polynomial<T>& a, const U& b)
577+ inline polynomial<T> operator / (polynomial<T> a, const U& b)
581578{
582- polynomial<T> result (a);
583- result /= b;
584- return result;
579+ a /= b;
580+ return a;
585581}
586582
587583template <class T , class U >
588- inline polynomial<T> operator % (const polynomial<T>& a, const U& b)
584+ inline polynomial<T> operator % (polynomial<T> a, const U& b)
589585{
590- polynomial<T> result (a);
591- result %= b;
592- return result;
586+ a %= b;
587+ return a;
593588}
594589
595590template <class U , class T >
596- inline polynomial<T> operator + (const U& a, const polynomial<T>& b)
591+ inline polynomial<T> operator + (const U& a, polynomial<T> b)
597592{
598- polynomial<T> result (b);
599- result += a;
600- return result;
593+ b += a;
594+ return b;
601595}
602596
603597template <class U , class T >
@@ -609,11 +603,10 @@ inline polynomial<T> operator - (const U& a, const polynomial<T>& b)
609603}
610604
611605template <class U , class T >
612- inline polynomial<T> operator * (const U& a, const polynomial<T>& b)
606+ inline polynomial<T> operator * (const U& a, polynomial<T> b)
613607{
614- polynomial<T> result (b);
615- result *= a;
616- return result;
608+ b *= a;
609+ return b;
617610}
618611
619612template <class T >
@@ -632,19 +625,17 @@ inline bool operator < (const polynomial<T> &a, const polynomial<T> &b)
632625}
633626
634627template <typename T, typename U>
635- inline polynomial<T> operator >> (const polynomial<T>& a, const U& b)
628+ inline polynomial<T> operator >> (polynomial<T> a, const U& b)
636629{
637- polynomial<T> result (a);
638- result >>= b;
639- return result;
630+ a >>= b;
631+ return a;
640632}
641633
642634template <typename T, typename U>
643- inline polynomial<T> operator << (const polynomial<T>& a, const U& b)
635+ inline polynomial<T> operator << (polynomial<T> a, const U& b)
644636{
645- polynomial<T> result (a);
646- result <<= b;
647- return result;
637+ a <<= b;
638+ return a;
648639}
649640
650641// Unary minus (negate).
0 commit comments