Voy a crear la clase BigDecimal, que almacenara numeros de punto
flotante por encima del limite long double. Con esto pretendo
bordear los problemas que me presentan los limites establecidos
en el lenguaje C++.

No tengo el tiempo suficiente, pero es mi intencion, crear ademas
la clase BigInteger, que represente a los numeros enteros por encima
del valor long long int.
Diseño inicial de la clase BigDecimal
Me he dado cuenta de que me es mucho mejor empezar ha realizar
la clase con numero enteros. De todas formas los numeros
combinatorios usan numeros enteros y la probabilidad si
la multiplico por 100 al inicio dara un numero entero entre 0-100

Es por ello que he renombrado la clase BigDecimal a BigInteger y
voy a desarrollar los metodos necesarios para crear a BigInteger.

De momento solo hay unos metodos basicos, pero ire desarrollando
el resto de metodos poco a poco, una vez implementados los primordiales
He introduccido el prototipo de una funcion que me ayudara en el
cometido de tener solo numeros enteros dentro de la clase
Modificado el metodo Combinatorio::update para que no calcule
factoriales tan grandes cuando no son necesarios, de esta manera
trato de evitar sobrepasarme tan facilmente el limite de long double
Arreglado un pequeño error en el metodo Combinatorio::limitedFactorial
que hacia que se den resultados erroneos.

Se ha optimizado el  metodo Combinatorio::update, para que no realice
calculos innecesarios
Optimizado aun más el metodo Combinatorio::update, el cual evita al
maximo utilizar numeros grandes
Añadido un metodo privado llamado mulLimitedFactorial, este metodo
debe de realizar la multiplicacion de un numero entre 0 y 1 por un
numero combinatorio, de manera que trate de no perderse el numero
aunque este sea muy grande
Corregidos errores de sintaxis
Realizada una pequeña mejora en la eficiencia de Combinatorio::update
Mejorada la eficiencia del metodo Combinatorio::update que ha pasado
de poder calcular todos los numeros combinatorios que estan por debajo
de C(3000, 3000) ha poder calcular todos los numeros combinatorios
que estan por debajo de C(16250, 16250).

Esto se ha logrado añadiendo un nuevo metodo llamado twoPhasesFactorial,
que calcula el factorial de un numero en dos fases:

Antes de poder ejecutar este algoritmo hay que calcular el limite
del factorial, esto es, el limite hasta el que se multiplicara
un factorial, por ejemplo, C(7, 2) = 7! / (2! * 5!)
= (7 * 6 * 5 * 4 * 3 * 2 * 1) /(2 * 1 * 5 * 4 * 3 * 2 * 1) =
(7 * 6) / (2).

Luego su limite es 5

Una vez calculado, se va haciendo la operacion del numero factorial
de forma que mientras se pueda dividir, se dividira el numero más
grande del numerador que toque por multiplicar, entre el numero
más grande del denominador que le toque dividir.

Siempre se acabaran antes los numeros del denominador, con lo que
empezara la segunda fase.

La segunda fase es más simple, hay que seguir multiplicando los
numeros del numerador que falten hasta llegar al limite establecido.

Se puede ver una implementacion de este algoritmo en el metodo
Comentario::twoPhasesFactorial
Se han añadido las funcionalidades de probabilidad al programa principal
Se ha borrado la clase BigInteger de la aplicacion, debido a que no
tengo tiempo suficiente para construirla (tengo 5 asignaturas, no una).

Lo que voy a hacer es, crear un repositorio donde guardar las clases
que estoy haciendo, de manera que esten clasificadas, y tratare
de desarrollar cuando pueda las clases BigInteger y BigDecimal con
toda la funcionalidad que pueda.