+}\r
+\r
+template < typename N, typename E >\r
+number< N, E >& number< N, E >::operator-= (const number< N, E >& n)\r
+{\r
+ //TODO IMPLEMENTAR\r
+ return *this;
+}\r
+\r
+template < typename N, typename E >\r
+number< N, E > operator- (const number< N, E >& n1, const number< N, E >& n2)\r
+{\r
+ number< N, E > tmp = n1;\r
+ tmp -= n2;\r
+ return tmp;\r
+}\r
+\r
+\r
+template < typename N, typename E >\r
+bool number< N, E >::operator< (const number< N, E >& n)\r
+{\r
+ number< N, E > n1 = *this;\r
+ number< N, E > n2 = n;\r
+\r
+ // igualo los largos\r
+ n1.normalize_length(n2);\r
+ n2.normalize_length(n1);\r
+\r
+ // obtengo el largo \r
+ size_type length = n1.chunk.size();\r
+ size_type i = length - 1;\r
+\r
+ // me voy fijando desde "la cifra" más significativa si alguno es menor que el otro\r
+ // sigo iterando si son iguales hasta recorrer todo el número hasta la parte menos significativa\r
+ while (i > 0)\r
+ {\r
+ if (n1[i]<n2[i])\r
+ return true;\r
+ if (n1[i]>n2[i])\r
+ return false;\r
+\r
+ i--;\r
+ }\r
+\r
+ // si llegué hasta acá es porque son iguales, por lo tanto no es menor estricto\r
+ return false;\r
+\r
+}\r