C/Visual C - licenciado matematicas

 
Vista:

licenciado matematicas

Publicado por aziz (5 intervenciones) el 27/05/2003 13:21:37
Hola a todos, en mi tesis estoy haciendo un programa que maneja los numeros enteros. Resulta que mis datos son numeros enteros de muchos digitos, busco una libreria de double precision en C++ para poder manejar numeros ENTEROS GRANDES SIN DESBORDAMIENTO DE PILA
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Bibliotecas de precisión arbitraria para manejar números enteros grandes en C++

Publicado por Alejandro (1286 intervenciones) el 24/06/2025 19:32:00
Aziz, para manejar números enteros de muchos dígitos en C++ sin riesgo de desbordamiento, puedes utilizar bibliotecas que soportan aritmética de precisión arbitraria. Aquí te presento algunas opciones populares:

1. GMP (GNU Multiple Precision Arithmetic Library):
- Descripción: GMP es una biblioteca muy conocida para realizar cálculos con números enteros, racionales y de punto flotante de precisión arbitraria.
- Características: Soporta operaciones aritméticas básicas, así como funciones avanzadas como factorización, cálculo de primos, etc.
- Instalación: Puedes instalar GMP en Linux usando el gestor de paquetes o compilarlo desde el código fuente. En Windows, puedes encontrar binarios precompilados.
- Uso:
1
2
3
4
5
6
7
8
9
10
#include <gmpxx.h>
 
int main() {
    mpz_class a("123456789012345678901234567890");
    mpz_class b("987654321098765432109876543210");
    mpz_class c = a + b;
 
    std::cout << "Suma: " << c.get_str() << std::endl;
    return 0;
}

2. Boost.Multiprecision:
- Descripción: Parte de la biblioteca Boost, Boost.Multiprecision permite trabajar con números de precisión arbitraria y es fácil de usar.
- Características: Soporta enteros, números de punto flotante y racionales, y se integra bien con otras bibliotecas de Boost.
- Instalación: Necesitas tener Boost instalado. Puedes descargarlo desde el sitio oficial de Boost.
- Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
 
using namespace boost::multiprecision;
 
int main() {
    cpp_int a("123456789012345678901234567890");
    cpp_int b("987654321098765432109876543210");
    cpp_int c = a + b;
 
    std::cout << "Suma: " << c << std::endl;
    return 0;
}

3. MPFR (Multiple Precision Floating-Point Reliable Library):
- Descripción: Aunque está más enfocada en números de punto flotante, MPFR se basa en GMP y puede ser útil si necesitas precisión en cálculos de punto flotante.
- Uso: Similar a GMP, pero enfocado en operaciones de punto flotante.

Consideraciones


- Desbordamiento de pila: Al usar estas bibliotecas, puedes manejar números enteros grandes sin preocuparte por el desbordamiento de pila, ya que utilizan estructuras de datos dinámicas para almacenar los números.
- Rendimiento: Ten en cuenta que las operaciones con números de precisión arbitraria pueden ser más lentas que las operaciones con tipos de datos primitivos, así que evalúa el rendimiento según tus necesidades.

Espero que estas opciones te sean útiles para tu tesis.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar