Estoy trabajando en un gran sistema de ecuaciones lineales dispersas mal acondicionado. Quiero usar aritmética doble-doble o aritmética cuádruple-doble para resolverlos. Sé que hay un paquete llamado MPACK desarrollado por Nakata, Maho, que puede realizar cálculos algebraicos lineales numéricos bajo aritmética cuádruple-doble. Sin embargo, está diseñado para una matriz densa, no para una matriz dispersa. ¿Sabes si hay algún paquete de matriz escasa aritmética cuádruple-doble?
sparse-matrix
matrix
condition-number
Hanyu Ye
fuente
fuente
Respuestas:
A partir de la versión 3.2 , PETSc admite cálculos dispersos de precisión cuádruple en gcc / gfortran 4.6 y posteriores.
Necesitará un BLAS y LAPACK de precisión cuádruple, que PETSc puede proporcionarle (junto con soporte cuádruple) con el siguiente comando de configuración (parcial):
Consulte las preguntas frecuentes para obtener un poco más de información.
Además, estoy de acuerdo con nOOb , si es posible, intente regularizar el sistema antes de cambiar a precisión cuádruple.
fuente
Los sistemas mal acondicionados se resuelven mejor mediante la regularización que aumentando la precisión numérica. Busque "regularización mal planteada" para los detalles sangrientos.
fuente
Podría probar la biblioteca Trilinos. Tienen plantillas de bibliotecas de matriz dispersa en Tpetra (que se supone que reemplaza a Epetra, su biblioteca de matriz dispersa original). Puede crear plantillas dobles, complejas, cuádruples, etc., y posiblemente tengan la mayor selección de solucionadores (tanto directos como iterativos) junto a PETSc.
Editar: después de leer los comentarios, la utilidad inmediata de Tpetra parece ser un poco cuestionable con precisión cuádruple ...
fuente
__float128
ser apoyado por Tpetra, y mucho menos cuádruple-doble. Tpetra no es independiente y no tiene todos los encabezados, e incluso si lo fuera,std::complex
solo funciona confloat
ydouble
.La caja de herramientas de computación multiprecisión para MATLAB tiene soporte para matrices dispersas y está específicamente optimizada para cálculos con precisión cuádruple.
Aquí están los detalles de tiempo para los solucionadores dispersos de precisión cuádruple: Solucionadores directos para matrices dispersas
(Soy el autor de la caja de herramientas).
fuente