generate::fortran

Сгенерируйте отформатированную строку Фортрана

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

generate::fortran(e, <NoWarning>, <Version = "versionName">)

Описание

generate::fortran(e) генерирует код Фортран для выражения MuPAD® e.

generate::fortran возвращает отформатированную строку Фортрана, представляющую выражение, уравнение, список уравнений или матрицу.

Уравнение представляет присвоение в коде Фортран. Типом присвоения является double.

При генерации кода Фортран для матрицы генератор присваивает только ненулевые элементы. Смотрите Пример 2.

Чтобы распечатать выводимую строку к файлу, используйте fprint функция. Чтобы удалить кавычки и расширить специальные символы как разрывы строки и вкладки, используйте параметр печати Unquoted.

Используйте generate::optimize функция, чтобы оптимизировать код MuPAD прежде, чем преобразовать его в код Фортран. Смотрите Пример 4.

NoWarning опция позволяет вам отключить предупреждения. Смотрите Пример 5.

Version опция задает целевую версию компилятора Фортрана что generate::fortran использование, чтобы сгенерировать код. Опциями является Fortran77 (значение по умолчанию), Fortran90, и Fortran95. Смотрите пример 6.

Примеры

Пример 1

Генератор кода преобразует список уравнений к последовательности присвоений.

generate::fortran([x[1] = y[2 + i]^2*(y[1] + sin(z)),
                   x[2] = tan(x[1]^4)]):
print(Unquoted,%)
      x(1) = (sin(z)+y(1))*y(i+2)**2
      x(2) = tan(x(1)**4)

Пример 2

Сгенерированный код Фортран не включает присвоения для нулевых элементов матрицы.

A:= matrix([[1, 0, 0],[0, 0, 1]]):
print(Unquoted, generate::fortran(A))
      A(1,1) = 1.0D0
      A(2,3) = 1.0D0

Пример 3

Если первый индекс массива не 1, то generate::fortran функция выдает предупреждение.

A:= array(1..2, 2..3, [[1,2],[3,4]]):
print(Unquoted, generate::fortran(A))
Warning: Array index 'A[1..2, 2..3]' out of range 1..n.
      A(1,2) = 1.0D0
      A(1,3) = 2.0D0
      A(2,2) = 3.0D0
      A(2,3) = 4.0D0

Пример 4

generate::fortran функция не оптимизирует ваш код.

print(Unquoted,
      generate::fortran([x = a + b, y = (a + b)^2])):
      x = a+b
      y = (a+b)**2

Можно использовать generate::optimize функция прежде, чем преобразовать ваше выражение MuPAD в код Фортран. Например, эта функция может сократить количество операций путем нахождения общих подвыражений.

print(Unquoted,
      generate::fortran(
          generate::optimize([x = a + b, y = (a + b)^2])
      )):
      x = a+b
      y = x**2

Пример 5

По умолчанию, generate::fortran функция может предупреждения о проблемах.

print(Unquoted, generate::fortran(gamma(x)))
Warning: Function 'gamma' requires a Fortran2008 compiler.
      t0 = gamma(x)

Предупреждения помогают идентифицировать потенциальные проблемы в конвертированном коде. Чтобы отключить предупреждения, используйте NoWarning опция.

print(Unquoted, generate::fortran(gamma(x), NoWarning))
      t0 = gamma(x)

Если предупреждение указывает, что требуемый компилятор является или Fortran90 или Fortran95, то можно подавить предупреждение путем определения правильной версии компилятора с помощью Version. Например, ceiling функция требует Fortran90 вместо Fortran77 по умолчанию.

generate::fortran(ceil(x))
Warning: Function 'ceiling' requires a Fortran90 compiler.

Задайте Version как Fortran90. generate::fortran функция не выдает предупреждение.

generate::fortran(ceil(x), Version = "Fortran90")

Пример 6

По умолчанию, generate::fortran функционируйте использует целевую версию Фортрана Fortran77 сгенерировать код. Задавать Fortran90 или Fortran95 как целевая версия, используйте Version опция.

Сгенерируйте выход для компилятора Fortran90 путем определения Version опция как Fortran90.

f := expand((x+1)^20):
fcode90 := generate::fortran(f, Version = "Fortran90"):
print(Unquoted, fcode90)
      t0 = x*2.0D+1+x**2*1.9D+2+x**3*1.14D+3+x**4*4.845D+3+x**5*1.5504D+&
     &4+x**6*3.876D+4+x**7*7.752D+4+x**8*1.2597D+5+x**9*1.6796D+5+x**10*&
     &1.84756D+5+x**11*1.6796D+5+x**12*1.2597D+5+x**13*7.752D+4+x**14*3.&
     &876D+4+x**15*1.5504D+4+x**16*4.845D+3+x**17*1.14D+3+x**18*1.9D+2+x&
     &**19*2.0D+1+x**20+1.0D0

Форматирование кода для многострочных операторов в Fortran90 отличается от форматирования в цели по умолчанию Fortran77.

Параметры

e

Выражение, уравнение, список уравнений или матрица

Опции

NoWarning

Отключить предупреждения.

Version

Задайте версию компилятора Фортрана. Версией по умолчанию является Fortran77. Version значениями является Fortran77, Fortran90, и Fortran95. Например, generate::fortran(..., Version = "Fortran90") версия компилятора использования Fortran90.

Возвращаемые значения

generate::fortran возвращает код Фортран строки, содержащей.

Смотрите также

Функции MuPAD

Для просмотра документации необходимо авторизоваться на сайте