Reimplementa operator< para que sea realmente const.
El operator< utilizaba la función normalize_length() que tomaba parámetros
variables. Ahora operator< es completamente const y no necesita normalizar los
argumentos.
Contempla suma de números de signo distinto.
Utiliza a la resta para manejar esos casos. En el test quedó un caso que rompe
tanto a la suma (como resta) como a la potencia (por un problema que, como
mínimo, baja hasta la multiplicación).
Potenciación con división y conquista.
Este parche agrega el algoritmo de potenciación por división y conquista. Además
agrega varios métodos y funciones complementarias:
dividido_dos(): devuelve el número dividido 2 O(n) (haciendo shift bit a bit)
es_impar(): indica si es impar O(1) (viendo el bit menos significativo)
operator==(): comparación O(n) (en el peor caso, que es cuando son iguales)
Bugfix en la suma.
Tenía un problema cuando el 2do operando era MAX - 1 y había carry, no se sumaba
nada y tampoco se detectaba que había carry (porque pega la vuelta
indefectiblemente, sin importar el valor del operando 1).
Agregar karatsuba() y pot_ko().
En este patch se reintroduce karatsuba() (todavia no probado porque falta la
resta, pero no deberia distar mucho de su implementacion final) y pot_ko(),
tampoco probada. Soy un loco barbaro.
Merge y limpieza.
Merge del parche que implementa K-O y limpieza de algunos \r y se ponen algunos
funciones como métodos. Si bien compila el test, puede explotar porque realmente
nunca está compilando la mayor parte de las cosas porque están parametrizadas y
no se usarn.
Estructura inicial y tipo básico.
Mini estructura de directorios con lo básico. Hay un tipo parametrizado
number< T > (diseñado para unsigned's, si anda con otra cosa es casualidad) que
ya tiene implementada la suma y una forma _muy_ precaria de imprimirse.
Lo básico como para empezar a trabajar.