Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 82
Текст из файла (страница 82)
1пс пгьв. сопвт ахАггду *ргьБП ) ( боиЫе «т. «у. з)дав, г, Ь: (пт аго, псо; /* Проверив вргунентов */ )т (п)ьв>1) [аехеггмвдтхт("много выходных данных");) */ аго ахзетн(рглв[0]); псо - ахзеСМ(ргпв[0]); р)пв[0]-васгевтевооЫ еиввг1х(аго,псо.ахдЕАЕ); /* Создвен выходной массив указывает й[АТ[.АВ, что параметры А, В являются входными, а параметры Е, 0— выходными. Заголовок принимающей функции на языке С должен иметь имя аехрыпс(1оп и оформляться следующим образом: $1пс1обе <васи.п> тотб аехгопствоп( дв36 Глава 16.
Программирование в )4АТ0(В /* Назначин указатель на выходной пассив */ т-мхйетРг(р1из[01): /* Назначии уназатель на входной пассив */ у мхвеСРг(ргщ(01): /* Определии сналярные входные паранетры */ зтува-ехОе(5са1аг(рглз(Ц ): г мхОе(5са1аг(ргаз(21); Ь-тхйет5са1аг(рглз(31): /* Вызов функции */ 1оге(г,у,зтомз,г, Ы ) Запустим компиляцию подготовленного файла: мех 1оге.с При нормальном завершении компиляции появится файл 1оге.((11. Проверим, вер- но ли работает откомпилированная функция, для чего с одинаковыми входными данными обратимся к функции 1ог, заданной файлом (ог.(п, и к подготовленной функции 1оге. В результате вызова функции 1ог получим: > 1ог(0,(0 1 5)','',10,25.8/3)' апз- 10.0000 -1.0000 -13.3333 Такой же результат будет получен для 1оге: » 1оге((0 1 51'.
10,25.8/3)' апз = 10.0000 -1.0000 -13.3333 Использовать(нех-функцию 1оге для интегрирования системы Лоренца нельзя, так как перечень ее входных параметров не отвечает набору, требуемому интегратора- ми опе23. Опе45 и др. Поэтому дополнительно напишем функцию-переходник (обыч- ный и(-файл) с единственной целью — вызывать л)ех-функцию для вычисления правой части системы Лоренца: Галс((оп (-1огепг(т.у,()ао.зтупа.г. Ы д 1ог - г(ОЛС Лапа ззое а( Согепз еццаттоп Г - 1оге(у.з!Она.г.Ы; Теперь можно использовать подготовленные функции 1оге и 1огепг для интегри- рования системы Лоренца. При выполнении (лех-задания используются параметры, перечисленные в файле параметров в)ехор05, например п)ехортз.Ьат для Ж(пс)о ыз. Параметры можно также указывать в командной строке.
В табл. 16.7 перечислены некоторые параметры для команды мех, доступные для разных платформ, В рассмотренном примере функции, начинающиеся с приставки мех, были функци- ями МАТ1,АВ. Из мех-функций можно обращаться и к другим командам МАТ1.АВ; для этого имеется специальная функция яехСа11НАЧ.АВ с пятью параметрами. Пер- вые четыре обеспечивают интерфейс и аналогичны параметрам функции яехгыпст1 оп, а пятый содержит имя вызываемой команды.
В среде 1й/1пс)отца скомпилированный машинный код гдех-файла находится в фай- ле динамической библиотеки (1)упаш(с 1.1п)с 1дЬгагу) с расширением 011. Лля от- ладки яех-функций можно испольэовать среду системы, в которой компилиРуется функция, например Рече1орег Ввцс)(о для Ч)аиа) С++ М1сгоаоГт. Компилятор НАТЕАВ 437 Таблица зб.т. Параметры команды птех Назначение Параметр Компиляция без редактирования связей Справка по команде аех Включение отладочных символов в пех-фунхцню Указание пути (РАТН) для компилятора Оптимизация мех-функции Указание имени (МАМЕ) создаваемой кех-функции Печать установок компилятора и редактора связей -9 -1 РАТН -О -онтрнт МАМЕ Более подробно программирование и отладка гех-функций описаны в фирменном руководстве Арр!!сат!оп Ргойгат 1птег1асе Сц!с)е, см.
также [20!. Компилятор МАТЮКАВ При помощи МАТБАВ можно создавать независимые приложения, используя компиляторы С и С++. Для этого предназначены компилятор МАТЮКАВ Согпрт!ег и библиотека функций С++ МасЬ агату. Достоинством такого подхода является гибкость и простота применения; синтаксис аналогичен используемому в МАТ1.АВ, все арифметические вычисления ведутся с двойтюй точностью, за счет исключения этапа интерпретации возрастает скорость выполнения функций, библиотечный код сам управляет выделением памяти и ее очисткой. Библиотека С+о МатЬ ЫЬгагу состоит из интерфейсных функций, набора бинарных и унарных операторов и собственно математических функций МАТ1.АВ. Примерно триста встроенных и компилируемых (пт-файлы) функций могут быть использованы для создания приложений на языке С.
Это элементарные и специальные математические функции, наборы стандартных и специальных матриц, функции для решения задач линейной алгебры, интерполяции, статистики и анализа данных, команды ввода-вывода и др. Библиотека не поддерживает графику, команды системы Б)ши!1п)с, работу с разреженными матрицами и использование интерпретаторов командной строки (функций еча1 и т"еча1). Компилятор МАТ1 АВ Сотр!!ег Чегз)оп 2 0 (файл отсс.пт и ряд сопутствующих файлов) позволяет конвертировать пт-файл в файл на языке С или С++, а также организует поддержку бинарных файлов. По умолчанию результаты компиляции записываются в директорию ~вот)с Драйвер с именем асс служит для запуска компиляции, для получения кода на С имеется специальный глех-файл птссехес, а для построения юех-файлов и отдельных приложений — тпбц!!б.
Обращение к компилятору для трансляции файлов Ецп, йзп2 с параметрами орс1 опз имеет вид мсс [орвыопз] тип Етип2 ... 1 В квадратных скобках указаны необязательные параметры. Описание всех функций и набор примеров можно получить по справке пе1р юсс. Для ряда наиболее 438 Глава 16.
Программирование в ИДТСДВ важных задач, решаемых с помощью компилятора МАТЕАВ Сотрт!ег, имеются макропараметры — подготовленные комплекты из основных параметров. Перечни макро- и основных параметров даны соответственно в табл. 16.8 и 16.9, Например, если файл Гцп.>п содержит функцию на я(-языке, то для запуска компилятора для перевода (трансляции) атой функции в файл на языке Сч-ь и генерации приложения достаточно команды с одним макропараметром -р: асс -р Гоп Эквивалент, использующий основные опции, выглядит следующим образом: псс -С -и матп -Ь Срр -П -Т >~ох:ехе Гьп Таблица 16.8.
Макропараметры компилятора Назначение Параметр Генерация файла на языке С и тех-файла Генерация файла на языке С и приложения Генерация файла на языке С++ и приложения Генерация 5ппцКпК-функции (з-функции) тех-файла Р -5 Таблица 16.9. Основные параметры компилятора Параметр Назначение Конвертация пз-файла в текст на языке С Указание каталога для файла-результата Включение отладочной информации Подключение путей доступа (каталогов) -с -О <ш гессогу> -о -! <рати> Если нужно взять файл из каталога зон(се, а результат поместить в каталог татйед то обращение должно быть оформлено следующим образом: асс -н -1 /зоогсе -д теагрет топ Приведем пример использования компилятора для преобразования и(-файлов в тексты на С и последующего создания выполняемого приложения из двух функ- ций.
В первой функции Гцп1 из файла 111,(х1 считывается целое число', далее орга- низуется цикл, в котором стоит обращение к функции Топ2. По завершении цикла в файл 222.(хт записывается максимальное число из массива, вычисленного послед- ним. В начале и конце функции Гцп1 стоят соответственно команды стс и (ос, что позволяет оценить время выполнения тела функции Тцп1: Толст!оп у-Гоп1 ыс Г1-горел( "111.
Схт", ' г ' ): (2-Горел Г'222, Схт" . 'и'): и - тзсапт((1,'15сг), Гс>озе(П); тог К-1:п, е(-Гоп2(п); епс трг(птт(т2,'ХЭ.2('.звх(ет»: Гс)озе(Г2>: кос Функция Тцп2 с одним входным параметром и возвращает спектр магической матрицы порядка и: Компилятор (т(АТ(АВ 439 типот>оп у-Гип2(п) у-е)0(магно(п)): Приведем последовательность команд для подготовки приложения из файлов !ип1.пт и !ил 2. пт, сопроводив выполняемые команды комментариями: мсс -( Ц С Гип) $ Резупхтат тип1 с есс -С Ц 0 (ип2 т' пезулатат.
(ип2.с мсс -н матт -' 0 гипт тип2 Ф Резул>ц а-. (ип1 мата с мсс -т спарт)е ехе (ип1.с т Резул,тат Гип!.оо) псс -т спор~то.ехе тип2.с т Резулатдт' В>г2 оп) мсс -т сопрт'е ехе Гип1 пате.с т Резула"ат (ип! патп оЬ0) псе - 1>па ехе Гип) оЬ; Ьл 2 оЬ) тип'. Рпж оо„: В результате выполнения атих команд в текущем каталоге появятся файлы на С !ип1.с, Гип2.с, Ьзп1 п)а(п.с, объектныс файлы !ип1.оЬ), !ип2.оЬ), Ьип1 (паап.оЬ) и исполняемый файл !иг>1.ехе, Отметим, что тексты полученных файлов на С не приводятся.
При запуске и-функции "ю1 в среде ЫЛТ!.ЛВ подучился следующий результат: » тип1 55 е)ар»ее Стпе = 5.920)о 000 При другах прогонах функции й)п1 оценка затраченного времени варьировалась, составляя в среднем 6.7 секунды, выполнение же программы !ип1.ехе требовало примерно 6.4 секунды. Заметим, что для запуска !ип1.ехе нужны соответствующие библиотеки ()((, в которых содержатся использованные функции, поэтому для работы с исполняелтым файлом нужны соответствующие (й(-бпблиотеки МАТ!.АВ.
Конечно, рассмотрен прс>стой пример, но и оц дает представление об аффективнокти вычислений в самой среде, а также о возможностях компилятора и библиотек ЫЛТ!.АВ для построения приложений. В МАТ! АВ имсется оибл потока для подключения ядра пакета в про(раа(мах на языках С и Фортран. Это позволяет вызывать пз пользовательских программ, написанных на этих языках и подготовленных и соответствующих средах, математические, графические и другие команды МЛТ! АВ. В каталоге т(ехгегпттехзптр(еатепдпта1 находится файл епдтаттп()епто.с с примером такой программы, Для подготовки приложения используем команду п)ех, где указан ЬаГ-файл с нужными настройками для компиляции: еех -Г с тмас)аЬЯ11>Ь>п>Ьсс53епдпасорта.Ьас епдтттпиемо.с Имя файла настройки зависит от применяемого транслятора, а сами файлы для различных компиляторов находятся в каталоге 1Ь(п.