Я могу использовать реальную переменную двойной точности в одинарной точности, используя sngl
. Но как я могу применить сложную переменную двойной точности в единую точность?Fortran: комплекс с двойной точностью для одинарной точности
ответ
Вы можете сделать копию в комплексной переменной с одинарной точностью, или вы также можете использовать cmplx
и dcmplx
функции:
program test
complex*16:: a
complex :: b
a = (1.d0, 2.d0)
b = a
print *, a, b
print *, cmplx(a), dcmplx(b)
end
выход:
(1.00000000000000,2.00000000000000) (1.000000,2.000000)
(1.000000,2.000000) (1.00000000000000,2.00000000000000)
Используйте общий REAL()
для всех действительные числа, хотя SNGL()
может использоваться также для одного конкретного случая:
integer, parameter :: sp = kind(1e0), dp = kind(1d0)
real(x) !converts to the default kind, which is the single precision
!sngl(x) does the same thing
real(x, sp) ! converts to the kind sp (single precision)
real(x, dp) ! converts to the kind dp (double precision)
со сложными это то же самое, но использовать CMPLX()
:
cmplx(x) !converts to the default kind, which is the single precision
cmplx(x, sp) ! converts to the kind sp (single precision)
cmplx(x, dp) ! converts to the kind dp (double precision)
командирован преобразование неявным, и вы не должны (но можно) использовать эти явные функции преобразования.
Вся концепция одиночной точности и двойной точности несколько устарела и заменена Fortran 90 kinds.
Я предпочитаю что-то вроде 'use iso_fortran_env' и 'integer, parameter :: sp = real32, dp = real64' – steabert
Я тоже, но это немного меняет семантику, я старался сохранить ее как по умолчанию, так и двойной. –
- 1. IEEE 754 с двойной точностью до одинарной точности
- 2. Выполнение вычисления с двойной точностью на одинарной точности CPU
- 3. Fortran - проблема с двойной точностью
- 4. Назначение двойной точности для одиночных прецизионных массивов в Fortran
- 5. Почему поплавок «одинарной точности»?
- 6. Fortran двойной точности
- 7. Дифференциация между одинарной и двойной точностью
- 8. C - как хранить IEEE 754 с двойной и одинарной точностью
- 9. Функция SQL Server SUM с одинарной точностью
- 10. Fortran массив с явной двойной точностью
- 11. В чем разница между операцией с плавающей точкой с двойной точностью и двойной точностью?
- 12. Преобразование одинарной точности с плавающей точкой до половины точности MIPS
- 13. Библиотеки с двойной точностью DISLIN
- 14. Любые причины предпочтительности одиночной точности для двойной точности данных?
- 15. Глобальные переменные с одинарной точностью в matlab
- 16. Как сделать все вычисления с двойной точностью в fortran?
- 17. FORTRAN - Правильные значения рассчитываются в простой точности, но ошибочные решения с двойной точностью?
- 18. Разница между инструкциями с одной и двойной точностью
- 19. Порядок величины для двойной точности
- 20. Расчет gflops для двойной точности
- 21. Умножение одинарной точности поплавка с 2
- 22. Формат Java с двойной точностью до минимальной точности
- 23. Умножение поплавков и сохранение/получение точности с двойной точностью
- 24. вычитания двойной точности с одинарной точности дает мне 0. Не то, что я хочу
- 25. MATLAB двойной точности спутанность
- 26. Путаница с двойной точностью?
- 27. Правильный дизайн кода C, который обрабатывает как плавающие точки с одинарной, так и двойной точностью?
- 28. одинарной точности с плавающей точкой Формат Диапазон
- 29. Opencv Read Mat с двойной точностью YAML
- 30. Разделение двойной точности на целое число в Fortran
Я должен сказать, что в настоящее время я бы предпочел решение Валдимира, а также я должен отметить, что сложный * 16 не является стандартным Fortran - снова механизм типов решает это в modor Fortran –