1 @c -----------------------------------------------------------------------------
2 @c File : Translator.de.texi
3 @c License : GNU General Public License (GPL)
6 @c Translation : Dr. Dieter Kaiser
8 @c Revision : 01.10.2011
10 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
11 @c -----------------------------------------------------------------------------
14 * Einf@"uhrung in den @"Ubersetzer::
15 * Funktionen und Variablen des @"Ubersetzers::
18 @c -----------------------------------------------------------------------------
19 @node Einf@"uhrung in den @"Ubersetzer, Funktionen und Variablen des @"Ubersetzers, @"Ubersetzer, @"Ubersetzer
20 @section Einf@"uhrung in den @"Ubersetzer
21 @c -----------------------------------------------------------------------------
23 @c -----------------------------------------------------------------------------
24 @node Funktionen und Variablen des @"Ubersetzers, , Einf@"uhrung in den @"Ubersetzer, @"Ubersetzer
25 @section Funktionen und Variablen des @"Ubersetzers
26 @c -----------------------------------------------------------------------------
28 @c --- 01.10.2011 DK -----------------------------------------------------------
30 @deffn {Funktion} compfile (@var{filename}, @var{f_1}, @dots{}, @var{f_n})
31 @deffnx {Funktion} compfile (@var{filename}, functions)
32 @deffnx {Funktion} compfile (@var{filename}, all)
34 @c Translates Maxima functions into Lisp and writes the translated code into the
35 @c file @var{filename}.
36 @c @code{compfile(@var{filename}, @var{f_1}, ..., @var{f_n})} translates the
37 @c specified functions. @code{compfile(@var{filename}, functions)} and
38 @c @code{compfile(@var{filename}, all)} translate all user-defined functions.
40 @"Ubersetzt Maxima-Funktionen nach Lisp und schreibt den @"ubersetzten Code in
41 die Datei @var{filename}. Mit dem Kommando @code{compfile(@var{filename}
42 @var{f_1}, ..., @var{f_n})} werden die als Argument angegebenen Funktionen
43 @var{f_1}, @dots{}, @var{f_n} @"ubersetzt. Die Kommandos
44 @code{compfile(@var{filename}, functions)} oder @code{compfile(@var{filename},
45 all)} @"ubersetzen dagegen alle vom Nutzer definierten Funktionen.
47 @c The Lisp translations are not evaluated, nor is the output file processed by
49 @c SO LET'S CONSIDER GIVING THIS FUNCTION A MORE ACCURATE NAME.
50 @c @code{translate} creates and evaluates Lisp translations. @code{compile_file}
51 @c translates Maxima into Lisp, and then executes the Lisp compiler.
53 Die Lisp-@"Ubersetzungen werden nicht ausgewertet. Auch wird die Ausgabedatei
54 nicht kompiliert. @code{translate} generiert und wertet Lisp-@"Ubersetzungen
55 aus. Die Funktion @code{compile_file} @"ubersetzt Maxima nach Lisp und f@"uhrt
56 dann den Lisp-Compiler aus.
58 @c See also @code{translate}, @code{translate_file}, and @code{compile_file}.
60 Siehe auch die Funktionen @mrefcomma{translate} @mref{translate_file} und
61 @mrefdot{compile_file}
64 @c THIS VARIABLE IS OBSOLETE: ASSIGNING compgrind: true CAUSES compfile
65 @c TO EVENTUALLY CALL AN OBSOLETE FUNCTION SPRIN1.
66 @c RECOMMENDATION IS TO CUT THIS ITEM, AND CUT $compgrind FROM src/transs.lisp
68 @c Default value: @code{false}
70 @c When @code{compgrind} is @code{true}, function definitions printed by
71 @c @code{compfile} are pretty-printed.
75 @c --- 28.12.2010 DK -----------------------------------------------------------
77 @deffn {Funktion} compile (@var{f_1}, @dots{}, @var{f_n})
78 @deffnx {Funktion} compile (functions)
79 @deffnx {Funktion} compile (all)
81 @c Translates Maxima functions @var{f_1}, ..., @var{f_n} into Lisp, evaluates
82 @c the Lisp translations, and calls the Lisp function @code{COMPILE} on each
83 @c translated function. @code{compile} returns a list of the names of the
84 @c compiled functions.
86 @"Ubersetzt die Maxima-Funktionen @var{f_1}, @dots{}, @var{f_n} nach Lisp,
87 wertet die Lisp-@"Ubersetzungen aus und ruft den Lisp-Compiler f@"ur jede
88 @"ubersetzte Funktion auf. @code{compile} gibt eine Liste mit den Namen der
89 kompilierten Funktionen zur@"uck.
91 @c @code{compile (all)} or @code{compile (functions)} compiles all user-defined
94 @code{compile(all)} oder @code{compile(funtions)} kompiliert alle
95 nutzerdefinierten Funktionen.
97 @c @code{compile} quotes its arguments; the quote-quote operator @code{'@w{}'}
100 @code{compile} wertet die Argumente nicht aus. Der
101 @nxref{'', Quote-Quote-Operator} @code{''} erzwingt die Auswertung.
105 @c --- 28.12.2010 DK -----------------------------------------------------------
106 @anchor{compile_file}
107 @deffn {Funktion} compile_file (@var{filename})
108 @deffnx {Funktion} compile_file (@var{filename}, @var{compiled_filename})
109 @deffnx {Funktion} compile_file (@var{filename}, @var{compiled_filename}, @var{lisp_filename})
111 @c Translates the Maxima file @var{filename} into Lisp, executes the Lisp
112 @c compiler, and, if the translation and compilation succeed, loads the compiled
115 @"Ubersetzt die Maxima-Datei @var{filename} nach Lisp, ruft den Lisp-Compiler
116 auf und l@"adt falls erfolgreich den kompilierten Code in Maxima.
118 @c @code{compile_file} returns a list of the names of four files: the original
119 @c Maxima file, the Lisp translation, notes on translation, and the compiled
120 @c code. If the compilation fails, the fourth item is @code{false}.
122 @code{compile_file} gibt eine Liste mit den Namen von vier Dateien zur@"uck:
123 die urspr@"ungliche Maxima-Datei, die Lisp-@"Ubersetzung, eine Datei mit Notizen
124 zur @"Ubersetzungen und eine Datei mit dem kompilierten Code. Schl@"agt die
125 Kompilierung fehlt, ist der vierte Eintrag @code{false}.
127 @c Some declarations and definitions take effect as soon as the Lisp code is
128 @c compiled (without loading the compiled code). These include functions defined
129 @c with the @code{:=} operator, macros define with the @code{::=} operator,
130 @c HEDGE -- DON'T KNOW IF THERE IS ANOTHER WAY
131 @c @code{alias}, @code{declare}, @code{define_variable}, @code{mode_declare},
132 @c and @code{infix}, @code{matchfix}, @code{nofix}, @code{postfix},
133 @c @code{prefix}, and @code{compfile}.
135 Einige Deklarationen und Definitionen sind bereits vorhanden, nachdem der
136 Lisp-Code kompiliert ist und ohne das dieser geladen wurde. Dies schlie@ss{}t
137 Funktionsdefinitionen mit dem Operator @code{:=}, Makros definiert mit dem
138 Operator @code{::=} sowie Definitionen der folgenden Funktionen @code{alias},
139 @code{declare}, @code{define_variable}, @code{mode_declare}, @code{infix},
140 @code{matchfix}, @code{nofix}, @code{postfix}, @code{prefix} und
143 @c Assignments and function calls are not evaluated until the compiled code is
144 @c loaded. In particular, within the Maxima file, assignments to the translation
145 @c flags (@code{tr_numer}, etc.) have no effect on the translation.
147 Zuweisungen und Funktionsaufrufe werden nicht ausgwertet bevor der komplierte
148 Code geladen wird. Im besonderen haben Zuweisungen an die
149 @"Ubersetzungsschalter wie @code{tr_numer} und andere, die in der Maxima-Datei
150 aufgef@"uhrt sind, keinen Effekt auf die @"Ubersetzung.
152 @c @code{compile_file} may mistake warnings for errors and
153 @c return @code{false} as the name of the compiled code when, in fact,
154 @c the compilation succeeded. This is a bug.
155 @c REPORTED AS SOURCEFORGE BUG # 1103722.
157 @code{compile_file} kann Fehler oder Warnungen ausgegeben und @code{false}
158 zur@"uckgegeben, obwohl die Kompilierung erfolgreich ist. Dies ist ein
161 @c @var{filename} may not contain @code{:lisp} statements.
163 Die Datei @var{filename} darf keine @code{:lisp}-Anweisungen enthalten.
165 @c @code{compile_file} evaluates its arguments.
167 @code{compile_file} wertet die Argumente aus.
171 @c --- 28.12.2010 DK -----------------------------------------------------------
172 @anchor{declare_translated}
173 @deffn {Funktion} declare_translated (@var{f_1}, @var{f_2}, @dots{})
175 @c When translating a file of Maxima code to Lisp, it is important for the
176 @c translator to know which functions it sees in the file are to be called as
177 @c translated or compiled functions, and which ones are just Maxima functions or
178 @c undefined. Putting this declaration at the top of the file, lets it know that
179 @c although a symbol does which does not yet have a Lisp function value, will
180 @c have one at call time. @code{(MFUNCTION-CALL fn arg1 arg2 ...)} is generated
181 @c when the translator does not know @code{fn} is going to be a Lisp function.
183 Bei der @"Ubersetzung einer Datei von Maxima-Code nach Lisp-Code ist es f@"ur
184 den @"Ubersetzer wichtig zu wissen, welche Funktionen der Datei bereits
185 @"ubersetzte oder kompilierte Funktionen sind und welche Funktionen
186 Maxima-Funktionen oder undefiniert sind. Mit der Deklaration
187 @code{declare_translated} am Anfang der zu @"ubersetzenden Datei wird dem
188 @"Ubersetzer mitgeteilt, dass die als Argumente aufgef@"uhrten Funktionen
189 @var{f_1}, @var{f_2}, @dots{} zur Laufzeit des Programms eine Lisp-Funktion
190 repr@"asentieren. Fehlt dem @"Ubersetzer diese Information wird das Kommando
191 @code{(MFUNCTION-CALL fn arg1 arg2 ...)} generiert.
195 @c --- 28.12.2010 DK -----------------------------------------------------------
197 @defvr {Optionsvariable} mode_checkp
198 Standardwert: @code{true}
200 @c WHAT DOES THIS MEAN ??
201 @c When @code{mode_checkp} is @code{true}, @code{mode_declare} checks the modes
202 @c of bound variables.
204 Hat die Optionsvariable @code{mode_checkp} den Wert @code{true} und wird
205 mit @code{mode_declare} f@"ur eine Variable, die bereits einen Wert hat, ein Typ
206 festgelegt, dann pr@"uft Maxima, ob der vorgesehene Typ zum vorliegenden Wert
211 Im folgenden hat die Variable @var{n} den Wert 2.0. Wird @var{n} mit
212 @code{mode_declare} als eine ganze Zahl definiert, gibt Maxima eine Warnung aus,
213 wenn @code{mode_checkp} den Wert @code{true} hat.
218 (%i2) mode_checkp:true;
220 (%i3) mode_declare(n,fixnum);
221 warning: n was declared with mode fixnum, but it has value: 2.0
223 (%i4) mode_checkp:false;
225 (%i5) mode_declare(n,fixnum);
231 @c --- 28.12.21010 DK ----------------------------------------------------------
232 @anchor{mode_check_errorp}
233 @defvr {Optionsvariable} mode_check_errorp
234 Standardwert: @code{false}
236 @c WHAT DOES THIS MEAN ??
237 @c When @code{mode_check_errorp} is @code{true}, @code{mode_declare} calls
240 Hat @code{mode_check_errorp} den Wert @code{true}, bricht @code{mode_declare}
241 mit einer Fehlermeldung ab, wenn f@"ur eine Variable die bereits einen Wert hat,
242 mit @code{mode_declare} ein verschiedener Typ deklariert werden soll. Damit
243 diese Optionsvariable wirksam ist, muss @code{mode_checkp} den Wert @code{true}
244 haben. Siehe @mrefdot{mode_checkp}
249 (%i2) mode_checkp:true;
251 (%i3) mode_check_errorp:true;
253 (%i4) mode_declare(n,fixnum);
255 Error: n was declared mode fixnum, has value: 2.0
256 -- an error. To debug this try: debugmode(true);
261 @c --- 28.12.2010 DK -----------------------------------------------------------
262 @anchor{mode_check_warnp}
263 @defvr {Optionsvariable} mode_check_warnp
264 Standardwert: @code{true}
266 @c WHAT DOES THIS MEAN ??
267 @c When @code{mode_check_warnp} is @code{true}, mode errors are described.
269 Hat @code{mode_check_warnp} den Wert @code{true}, gibt @code{mode_declare}
270 eine Warnung aus, wenn f@"ur eine Variable die bereits einen Wert hat,
271 mit @code{mode_declare} ein verschiedener Typ deklariert werden soll. Damit
272 diese Optionsvariable wirksam ist, muss @code{mode_checkp} den Wert @code{true}
273 haben. Siehe @mref{mode_checkp} und @mrefdot{mode_check_errorp}
277 @c NEEDS CLARIFICATION AND EXAMPLES
279 @c --- 02.01.2011 DK -----------------------------------------------------------
280 @anchor{mode_declare}
281 @deffn {Funktion} mode_declare (@var{y_1}, @var{mode_1}, @dots{}, @var{y_n}, @var{mode_n})
283 @c @code{mode_declare} is used to declare the modes of variables and functions
284 @c for subsequent translation or compilation of functions. @code{mode_declare}
285 @c is typically placed at the beginning of a function definition, at the
286 @c beginning of a Maxima script, or executed at the interactive prompt.
288 @code{mode_declare} deklariert den Typ von Variablen und Funktionen f@"ur den
289 @"Ubersetzer und den Kompilierer. Typischerweise wird @code{mode_declare} am
290 Anfang einer Funktion oder einer Datei mit Maxima-Code ausgef@"uhrt.
292 @c The arguments of @code{mode_declare} are pairs consisting of a variable and a
293 @c mode which is one of @code{boolean}, @code{fixnum}, @code{number},
294 @c @code{rational}, or @code{float}. Each variable may also be a list of
295 @c variables all of which are declared to have the same mode.
297 Die Argumente werden paarweise angegeben und bezeichnen jeweils den Namen einer
298 Variablen sowie deren Typ. Folgende Typen k@"onnen die Variablen erhalten:
299 @code{boolean}, @code{fixnum}, @code{number}, @code{rational} oder @code{float}.
300 Anstatt dem Namen einer Variablen kann auch eine Liste mit den Namen von
301 Variablen angegeben werden. In diesem Fall erhalten alle Variablen der Liste
304 @c WHAT DOES THE FOLLOWING STATEMENT MEAN ???
305 @c If a variable is an array, and if every element of the array which is
306 @c referenced has a value then @code{array (yi, complete, dim1, dim2, ...)}
309 @c array(yi, dim1, dim2, ...)
311 @c should be used when first declaring the bounds of the array.
312 @c WHAT DOES THE FOLLOWING STATEMENT MEAN ???
313 @c If all the elements of the array are of mode @code{fixnum} (@code{float}),
314 @c use @code{fixnum} (@code{float}) instead of @code{complete}.
316 Ein Array sollte bereits bei seiner Deklaration einen Typ f@"ur die Elemente
317 erhalten. Haben alle Elemente des Arrays einen Wert sollte das Array mit der
318 Option @code{complete} deklariert werden, zum Beispiel
319 @code{array(a, complete, dim1, dim2, ...)}. Sind die Elemente des Arrays
320 ganze Zahlen oder Gleitkommazahlen sollte der Typ als @code{fixnum} oder
321 @code{flonum} deklariert werden.
323 @c WHAT DOES THE FOLLOWING STATEMENT MEAN ???
324 @c Also if every element of the array is of the same mode, say @code{m}, then
326 @c mode_declare (completearray (yi), m))
328 @c should be used for efficient translation.
329 @c Numeric code using arrays might run faster by declaring the expected size of
332 @c mode_declare (completearray (a [10, 10]), float)
334 @c for a floating point number array which is 10 x 10.
336 Mit der Funktion @code{mode_declare} kann dann der Typ des Arrays f@"ur den
337 @"Ubersetzer oder Kompilierer festgelegt werden. Ein Array der Gr@"o@ss{}e
338 10 @code{x} 10 mit Gleitkommazahlen erh@"alt die Deklaration
339 @code{mode_declare(completearray(a[10, 10], float)}.
341 @c One may declare the mode of the result of a function by using @code{function
342 @c (f_1, f_2, ...)} as an argument; here @code{f_1}, @code{f_2}, ... are the
343 @c names of functions. For example the expression,
345 @c mode_declare ([function (f_1, f_2, ...)], fixnum)
347 @c declares that the values returned by @code{f_1}, @code{f_2}, @dots{} are
348 @c single-word integers.
350 Der Typ von Funktionen wird mit dem Argument @code{function(f_1, f2, ...)}
351 deklariert. Hier sind @code{f_1}, @code{f_2}, @dots{} die Funktionen. Mit
352 @code{mode_declare([function (f_1, f_2, ...)], fixnum)} werden die
353 R@"uckgabewerte der Funktionen @code{f_1}, @code{f_2}, @dots{} als ganze Zahlen
356 @c @code{modedeclare} is a synonym for @code{mode_declare}.
358 @code{modedeclare} ist ein Alias-Name der Funktion @code{mode_declare}.
362 @c WHAT IS THIS ABOUT ??
363 @c NEEDS CLARIFICATION AND EXAMPLES
365 @c --- 02.01.2011 DK -----------------------------------------------------------
366 @anchor{mode_identity}
367 @deffn {Funktion} mode_identity (@var{mode}, @var{expr})
369 @c A special form used with @code{mode_declare} and @code{macros} to declare,
370 @c e.g., a list of lists of flonums, or other compound data object. The first
371 @c argument to @code{mode_identity} is a primitive value mode name as given to
372 @c @code{mode_declare} (i.e., one of @code{float}, @code{fixnum}, @code{number},
373 @c @code{list}, or @code{any}), and the second argument is an expression which
374 @c is evaluated and returned as the value of @code{mode_identity}. However, if
375 @c the return value is not allowed by the mode declared in the first argument,
376 @c an error or warning is signalled. The important thing is that the mode of
377 @c the expression as determined by the Maxima to Lisp translator, will be that
378 @c given as the first argument, independent of anything that goes on in the
379 @c second argument. E.g., @code{x: 3.3; mode_identity (fixnum, x);} yields an
380 @c error. @code{mode_identity (flonum, x)} returns 3.3 . This has a number of
381 @c uses, e.g., if you knew that @code{first (l)} returned a number then you
382 @c might write @code{mode_identity (number, first (l))}. However, a more
383 @c efficient way to do it would be to define a new primitive,
385 @c firstnumb (x) ::= buildq ([x], mode_identity (number, first(x)));
387 @c and use @code{firstnumb} every time you take the first of a list of numbers.
389 Mit der Funktion @code{mode_identity} wird der Typ @var{mode} f@"ur das
390 Ergebnis des Ausdrucks @var{expr} festgelegt. Hat das Ergebnis einen anderen
391 Typ wird in Abh@"angigkeit von den Werten der Optionsvariablen
392 @code{mode_checkp}, @code{mode_check_warnp} und @code{mode_check_errorp} eine
393 Warnung ausgegeben oder das Programm abgebrochen.
398 @c mode_identity(flonum, sin(1.0));
399 @c mode_identity(integer, sin(1.0));
400 @c mode_identity(integer, sin(a));
403 (%i1) mode_identity(flonum, sin(1.0));
404 (%o1) .8414709848078965
405 (%i2) mode_identity(integer, sin(1.0));
406 warning: sin(1.0) was declared with mode fixnum
407 , but it has value: .8414709848078965
408 (%o2) .8414709848078965
409 (%i3) mode_identity(integer, sin(a));
410 warning: sin(a) was declared with mode fixnum, but it has value:
417 @c --- 02.01.2011 DK -----------------------------------------------------------
419 @defvr {Optionsvariable} savedef
420 Standardwert: @code{true}
422 @c When @code{savedef} is @code{true}, the Maxima version of a user function is
423 @c preserved when the function is translated. This permits the definition to be
424 @c displayed by @code{dispfun} and allows the function to be edited.
426 Hat @code{savedef} den Wert @code{true}, wird die Maxima-Definition einer
427 Funktion nicht gel@"oscht, wenn die Funktion @"ubersetzt wird. Damit kann die
428 Definition der Funktion weiterhin mit @code{dispfun} angzeigt werden.
430 @c When @code{savedef} is @code{false}, the names of translated functions are
431 @c removed from the @code{functions} list.
433 Hat @code{savedef} den Wert @code{false} wird die Maxima-Definition der Funktion
434 gel@"oscht, wenn die Funktion @"ubersetzt wird.
438 @code{savedef} hat den Wert @code{true}. Die Funktion @code{f} kann auch nach
439 der @"Ubersetzung angzeigt werden und ist in der Liste @code{functions}
452 (%i2) f(x):=x^2+sin(x);
454 (%o2) f(x) := x + sin(x)
459 (%t4) f(x) := x + sin(x)
466 Dasselbe f@"ur eine Funktion @code{g} mit dem Wert @code{false} f@"ur
471 @c g(x):=sqrt(x)+cos(x)$
479 (%i7) g(x):=sqrt(x)+cos(x)$
485 fundef: no such function: g
486 -- an error. To debug this try: debugmode(true);
493 @c IS THERE ANY REASON TO SET transcompile: false ??
494 @c MAYBE THIS VARIABLE COULD BE PERMANENTLY SET TO true AND STRUCK FROM
495 @c THE DOCUMENTATION.
497 @c --- 03.01.2011 DK -----------------------------------------------------------
498 @anchor{transcompile}
499 @defvr {Optionsvariable} transcompile
500 Standardwert: @code{true}
502 @c When @code{transcompile} is @code{true}, @code{translate} and
503 @c @code{translate_file} generate declarations to make the translated code more
504 @c suitable for compilation.
505 @c BUT THE DECLARATIONS DON'T SEEM TO BE NECESSARY, SO WHAT'S THE POINT
508 Hat @code{transcompile} den Wert @code{true}, generieren die Funktionen
509 @code{translate} und @code{translate_file} Deklarationen, die das Kompilieren
510 des Codes verbessern.
512 @c @code{compfile} sets @code{transcompile: true} for the duration.
514 @code{compfile} setzt den Wert von @code{transcompile} zu @code{true}.
518 @c --- 03.01.2011 DK -----------------------------------------------------------
520 @deffn {Funktion} translate (@var{f_1}, @dots{}, @var{f_n})
521 @deffnx {Funktion} translate (functions)
522 @deffnx {Funktion} translate (all)
524 @c Translates the user-defined functions @var{f_1}, ..., @var{f_n} from the
525 @c Maxima language into Lisp and evaluates the Lisp translations. Typically the
526 @c translated functions run faster than the originals.
528 Die vom Nutzer definierten Maxima-Funktionen @var{f_1}, @dots{}, @var{f_n}
529 werden nach Lisp @"ubersetzt. Typischerweise sind die @"ubersetzten Funktionen
530 schneller als die Maxima-Funktionen.
532 @c @code{translate (all)} or @code{translate (functions)} translates all
533 @c user-defined functions.
535 @code{translate(all)} oder @code{translate(functions)} @"ubersetzt alle vom
536 Benutzer definierten Funktionen.
538 @c Functions to be translated should include a call to @code{mode_declare} at
539 @c the beginning when possible in order to produce more efficient code. For
541 @c where the @var{x_1}, @var{x_2}, ... are the parameters to the function and
542 @c the @var{v_1}, @var{v_2}, ... are the local variables.
544 Funktionen, die @"ubersetzt werden sollen, sollten mit @code{mode_declare} den
545 Typ von Variablen und Funktionen deklarieren, um effizienteren Code zu erhalten.
546 Im Folgenden Beispiel sind @var{x_1}, @var{x_2}, @dots{} die Argumente der
547 Funktion und @var{v_1}, @var{v_2}, @dots{} sind die lokalen Variablen.
550 f (x_1, x_2, ...) := block ([v_1, v_2, ...],
551 mode_declare (v_1, mode_1, v_2, mode_2, ...), ...)
554 @c The names of translated functions are removed from the @code{functions} list
555 @c if @code{savedef} is @code{false} (see below) and are added to the
556 @c @code{props} lists.
558 Die Namen von @"ubersetzten Funktionen werden von der Informationsliste
559 @code{functions} entfernt, wenn die Optionsvariable @code{savedef} den Wert
560 @code{false} hat. Sie werden der Informationsliste @code{props} hinzugef@"ugt.
562 @c Functions should not be translated unless they are fully debugged.
564 Funktionen sollten erst @"ubersetzt werden, wenn sie vollst@"andig von Fehlern
567 @c Expressions are assumed simplified; if they are not, correct but non-optimal
568 @c code gets generated. Thus, the user should not set the @code{simp} switch to
569 @c @code{false} which inhibits simplification of the expressions to be
572 Ausdr@"ucke werden als vereinfacht angenommen. Sind sie es nicht, wird zwar
573 korrekter, aber nicht optimierter Code erzeugt. Daher sollte der Schalter
574 @code{simp} nicht den Wert @code{false} haben, wodurch die Vereinfachung von
575 Ausdr@"ucken unterdr@"uckt w@"are.
577 @c The switch @code{translate}, if @code{true}, causes automatic translation of
578 @c a user's function to Lisp.
580 Hat der Schalter @code{translate} den Wert @code{true}, werden nutzerdefinierte
581 Funktionen automatisch nach Lisp @"ubersetzt.
583 @c Note that translated functions may not run identically to the way they did
584 @c before translation as certain incompatabilities may exist between the Lisp
585 @c and Maxima versions. Principally, the @code{rat} function with more than
586 @c one argument and the @code{ratvars} function should not be used if any
587 @c variables are @code{mode_declare}'d canonical rational expressions (CRE).
588 @c Also the @code{prederror: false} setting will not translate.
589 @c WHAT ABOUT % AND %% ???
591 Das Laufzeitverhalten von @"ubersetzten Funktionen kann sich von dem
592 nicht-@"ubersetzter Funktionen unterscheiden. Grunds@"atzlich sollte die
593 Funktion @code{rat} nicht mit mehr als zwei Argumenten und die Funktion
594 @code{ratvars} nicht genutzt werden, wenn irgendeine der Variablen eine CRE-Form
595 mit Deklaration mit @code{mode_declare} aufweisen. Auch wird
596 @code{prederror:false} nicht @"ubersetzt.
598 @c @code{savedef} - if @code{true} will cause the Maxima version of a user
599 @c function to remain when the function is @code{translate}'d. This permits the
600 @c definition to be displayed by @code{dispfun} and allows the function to be
602 @c @code{transrun} - if @code{false} will cause the interpreted version of all
603 @c functions to be run (provided they are still around) rather than the
604 @c translated version.
606 Hat die Optionsvariable @code{savedef} den Wert @code{true}, wird die
607 Originalversion einer Funktion nicht entfernt. Siehe @mrefdot{savedef} Mit
608 dem Wert @code{false} f@"ur @code{transrun} werden, wenn noch vorhanden, die
609 Originalversionen der @"ubersetzten Funktion ausgef@"uhrt.
611 @c The result returned by @code{translate} is a list of the names of the
612 @c functions translated.
614 Das Ergebnis der Funktion @code{translate} ist eine Liste der Namen der
615 @"ubersetzten Funktionen.
619 @c --- 03.01.2011 DK -----------------------------------------------------------
620 @anchor{translate_file}
621 @deffn {Funktion} translate_file (@var{maxima_filename})
622 @deffnx {Funktion} translate_file (@var{maxima_filename}, @var{lisp_filename})
624 @c Translates a file of Maxima code into a file of Lisp code.
625 @c @code{translate_file} returns a list of three filenames: the name of the
626 @c Maxima file, the name of the Lisp file, and the name of file containing
627 @c additional information about the translation. @code{translate_file} evaluates
630 @"Ubersetzt eine Datei mit Maxima-Code in eine Datei mit Lisp-Code.
631 @code{translate_file} gibt eine Liste mit drei Dateien zur@"uck, die den
632 Namen der Maxima-Datei, den Namen der Lisp-Datei und den Namen einer Datei
633 mit Informationen zur @"Ubersetzung enth@"alt. @code{translate_file} wertet die
636 @c @code{translate_file ("foo.mac"); load("foo.LISP")} is the same as
637 @c @code{batch ("foo.mac")} except for certain restrictions, the use of
638 @c @code{'@w{}'} and @code{%}, for example.
639 @c FIGURE OUT WHAT THE RESTRICTIONS ARE AND STATE THEM
641 Die Kommandos @code{translate_file("foo.mac")} und @code{load("foo.LISP")}
642 haben bis auf wenige Ausnahmen dieselbe Wirkung wie @code{batch("foo.mac")}.
643 Zum Beispiel funktionieren @code{'@w{}'} und @code{%} unterschiedlich.
645 @c @code{translate_file (@var{maxima_filename})} translates a Maxima file
646 @c @var{maxima_filename} into a similarly-named Lisp file. For example,
647 @c @code{foo.mac} is translated into @code{foo.LISP}. The Maxima filename may
648 @c include a directory name or names, in which case the Lisp output file is
649 @c written to the same directory from which the Maxima input comes.
651 @code{translate_file(@var{maxima_filename})} @"ubersetzt die Maxima-Datei
652 @var{maxima_filename} in ein Lisp-Datei mit einem vergleichbaren Namen. Zum
653 Beispiel wird die Maxima-Datei @code{foo.mac} zu @code{foo.LISP}. Der Name der
654 Maxima-Datei kann Pfadangaben enthalten. In diesem Fall wird die Lisp-Datei
655 in dasselbe Verzeichnis wie die Maxima-Datei geschrieben.
657 @c @code{translate_file (@var{maxima_filename}, @var{lisp_filename})} translates
658 @c a Maxima file @var{maxima_filename} into a Lisp file @var{lisp_filename}.
659 @c @code{translate_file} ignores the filename extension, if any, of
660 @c @code{lisp_filename}; the filename extension of the Lisp output file is
661 @c always @code{LISP}. The Lisp filename may include a directory name or names,
662 @c in which case the Lisp output file is written to the specified directory.
664 @code{translate_file(@var{maxima_filename}, @var{lisp_filename})} @"ubersetzt
665 die Maxima-Datei @var{maxima_filename} in eine Lisp-Datei mit dem Namen
666 @code{lisp_filename}. @code{translate_file} ignoriert eine angegebene
667 Dateiendung des Dateinamenes @code{lisp_filename}. Die Dateiendung ist immer
668 @code{.LISP}. Der Name der Lisp-Datei kann Pfadangaben enthalten, um die
669 Lisp-Datei in das gew@"unschte Verzeichnis zu schreiben.
671 @c @code{translate_file} also writes a file of translator warning messages of
672 @c various degrees of severity. The filename extension of this file is
673 @c @code{UNLISP}. This file may contain valuable information, though possibly
674 @c obscure, for tracking down bugs in translated code. The @code{UNLISP} file is
675 @c always written to the same directory from which the Maxima input comes.
677 @code{translate_file} schreibt eine Ausgabedatei mit Meldungen des
678 @"Ubersetzers. Die Dateiendung der Ausgabedatei ist @code{.UNILISP}. Die
679 Informationen dieser Datei k@"onnen f@"ur die Fehlersuche genutzt werden. Die
680 Datei wird immer in das Verzeichnis geschrieben, das die Maxima-Datei enth@"alt.
682 @c @code{translate_file} emits Lisp code which causes some declarations and
683 @c definitions to take effect as soon as the Lisp code is compiled. See
684 @c @code{compile_file} for more on this topic.
686 @code{translate_file} generiert Lisp-Code mit Deklarationen und Definitionen,
687 die bereits beim Kompilieren des Codes wirksam werden. Siehe
688 @mref{compile_file} f@"ur mehr Informationen.
690 @c CHECK ALL THESE AND SEE WHICH ONES ARE OBSOLETE
692 @c See also @code{tr_array_as_ref},
694 Siehe auch die folgenden Optionsvariablen:
697 @code{tr_array_as_ref},
698 @c tr_bind_mode_hook EXISTS BUT IT APPEARS TO BE A GROTESQUE UNDOCUMENTED
699 @c HACK WE DON'T. WANT TO MENTION IT.
700 @c @code{tr_bind_mode_hook},
701 @code{tr_bound_function_applyp},
702 @c tr_exponent EXISTS AND WORKS AS ADVERTISED IN src/troper.lisp
703 @c NOT OTHERWISE DOCUMENTED; ITS EFFECT SEEMS TOO WEAK TO MENTION
705 @code{tr_file_tty_messagesp},
706 @code{tr_float_can_branch_complex},
707 @code{tr_function_call_default},
709 @code{tr_optimize_max_loop},
710 @code{tr_semicompile},
711 @code{tr_state_vars},
712 @code{tr_warnings_get},
713 @code{tr_warn_bad_function_calls},
714 @code{tr_warn_fexpr},
715 @code{tr_warn_meval},
717 @code{tr_warn_undeclared},
718 und @code{tr_warn_undefined_variable}.
723 @c --- 03.01.2011 DK -----------------------------------------------------------
725 @defvr {Optionsvariable} transrun
726 Standardwert: @code{true}
728 @c When @code{transrun} is @code{false} will cause the interpreted version of
729 @c all functions to be run (provided they are still around) rather than the
730 @c translated version.
732 Hat @code{transrun} den Wert @code{false}, werden die nicht-@"ubersetzten
733 Versionen ausgef@"uhrt, falls diese noch vorhanden sind.
734 Siehe @mrefdot{savedef}
738 @c IN WHAT CONTEXT IS tr_array_as_ref: false APPROPRIATE ??? NOT SEEING THE
739 @c USEFULNESS HERE. ALSO, I GUESS WE SHOULD HAVE AN ITEM FOR
740 @c translate_fast_arrays, ANOTHER CONFUSING FLAG ...
742 @c --- 05.01.2011 DK -----------------------------------------------------------
743 @anchor{tr_array_as_ref}
744 @defvr {Optionsvariable} tr_array_as_ref
745 Standardwert: @code{true}
747 @c If @code{translate_fast_arrays} is @code{false}, array references in Lisp
748 @c code emitted by @code{translate_file} are affected by @code{tr_array_as_ref}.
749 @c When @code{tr_array_as_ref} is @code{true}, array names are evaluated,
750 @c otherwise array names appear as literal symbols in translated code.
752 Hat @code{translate_fast_arrays} den Wert @code{false}, werden Referenzen auf
753 Arrays in Lisp-Code von der Variablen @code{tr_array_as_ref} kontrolliert. Hat
754 @code{tr_array_as_ref} den Wert @code{true}, werden Array-Namen ausgewertet.
756 @c @code{tr_array_as_ref} has no effect if @code{translate_fast_arrays} is
759 @code{tr_array_as_ref} hat keinen Effekt, wenn @code{translate_fast_arrays} den
760 Wert @code{true} hat.
764 @c WHY IS THIS FLAG NEEDED ??? UNDER WHAT CIRCUMSTANCES CAN TRANSLATION
765 @c OF A BOUND VARIABLE USED AS A FUNCTION GO WRONG ???
767 @c --- 05.01.2011 DK -----------------------------------------------------------
768 @anchor{tr_bound_function_applyp}
769 @defvr {Optionsvariable} tr_bound_function_applyp
770 Standardwert: @code{true}
772 @c When @code{tr_bound_function_applyp} is @code{true}, Maxima gives a warning
773 @c if a bound variable (such as a function argument) is found being used as a
775 @c WHAT DOES THIS MEAN ??
776 @c @code{tr_bound_function_applyp} does not affect the code generated in such
779 Hat @code{tr_bound_function_applyp} den Wert @code{true}, gibt Maxima eine
780 Warnung aus, wenn versucht wird, eine gebundene Variable als eine Funktion
781 verwendet werden soll. @code{tr_bound_function_applyp} hat keinen Effekt auf
782 den generierten Code.
784 @c For example, an expression such as @code{g (f, x) := f (x+1)} will trigger
785 @c the warning message.
787 Zum Beispiel gibt ein Ausdruck der Form @code{g (f, x) := f (x+1)} eine
792 @c --- 05.01.2011 DK -----------------------------------------------------------
793 @anchor{tr_file_tty_messagep}
794 @defvr {Optionsvariable} tr_file_tty_messagesp
795 Standardwert: @code{false}
797 @c When @code{tr_file_tty_messagesp} is @code{true}, messages generated by
798 @c @code{translate_file} during translation of a file are displayed on the
799 @c console and inserted into the UNLISP file. When @code{false}, messages about
800 @c translation of the file are only inserted into the UNLISP file.
802 Hat @code{tr_file_tty_messagesp} den Wert @code{true}, werden Meldungen die
803 von der Funktion @code{translate_file} w@"ahrend einer @"Ubersetzung generiert
804 werden auch auf der Konsole ausgegeben. Ansonsten werden Meldungen nur in die
805 Datei @code{.UNILISP} geschrieben.
809 @c THIS FLAG APPEARS TO HAVE NO EFFECT. SHOULD CUT OUT THIS ITEM AND RELATED
810 @c CODE. NOTE THAT THERE IS CODE IN src/transf.lisp WHICH USES THIS FLAG BUT THE
811 @c MODE FLAG IS LOST SOMEWHERE ALONG THE WAY TO THE LISP OUTPUT FILE.
813 @c --- 05.01.2011 DK -----------------------------------------------------------
814 @anchor{tr_float_can_branch_complex}
815 @defvr {Optionsvariable} tr_float_can_branch_complex
816 Standardwert: @code{true}
818 @c Tells the Maxima-to-Lisp translator to assume that the functions @code{acos},
819 @c @code{asin}, @code{asec}, and @code{acsc} can return complex results.
821 Erkl@"art dem @"Ubersetzer, dass die Funktionen @code{acos}, @code{asin},
822 @code{asec} und @code{acsc} komplexe Werte zur@"uckgegeben k@"onnen.
824 @c TODO: DAS FOLGENDE NICHT UEBERSETZT.
826 @c The ostensible effect of @code{tr_float_can_branch_complex} is the following.
827 @c However, it appears that this flag has no effect on the translator output.
829 @c When it is @code{true} then @code{acos(x)} is of mode @code{any} even if
830 @c @code{x} is of mode @code{float} (as set by @code{mode_declare}). When
831 @c @code{false} then @code{acos(x)} is of mode @code{float} if and only if
832 @c @code{x} is of mode @code{float}.
836 @c --- 05.01.2011 DK -----------------------------------------------------------
837 @anchor{tr_function_call_default}
838 @defvr {Optionsvariable} tr_function_call_default
839 Standardwert: @code{general}
841 @c @code{false} means give up and call @code{meval}, @code{expr} means assume
842 @c Lisp fixed arg function. @code{general}, the default gives code good for
843 @c @code{mexprs} and @code{mlexprs} but not @code{macros}. @code{general}
844 @c assures variable bindings are correct in compiled code. In @code{general}
845 @c mode, when translating F(X), if F is a bound variable, then it assumes that
846 @c @code{apply (f, [x])} is meant, and translates a such, with apropriate
847 @c warning. There is no need to turn this off. With the default settings, no
848 @c warning messages implies full compatibility of translated and compiled code
849 @c with the Maxima interpreter.
851 @c TODO: DIE WERTE FALSE UND EXPR SIND NICHT WIRKLICH KLAR.
853 @code{false} bedeutet, gebe auf und rufe @code{meval} auf, @code{expr} bedeutet,
854 nehme Lisp-Argumente an. @code{general}, der Standardwert, gibt Code der f@"ur
855 @code{MEXPRS}-Funktionen geeignet ist. Wird Maxima-Code mit dem Standardwert
856 @code{general} @"ubersetzt, ohne dass Warnmeldungen ausgegeben werden, kann davon
857 ausgegangen werden, dass der @"ubersetzte und komplilierte Code kompatibel mit der
858 urspr@"unglichen Funktion ist.
862 @c --- 05.01.2011 DK -----------------------------------------------------------
864 @defvr {Optionsvariable} tr_numer
865 Standardwert: @code{false}
867 @c When @code{tr_numer} is @code{true}, @code{numer} properties are used for
868 @c atoms which have them, e.g. @code{%pi}.
870 Hat @code{tr_numer} den Wert @code{true}, wird die @code{numer}-Eigenschaft
871 von Symbolen vom @"Ubersetzer angewendet.
875 @c --- 05.01.2011 DK -----------------------------------------------------------
876 @anchor{tr_optimize_max_loop}
877 @defvr {Optionsvariable} tr_optimize_max_loop
880 @c @code{tr_optimize_max_loop} is the maximum number of times the
881 @c macro-expansion and optimization pass of the translator will loop in
882 @c considering a form. This is to catch macro expansion errors, and
883 @c non-terminating optimization properties.
885 @code{tr_optimize_max_loop} enth@"alt die maximale Anzahl an Durchg@"angen, um
886 Makros zu expandieren und den Code zu optimieren. Damit werden unendliche
887 Schleifen des @"Ubersetzers vermieden.
891 @c --- 05.01.2011 DK -----------------------------------------------------------
892 @anchor{tr_semicompile}
893 @defvr {Optionsvariable} tr_semicompile
894 Standardwert: @code{false}
896 @c When @code{tr_semicompile} is @code{true}, @code{translate_file} and
897 @c @code{compfile} output forms which will be macroexpanded but not compiled
898 @c into machine code by the Lisp compiler.
900 Hat @code{tr_semicompile} den Wert @code{true}, geben die Funktionen
901 @code{translate_file} und @code{compfile} Code aus, in dem Makrofunktionen
902 expandiert sind, der aber nicht kompliliert ist.
906 @c ARE ANY OF THESE OBSOLETE ??
908 @c --- 05.01.2011 DK -----------------------------------------------------------
909 @anchor{tr_state_vars}
910 @defvr {Systemvariable} tr_state_vars
913 [transcompile, tr_semicompile, tr_warn_undeclared, tr_warn_meval,
914 tr_warn_fexpr, tr_warn_mode, tr_warn_undefined_variable,
915 tr_function_call_default, tr_array_as_ref,tr_numer]
918 @c The list of the switches that affect the form of the translated output.
919 @c DOES THE GENERAL USER REALLY CARE ABOUT DEBUGGING THE TRANSLATOR ???
920 @c This information is useful to system people when trying to debug the
921 @c translator. By comparing the translated product to what should have been
922 @c produced for a given state, it is possible to track down bugs.
924 Enth@"alt eine Liste der Schalter, die die @"Ubersetzung kontrollieren.
928 @c tr_warnings_get EXISTS AND FUNCTIONS AS ADVERTISED (SORT OF) --
929 @c RETURNS *tr-runtime-warned* WHICH HAS ONLY A FEW KINDS OF WARNINGS PUSHED
930 @c ONTO IT; IT'S CERTAINLY NOT COMPREHENSIVE
931 @c DO WE REALLY NEED THIS SLIGHTLY WORKING FUNCTION ??
933 @c --- 05.01.2011 DK -----------------------------------------------------------
934 @anchor{tr_warnings_get}
935 @deffn {Funktion} tr_warnings_get ()
937 @c Prints a list of warnings which have been given by the translator during the
938 @c current translation.
940 Gebe die Liste der Warnungen aus, welche bei der letzten @"Ubersetzung erzeugt
945 @c --- 05.01.2011 DK -----------------------------------------------------------
946 @anchor{tr_warn_bad_function_calls}
947 @defvr {Optionsvariable} tr_warn_bad_function_calls
948 Standardwert: @code{true}
950 @c Gives a warning when function calls are being made which may not be correct
951 @c due to improper declarations that were made at translate time.
953 Gebe Warnungen aus, wenn Funktionsaufrufe generiert werden, die m@"oglicherweise
954 nicht korrekt sind, aufgrund von ungeeigneten Deklarationen f@"ur die
959 @c --- 05.01.2011 DK -----------------------------------------------------------
960 @anchor{tr_warn_fexpr}
961 @defvr {Optionsvariable} tr_warn_fexpr
962 Standardwert: @code{compfile}
964 @c Gives a warning if any FEXPRs are encountered. FEXPRs should not normally
965 @c be output in translated code, all legitimate special program forms are
968 Gebe Warnungen aus, wenn @code{FEXPR}-Ausdr@"ucke im @"ubersetzten Code
973 @c --- 05.01.2011 DK -----------------------------------------------------------
974 @anchor{tr_warn_meval}
975 @defvr {Optionsvariable} tr_warn_meval
976 Standardwert: @code{compfile}
978 @c Gives a warning if the function @code{meval} gets called. If @code{meval}
979 @c is called that indicates problems in the translation.
981 Gebe Warnungen aus, wenn die Funktion @code{meval} aufgerufen wird. Dies
982 signalisiert Probleme bei der @"Ubersetzung.
986 @c --- 05.01.2011 DK -----------------------------------------------------------
987 @anchor{tr_warn_mode}
988 @defvr {Optionsvariable} tr_warn_mode
989 Standardwert: @code{all}
991 @c Gives a warning when variables are assigned values inappropriate for their
994 Gebe Warnungen aus, wenn Variablen Werte zugewiesen werden, die nicht zu dem
995 deklarierten Typ passen.
999 @c --- 05.01.2011 DK -----------------------------------------------------------
1000 @anchor{tr_warn_undeclared}
1001 @defvr {Optionsvariable} tr_warn_undeclared
1002 Standardwert: @code{compile}
1004 @c Determines when to send warnings about undeclared variables to the TTY.
1006 Kontrolliert, wann Warnungen @"uber nicht-deklarierte Variablen angezeigt werden
1011 @c --- 05.01.2011 DK -----------------------------------------------------------
1012 @anchor{tr_warn_undedined_variable}
1013 @defvr {Optionsvariable} tr_warn_undefined_variable
1014 Standardwert: @code{all}
1016 @c Gives a warning when undefined global variables are seen.
1018 Gebe eine Warnung aus, wenn undefinierte globale Variablen auftreten.
1022 @c --- End of file Translator.de.texi ------------------------------------------