* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
1052
Программирование в системах компьютерной алгебры
res := NumericTools:-ThrowUndefined(x, 'preserve' = 'axes') elif `tools/sign`(x) = -1 then res := -erf(-x) else res := 'erf'(x) end if; erf(args) := res; end proc;
Здесь вначале выполнен вывод сокращенного листинга встроенной в ядро про цедуры evalf, а затем выведен полный листинг процедуры вычисления функции ошибок erf. Но вернемся к функции interface. Эта функция служит для управления вы водом и задается в виде
interface( arg1, arg2, … ),
где аргументы задаются в виде равенств вида name=value и слов указателей:
ansi imaginaryunit longdelim postplot rtablesize version autoassign indentamount patchlevel preplot screenheight warnlevel echo errorbreak labelling labelwidth plotdevice plotoptions prettyprint prompt screenwidth showassumed errorcursor latexwidth plotoutput quiet verboseproc
Рассмотрим только некоторые, наиболее важные возможности этой функции. Указание verboseproc=n задает степень детальности вывода листинга про цедур. При n=0 текст не выводится, при n=1 выводится текст только заданных пользователем процедур, а при n=2 – всех процедур на Maple языке. Пример это го был дан выше. Указание prettyprint=0 или 1 управляет выводом стандарт ных сообщений. Указание plotdevice=string управляет выводом графики, например plotdevice=gif указывает на то, что запись графиков в виде файлов будет происходить в формате .gif. Одним из основных средств отладки процедур является функция трасси ровки trace(name). Детальность ее работы задается системной переменной printlevel (уровень вывода). При printlevel:=n (значение n = 1 по умолча нию) выводится результат только непосредственно исполняемой функции или оператора. Для вывода информации о выполнении k го уровня вложенности надо использовать значение этой переменной от 5*k до 5*(k+1). Так, при n от 1 до 5 выводятся результаты трассировки первого уровня, при n от 6 до 10 – второго и т. д. Максимальное значение n = 100 обеспечивает трассировку по всем уровням вложенности процедуры name. Следующий пример показывает осуществление трассировки для функции int(x^n,x):
> printlevel:=5; printlevel := 5 > trace(int); {—> enter trace, args = int