Числа с плавающей запятой одинарной точности занимают половину памяти, и на современных машинах (кажется, даже на графических процессорах) операции могут выполняться с ними почти вдвое быстрее, чем с двойной точностью. Многие коды FDTD, которые я обнаружил, используют исключительно арифметику одинарной точности и хранение. Существует ли эмпирическое правило, когда допустимо использовать одинарную точность для решения крупномасштабных разреженных систем уравнений? Я предполагаю, что это должно сильно зависеть от числа условий матрицы.
Кроме того, есть ли эффективный метод, который использует двойную точность, где это необходимо, и единственную, где точность двойной не требуется. Например, я думаю, что для умножения матрицы на вектор или произведения векторной точки, было бы неплохо накапливать результаты в переменной двойной точности (чтобы избежать ошибки отмены), но отдельные записи должны быть умножены друг на друга можно умножить с использованием одинарной точности.
Допускают ли современные FPU преобразование с одинарной (плавающей) в двойную (двойной) и наоборот? Или это дорогостоящие операции?